chiark / gitweb /
libudev: set errno properly in all error conditions of udev_device_new_from_syspath()
[elogind.git] / src / libudev / libudev-device.c
index 5f196bd9b8aa7dea78255117bd1f9d963cf2a380..16ee1f4be3ff3d4ef03d50ae65117b5b83927560 100644 (file)
@@ -723,8 +723,13 @@ _public_ struct udev_device *udev_device_new_from_syspath(struct udev *udev, con
                         return NULL;
         } else {
                 /* everything else just needs to be a directory */
-                if (stat(path, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))
+                if (stat(path, &statbuf) != 0)
                         return NULL;
+
+                if (!S_ISDIR(statbuf.st_mode)) {
+                        errno = EISDIR;
+                        return NULL;
+                }
         }
 
         udev_device = udev_device_new(udev);