From a291a14b9062339134c561453cfbb2409713582d Mon Sep 17 00:00:00 2001 From: "dsteklof@us.ibm.com" Date: Wed, 24 Mar 2004 17:34:38 -0800 Subject: [PATCH] [PATCH] udevinfo patch I think this is what you want for udevinfo. Patched against the latest BK tree. I tested it and it seemed to work. One other question, shouldn't udevinfo.c:print_all_attributes() check to make sure attr->method is SYSFS_METHOD_SHOW along with checking to see if attr->value != NULL or doesn't that matter? Here's the libsysfs fix for print_device_chain(): --- udevinfo.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/udevinfo.c b/udevinfo.c index dc3f94ff..800882eb 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -161,7 +161,6 @@ static int print_device_chain(const char *path) "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); - sysfs_close_attribute(attr); /* open sysfs class device directory and print all attributes */ printf(" looking at class device '%s':\n", class_dev->path); @@ -173,11 +172,11 @@ static int print_device_chain(const char *path) /* get the device link (if parent exists look here) */ class_dev_parent = sysfs_get_classdev_parent(class_dev); - if (class_dev_parent != NULL) { - //sysfs_close_class_device(class_dev); - class_dev = class_dev_parent; - } - sysfs_dev = sysfs_get_classdev_device(class_dev); + if (class_dev_parent != NULL) + sysfs_dev = sysfs_get_classdev_device(class_dev_parent); + else + sysfs_dev = sysfs_get_classdev_device(class_dev); + if (sysfs_dev != NULL) printf("follow the class device's \"device\"\n"); @@ -194,13 +193,11 @@ static int print_device_chain(const char *path) if (sysfs_dev_parent == NULL) break; - //sysfs_close_device(sysfs_dev); sysfs_dev = sysfs_dev_parent; } - sysfs_close_device(sysfs_dev); exit: - //sysfs_close_class_device(class_dev); + sysfs_close_class_device(class_dev); return retval; } -- 2.39.5