diff options
-rw-r--r-- | udev_lib.c | 48 | ||||
-rw-r--r-- | udev_lib.h | 1 | ||||
-rw-r--r-- | udevinfo.c | 16 |
3 files changed, 22 insertions, 43 deletions
diff --git a/udev_lib.c b/udev_lib.c index a3fab9632d..d745c9bd86 100644 --- a/udev_lib.c +++ b/udev_lib.c @@ -36,41 +36,31 @@ #include "list.h" -#define BLOCK_PATH "/block/" -#define CLASS_PATH "/class/" -#define NET_PATH "/class/net/" - -char get_device_type(const char *path, const char *subsystem) +void udev_set_values(struct udevice *udev, const char* devpath, + const char *subsystem, const char* action) { - if (strcmp(subsystem, "block") == 0) - return 'b'; - - if (strcmp(subsystem, "net") == 0) - return 'n'; + memset(udev, 0x00, sizeof(struct udevice)); + if (devpath) + strfieldcpy(udev->devpath, devpath); + if (subsystem) + strfieldcpy(udev->subsystem, subsystem); + if (action) + strfieldcpy(udev->action, action); - if (strncmp(path, BLOCK_PATH, strlen(BLOCK_PATH)) == 0 && - strlen(path) > strlen(BLOCK_PATH)) - return 'b'; + if (strcmp(udev->subsystem, "block") == 0) + udev->type = 'b'; - if (strncmp(path, NET_PATH, strlen(NET_PATH)) == 0 && - strlen(path) > strlen(NET_PATH)) - return 'n'; + if (strcmp(udev->subsystem, "net") == 0) + udev->type = 'n'; - if (strncmp(path, CLASS_PATH, strlen(CLASS_PATH)) == 0 && - strlen(path) > strlen(CLASS_PATH)) - return 'c'; + if (strncmp(udev->devpath, "/block/", 7) == 0) + udev->type = 'b'; - return '\0'; -} + if (strncmp(udev->devpath, "/class/net/", 11) == 0) + udev->type = 'n'; -void udev_set_values(struct udevice *udev, const char* devpath, - const char *subsystem, const char* action) -{ - memset(udev, 0x00, sizeof(struct udevice)); - strfieldcpy(udev->devpath, devpath); - strfieldcpy(udev->subsystem, subsystem); - strfieldcpy(udev->action, action); - udev->type = get_device_type(devpath, subsystem); + if (strncmp(udev->devpath, "/class/", 7) == 0) + udev->type = 'c'; } int kernel_release_satisfactory(int version, int patchlevel, int sublevel) diff --git a/udev_lib.h b/udev_lib.h index 80dc49cd54..b9b0fda678 100644 --- a/udev_lib.h +++ b/udev_lib.h @@ -76,7 +76,6 @@ do { \ # define asmlinkage /* nothing */ #endif -extern char get_device_type(const char *path, const char *subsystem); extern void udev_set_values(struct udevice *udev, const char* devpath, const char *subsystem, const char* action); extern int kernel_release_satisfactory(int version, int patchlevel, int sublevel); diff --git a/udevinfo.c b/udevinfo.c index 097c91c21b..013068541e 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -125,10 +125,6 @@ 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); @@ -144,16 +140,10 @@ static int print_device_chain(const char *path) "to match the device for which the node will be created.\n" "\n"); - 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; - } + /* look for the 'dev' file */ + attr = sysfs_get_classdev_attr(class_dev, "dev"); + if (attr == NULL) 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); |