chiark / gitweb /
[PATCH] test.block changes.
[elogind.git] / udev-add.c
index 5bd934acd06a29a578fd4b5928fdd7ece1f77e4c..116ab2b448cb9f0d92edcf35437e19e137992198 100644 (file)
@@ -93,6 +93,7 @@ static int create_node(char *name, char type, int major, int minor, int mode)
                return -EINVAL;
        }
 
+       dbg("mknod(%s, %#o, %u, %u)", filename, mode, major, minor);
        retval = mknod(filename,mode,makedev(major,minor));
        if (retval)
                dbg("mknod(%s, %#o, %u, %u) failed with error '%s'",
@@ -162,33 +163,17 @@ int udev_add_device(char *device, char *subsystem)
 
        retval = get_major_minor(class_dev, &major, &minor);
        if (retval) {
-               dbg ("get_major_minor failed");
+               dbg("get_major_minor failed");
                goto exit;
        }
-       memset(&dbdev, 0, sizeof(dbdev));
-       strncpy(dbdev.name, attr.name, NAME_SIZE);
-       strncpy(dbdev.sysfs_path, class_dev->sysdevice->directory->path,
-               PATH_SIZE);
-       strncpy(dbdev.class_dev_name, class_dev->name, NAME_SIZE);
-       if ((sysfs_get_name_from_path(subsystem, dbdev.class_name, NAME_SIZE))
-           != 0)
-               strcpy(dbdev.class_name, "unkown");
-       strncpy(dbdev.bus_id, class_dev->sysdevice->bus_id, ID_SIZE);
-       strcpy(dbdev.bus_name, "unknown");
-       if (class_dev->driver != NULL)
-               strncpy(dbdev.driver, class_dev->driver->name, NAME_SIZE);
-       else
-               strcpy(dbdev.driver, "unkown");
-       dbdev.type = type;
-       dbdev.major = major;
-       dbdev.minor = minor;
-       dbdev.mode = attr.mode;
 
-       sysfs_close_class_device(class_dev);
+       retval = udevdb_add_device(device, class_dev, attr.name, type, major, minor, attr.mode);
 
-       retval = udevdb_add_udevice(&dbdev);
        if (retval != 0)
-               goto exit;
+               dbg("udevdb_add_device failed, but we are going to try to create the node anyway. "
+                   "But remove might not work properly for this device.");
+
+       sysfs_close_class_device(class_dev);
 
        return create_node(attr.name, type, major, minor, attr.mode);