From: Mike B. <mi...@ze...> - 2011-01-05 20:31:19
|
On Wed, 5 Jan 2011 18:18:03 -0200 Lucas De Marchi <luc...@pr...> wrote: > On Wed, Jan 5, 2011 at 4:42 PM, Enlightenment SVN < > no-...@en...> wrote: > > Log: > > on feedback from kay sievers, use open() to check for removable media > presence > > > > > > Author: discomfitor > > Date: 2011-01-05 10:42:49 -0800 (Wed, 05 Jan 2011) > > New Revision: 55895 > > Trac: http://trac.enlightenment.org/e/changeset/55895 > > > > Modified: > > trunk/eeze/src/lib/eeze_udev_find.c trunk/eeze/src/lib/eeze_udev_watch.c > > > > Modified: trunk/eeze/src/lib/eeze_udev_find.c > > =================================================================== > > --- trunk/eeze/src/lib/eeze_udev_find.c 2011-01-05 18:06:05 UTC (rev > 55894) > > +++ trunk/eeze/src/lib/eeze_udev_find.c 2011-01-05 18:42:49 UTC (rev > 55895) > > @@ -2,6 +2,11 @@ > > #include "config.h" > > #endif > > > > +#include <sys/types.h> > > +#include <sys/stat.h> > > +#include <fcntl.h> > > +#include <errno.h> > > + > > #include <Eeze.h> > > #include "eeze_udev_private.h" > > > > @@ -208,7 +213,6 @@ > > case EEZE_UDEV_TYPE_DRIVE_MOUNTABLE: > > udev_enumerate_add_match_subsystem(en, "block"); > > udev_enumerate_add_match_property(en, "ID_FS_USAGE", > "filesystem"); > > - udev_enumerate_add_nomatch_sysattr(en, "capability", "52"); > > /* parent node */ > > udev_enumerate_add_nomatch_sysattr(en, "capability", "50"); > > break; > > @@ -285,7 +289,20 @@ > > if (!(test = udev_device_get_property_value(device, > "ID_USB_DRIVER"))) > > goto out; > > } > > + else if (etype == EEZE_UDEV_TYPE_DRIVE_MOUNTABLE) > > + { > > + int devcheck; > > > > + devcheck = open(udev_device_get_devnode(device), O_EXCL); > > + if (errno) > > This is bad... you have to either zero errno before calling open() or check > the return value before. Since open() will not zero errno in case of > succees, doing like you did you're actually carrying whatever value errno > had. > > Looking only this diff, it seems that you have only to check for `!devcheck' > > > + { > > + if (devcheck >= 0) close(devcheck); > > + goto out; > > + } > > + if (devcheck < 0) goto out; > > + close(devcheck); > > + } > > + > > if (name && (!strstr(devname, name))) > > goto out; > > > > > > Modified: trunk/eeze/src/lib/eeze_udev_watch.c > > =================================================================== > > --- trunk/eeze/src/lib/eeze_udev_watch.c 2011-01-05 18:06:05 UTC > (rev 55894) > > +++ trunk/eeze/src/lib/eeze_udev_watch.c 2011-01-05 18:42:49 UTC > (rev 55895) > > @@ -2,6 +2,11 @@ > > #include "config.h" > > #endif > > > > +#include <sys/types.h> > > +#include <sys/stat.h> > > +#include <fcntl.h> > > +#include <errno.h> > > + > > #include <Ecore.h> > > #include <Eeze.h> > > #include "eeze_udev_private.h" > > @@ -128,12 +133,19 @@ > > test = udev_device_get_sysattr_value(device, "capability"); > > > > if > ------------------------------------------------------------------------------ err whoops -- Mike Blumenkrantz Zentific: We run the three-legged race individually. |