X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev-remove.c;h=9db63ed93e536111266fcf694d3cdd00aff4e5da;hp=0886c23343e0a7ee98fe8539cd130ff6783034ed;hb=724257d97b452dd563ea1a3a5cdc53b18e8dcb34;hpb=4763256c65859b94ac7a309cbb8f772d5426a08d diff --git a/udev-remove.c b/udev-remove.c index 0886c2334..9db63ed93 100644 --- a/udev-remove.c +++ b/udev-remove.c @@ -31,6 +31,7 @@ #include "udev.h" #include "udev_version.h" #include "udev_dbus.h" +#include "logging.h" #include "namedev.h" #include "udevdb.h" #include "libsysfs/libsysfs.h" @@ -73,7 +74,7 @@ static int delete_node(struct udevice *dev) strncpy(filename, udev_root, sizeof(filename)); strncat(filename, dev->name, sizeof(filename)); - dbg("unlinking node '%s'", filename); + info("removing device node '%s'", filename); retval = unlink(filename); if (retval) { dbg("unlink(%s) failed with error '%s'", @@ -118,23 +119,26 @@ static int delete_node(struct udevice *dev) */ int udev_remove_device(char *path, char *subsystem) { - char name[100]; - struct udevice *dev; + struct udevice dev; char *temp; + int retval; + + memset(&dev, 0, sizeof(dev)); - dev = udevdb_get_dev(path); - if (dev == NULL) { + retval = udevdb_get_dev(path, &dev); + if (retval) { dbg("'%s' not found in database, falling back on default name", path); temp = strrchr(path, '/'); if (temp == NULL) return -ENODEV; - strncpy(name, &temp[1], sizeof(name)); + strncpy(dev.name, &temp[1], sizeof(dev.name)); } - dbg("name is '%s'", dev->name); + dbg("name is '%s'", dev.name); udevdb_delete_dev(path); - sysbus_send_remove(name, path); + sysbus_send_remove(dev.name, path); - return delete_node(dev); + retval = delete_node(&dev); + return retval; }