chiark / gitweb /
libudev: udev_device_get_sysattr_value() return syspath of custom links
[elogind.git] / udev / udevadm-info.c
index 87c1c32314b2d0784c9d9cf2e0745ad72dc166e4..f7e7e86b6a4a8f43cf9207b85f4176ab4874191c 100644 (file)
@@ -52,10 +52,10 @@ static bool skip_attribute(const char *name)
 
 static void print_all_attributes(struct udev_device *device, const char *key)
 {
+       struct udev *udev = udev_device_get_udev(device);
        struct udev_list_entry *sysattr;
 
        udev_list_entry_foreach(sysattr, udev_device_get_sysattr_list_entry(device)) {
-               struct udev *udev = udev_device_get_udev(device);
                const char *name;
                const char *value;
                size_t len;
@@ -69,6 +69,10 @@ static void print_all_attributes(struct udev_device *device, const char *key)
                        continue;
                dbg(udev, "attr '%s'='%s'\n", name, value);
 
+               /* skip any values that look like a path */
+               if (value[0] == '/')
+                       continue;
+
                /* skip nonprintable attributes */
                len = strlen(value);
                while (len > 0 && isprint(value[len-1]))
@@ -275,7 +279,7 @@ static void cleanup_db(struct udev *udev)
        }
 }
 
-int udevadm_info(struct udev *udev, int argc, char *argv[])
+static int uinfo(struct udev *udev, int argc, char *argv[])
 {
        struct udev_device *device = NULL;
        bool root = 0;
@@ -454,6 +458,7 @@ int udevadm_info(struct udev *udev, int argc, char *argv[])
                               "  --help\n\n");
                        goto exit;
                default:
+                       rc = 1;
                        goto exit;
                }
        }
@@ -555,3 +560,9 @@ exit:
        udev_device_unref(device);
        return rc;
 }
+
+const struct udevadm_cmd udevadm_info = {
+       .name = "info",
+       .cmd = uinfo,
+       .help = "query sysfs or the udev database",
+};