[libcamera-devel] [PATCH 1/3] Early return if no cameras are found on the system.
Kieran Bingham
kieran.bingham at ideasonboard.com
Tue Nov 24 20:22:08 CET 2020
Hi Laurent,
On 24/11/2020 14:40, Laurent Pinchart wrote:
> Hi Kieran,
>
> On Thu, Nov 19, 2020 at 12:40:08PM +0000, Kieran Bingham wrote:
>> Hi Umang,
>>
>> $SUBJECT is missing a "simple-cam:" prefix to match the others.
>>
>> Was this patch already posted somewhere?
>>
>> I don't seem to be able to find it, but I do half-recollect it ;-)
>> I just can't figure out where from.
>>
>> On 19/11/2020 12:34, Umang Jain wrote:
>>> Failing to do so, the codepath will segfault while trying to acquire
>>> a non-existent camera.
>>>
>>> Signed-off-by: Umang Jain <email at uajain.com>
>>> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>>> ---
>>> simple-cam.cpp | 7 +++++++
>>> 1 file changed, 7 insertions(+)
>>>
>>> diff --git a/simple-cam.cpp b/simple-cam.cpp
>>> index 727bb6d..af9c8b1 100644
>>> --- a/simple-cam.cpp
>>> +++ b/simple-cam.cpp
>>> @@ -307,6 +307,13 @@ int main()
>>> for (std::unique_ptr<Request> &request : requests)
>>> camera->queueRequest(request.get());
>>>
>>> + if(!cm->cameras().size()) {
>>> + std::cout << "No cameras were identified on the system."
>>> + << std::endl;
>>> + cm->stop();
>>> + return -1;
>>
>> I think we should we return -ENODEV instead of -1 here. We already use
>> errno values (for example -ENOMEM is used).
>
> Note that the return value of the main() function is a bit special. C
> and C++ define EXIT_SUCCESS and EXIT_FAILURE to denote success and
> failure respectively (not a surprise :-)). The value of those macros is
> unspecified. See https://en.cppreference.com/w/c/program/EXIT_status.
>
> (Interestingly, the standard defines that both EXIT_SUCCESS and the
> value zero indicate successful program execution status, but don't
> require EXIT_SUCCESS to be equal to zero.)
>
> Other values are allowed, but only the 8 least significant bits are
> conveyed to the parent, so the range of usable values is effectively
> 0-255. Furthermore, shells may reserve some values. For instance, bash
> sets $? to 126 if a command is found but not executable, 127 if the
> command is not found, and 128+N if the command terminates with a fatal
> signal N.
>
> As I don't expect we'll need to convey failure reasons through the exit
> status for simple cam, how about returning either 0 and 1, or
> EXIT_SUCCESS and EXIT_FAILURE ?
Aha - good point, I'd totally missed that. I guess I don't spend much
time in main() :-)
I'd prefer the explicit EXIT_SUCCESS / EXIT_FAILURE in these cases, but
it might be nice to make the file consistent either way.
I'll leave it up to you Umang to decide what you prefer.
--
Kieran
>
>>> + }
>>> +
>>> /*
>>> * --------------------------------------------------------------------
>>> * Run an EventLoop
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list