chiark / gitweb /
udevadm: split out find_device helper
[elogind.git] / src / udev / udevadm-info.c
index 22d082601119c06528cdf52cd55671ac7b619310..a56f159543da0d169363ba07d911f958d16d1cc6 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "udev.h"
 #include "udev-util.h"
+#include "udevadm-util.h"
 
 static bool skip_attribute(const char *name) {
         static const char* const skip[] = {
@@ -257,35 +258,6 @@ static void cleanup_db(struct udev *udev) {
         }
 }
 
-static struct udev_device *find_device(struct udev *udev, const char *id, const char *prefix) {
-        char name[UTIL_PATH_SIZE];
-
-        if (prefix && !startswith(id, prefix)) {
-                strscpyl(name, sizeof(name), prefix, id, NULL);
-                id = name;
-        }
-
-        if (startswith(id, "/dev/")) {
-                struct stat statbuf;
-                char type;
-
-                if (stat(id, &statbuf) < 0)
-                        return NULL;
-
-                if (S_ISBLK(statbuf.st_mode))
-                        type = 'b';
-                else if (S_ISCHR(statbuf.st_mode))
-                        type = 'c';
-                else
-                        return NULL;
-
-                return udev_device_new_from_devnum(udev, type, statbuf.st_rdev);
-        } else if (startswith(id, "/sys/"))
-                return udev_device_new_from_syspath(udev, id);
-        else
-                return NULL;
-}
-
 static int uinfo(struct udev *udev, int argc, char *argv[]) {
         _cleanup_udev_device_unref_ struct udev_device *device = NULL;
         bool root = 0;