summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-11-10 02:15:27 +0100
committerGreg KH <gregkh@suse.de>2005-04-26 22:21:20 -0700
commit3bdef3939d6501b26dac82fdc6f8e74d854a1f14 (patch)
tree8a472ef6bfe32a0148f40a563060307990aae1ca
parentf156b6d2037ff09f7218e11d5326c05488356ea1 (diff)
[PATCH] improve udevinfo sysfs info walk
-rw-r--r--udevinfo.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/udevinfo.c b/udevinfo.c
index f1b74fc8f6..8fab86ca8c 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -197,21 +197,22 @@ exit:
return retval;
}
-/* print all class/block devices with major/minor, physical device and bus*/
-static void print_sysfs_devices(void)
+/* print all class/main block devices with major/minor, physical device, driver and bus */
+static int print_sysfs_devices(void)
{
struct dlist *subsyslist;
char *class;
subsyslist = sysfs_open_subsystem_list("class");
if (!subsyslist)
- exit(1);
+ return -1;
dlist_for_each_data(subsyslist, class, char) {
struct sysfs_class *cls;
struct dlist *class_devices;
struct sysfs_class_device *class_dev;
struct sysfs_device *phys_dev;
+ struct sysfs_driver *driver;
cls = sysfs_open_class(class);
if (!cls)
@@ -227,7 +228,6 @@ static void print_sysfs_devices(void)
printf("\n");
printf("DEVPATH '%s'\n", class_dev->path);
printf("SUBSYSTEM '%s'\n", class_dev->classname);
- printf("NAME '%s'\n", class_dev->name);
attr = sysfs_get_classdev_attr(class_dev, "dev");
if (attr) {
@@ -236,23 +236,25 @@ static void print_sysfs_devices(void)
if (pos[0] == '\n')
pos[0] = '\0';
- printf("MAJORMINOR '%s'\n", attr->value);
+ printf("DEVMAJORMINOR '%s'\n", attr->value);
}
+ driver = sysfs_get_classdev_driver(class_dev);
+ if (driver)
+ printf("DEVDRIVER '%s'\n", driver->name);
+
phys_dev = sysfs_get_classdev_device(class_dev);
if (phys_dev) {
printf("PHYSDEVPATH '%s'\n", phys_dev->path);
if (phys_dev->bus[0] != '\0')
- printf("PHYSDEVPATHBUS '%s'\n", phys_dev->bus);
- if (phys_dev->driver_name[0] != '\0')
- printf("DRIVER '%s'\n", phys_dev->driver_name);
+ printf("PHYSDEVBUS '%s'\n", phys_dev->bus);
}
}
-
sysfs_close_class(cls);
}
-
sysfs_close_list(subsyslist);
+
+ return 0;
}
static int process_options(void)