[libcamera-devel] [PATCH 1/3] Early return if no cameras are found on the system.
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Nov 24 15:40:41 CET 2020
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 ?
> > + }
> > +
> > /*
> > * --------------------------------------------------------------------
> > * Run an EventLoop
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list