chiark / gitweb /
[PATCH] improve klibc fixup integration
[elogind.git] / udevinfo.c
index 800882eb1aa4b2d077bc7315d41a448e77c99e2b..af2346c8f566e8e9fad54868a98ec0e2446cff28 100644 (file)
@@ -104,17 +104,18 @@ exit:
 }
 
 /* callback for database dump */
-static int print_record(char *path, struct udevice *dev)
+static int print_record(const char *path, struct udevice *dev)
 {
        printf("P: %s\n", path);
        printf("N: %s\n", dev->name);
+       printf("T: %c\n", dev->type);
        printf("M: %#o\n", dev->mode);
        printf("S: %s\n", dev->symlink);
        printf("O: %s\n", dev->owner);
        printf("G: %s\n", dev->group);
        printf("F: %s\n", dev->config_file);
        printf("L: %i\n", dev->config_line);
-       printf("T: %li\n", dev->config_time);
+       printf("U: %li\n", dev->config_uptime);
        printf("\n");
        return 0;
 }
@@ -138,6 +139,10 @@ static int print_device_chain(const char *path)
        struct sysfs_device *sysfs_dev;
        struct sysfs_device *sysfs_dev_parent;
        int retval = 0;
+       char type;
+
+       type = get_device_type(path, "");
+       dbg("device type is %c", type);
 
        /*  get the class dev */
        class_dev = sysfs_open_class_device_path(path);
@@ -146,21 +151,23 @@ static int print_device_chain(const char *path)
                return -1;
        }
 
-       /* read the 'dev' file for major/minor*/
-       attr = sysfs_get_classdev_attr(class_dev, "dev");
-       if (attr == NULL) {
-               printf("couldn't get the \"dev\" file\n");
-               retval = -1;
-               goto exit;
-       }
-
        printf("\nudevinfo starts with the device the node belongs to and then walks up the\n"
               "device chain, to print for every device found, all possibly useful attributes\n"
               "in the udev key format.\n"
               "Only attributes within one device section may be used together in one rule,\n"
               "to match the device for which the node will be created.\n"
               "\n");
-       printf("device '%s' has major:minor %s", class_dev->path, attr->value);
+
+       if (type == 'b' || type =='c') {
+               /* read the 'dev' file for major/minor*/
+               attr = sysfs_get_classdev_attr(class_dev, "dev");
+               if (attr == NULL) {
+                       printf("couldn't get the \"dev\" file\n");
+                       retval = -1;
+                       goto exit;
+               }
+               printf("device '%s' has major:minor %s", class_dev->path, attr->value);
+       }
 
        /* open sysfs class device directory and print all attributes */
        printf("  looking at class device '%s':\n", class_dev->path);
@@ -440,18 +447,18 @@ help:
 
 int main(int argc, char *argv[], char *envp[])
 {
-       int retval;
+       int rc = 0;
 
        main_argv = argv;
        main_argc = argc;
 
-       init_logging("udevinfo");
+       logging_init("udevinfo");
 
        /* initialize our configuration */
        udev_init_config();
 
-       retval = process_options();
-       if (retval != 0)
-               exit(1);
-       exit(0);
+       rc = process_options();
+
+       logging_close();
+       exit(rc);
 }