chiark / gitweb /
[PATCH] handle new major:minor format of dev files that showed up in 2.6.0-test2...
authorgreg@kroah.com <greg@kroah.com>
Tue, 5 Aug 2003 04:20:19 +0000 (21:20 -0700)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:01:40 +0000 (21:01 -0700)
udev-add.c

index 45ffbf81b5a0a685460552f3a6da830ada9aa363..54af7e4d77bd0494dbbbf671a8495664ae354975 100644 (file)
@@ -49,30 +49,23 @@ static char sysfs_path[SYSFS_PATH_MAX];
  */
 static int get_major_minor(struct sysfs_class_device *class_dev, int *major, int *minor)
 {
  */
 static int get_major_minor(struct sysfs_class_device *class_dev, int *major, int *minor)
 {
-       char temp[3];
-       int retval = 0;
+       int retval = -ENODEV;
 
        char *dev;
 
        dev = sysfs_get_value_from_attributes(class_dev->directory->attributes, "dev");
        if (dev == NULL)
 
        char *dev;
 
        dev = sysfs_get_value_from_attributes(class_dev->directory->attributes, "dev");
        if (dev == NULL)
-               return -ENODEV;
+               goto exit;
 
        dbg("dev = %s", dev);
 
 
        dbg("dev = %s", dev);
 
-       temp[0] = dev[0];
-       temp[1] = dev[1];
-       temp[2] = 0x00;
-       *major = (int)strtol(&temp[0], NULL, 16);
-
-       temp[0] = dev[2];
-       temp[1] = dev[3];
-       temp[2] = 0x00;
-       *minor = (int)strtol(&temp[0], NULL, 16);
+       if (sscanf(dev, "%u:%u", major, minor) != 2)
+               goto exit;
 
        dbg("found major = %d, minor = %d", *major, *minor);
 
        retval = 0;
 
        dbg("found major = %d, minor = %d", *major, *minor);
 
        retval = 0;
+exit:
        return retval;
 }
 
        return retval;
 }