chiark / gitweb /
[PATCH] DEVNODE -> DEVNAME transition fixes
[elogind.git] / udev-remove.c
index 44ad603d4acea84db0e1a4a50b53c919579a8d45..27ff5bc0a2e12d38167ba1db43d85ca78ac3ccf0 100644 (file)
@@ -29,8 +29,8 @@
 #include <errno.h>
 
 #include "udev.h"
+#include "udev_lib.h"
 #include "udev_version.h"
-#include "udev_dbus.h"
 #include "logging.h"
 #include "namedev.h"
 #include "udevdb.h"
@@ -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, path);
        udevdb_delete_dev(path);
 
-       sysbus_send_remove(dev.name, path);
+       if (dev.type == 'b' || dev.type == 'c')
+               retval = delete_node(&dev);
+       else if (dev.type == 'n')
+               retval = 0;
 
-       retval = delete_node(&dev);
        return retval;
 }