chiark / gitweb /
[PATCH] netdev - udevdb+dev.d changes
[elogind.git] / udev-remove.c
index 41636b684e265120897e4233658feb4120b3de22..c838f15ce3521a6510a128320db658b6afef47a2 100644 (file)
@@ -135,22 +135,26 @@ int udev_remove_device(char *path, char *subsystem)
        char *temp;
        int retval;
 
-       memset(&dev, 0, sizeof(dev));
+       memset(&dev, 0x00, sizeof(dev));
 
        retval = udevdb_get_dev(path, &dev);
-       if (retval) {
+       if (retval != 0) {
                dbg("'%s' not found in database, falling back on default name", path);
                temp = strrchr(path, '/');
                if (temp == NULL)
                        return -ENODEV;
                strfieldcpy(dev.name, &temp[1]);
        }
+       dbg("name='%s'", dev.name);
 
-       dbg("name is '%s'", dev.name);
+       dev.type = get_device_type(path, subsystem);
+       dev_d_send(&dev, subsystem);
        udevdb_delete_dev(path);
 
-       dev_d_send(&dev, subsystem);
+       if (dev.type == 'b' || dev.type == 'c')
+               retval = delete_node(&dev);
+       else if (dev.type == 'n')
+               retval = 0;
 
-       retval = delete_node(&dev);
        return retval;
 }