X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev-remove.c;h=c20c651dc53687056d701c0a8714a7f5d39f3b9b;hb=ab2e5bd94631eb3fcc66ec0aaa031d83a2de1604;hp=9db63ed93e536111266fcf694d3cdd00aff4e5da;hpb=54988802b795328ceba29480611102902e88f572;p=elogind.git diff --git a/udev-remove.c b/udev-remove.c index 9db63ed93..c20c651dc 100644 --- a/udev-remove.c +++ b/udev-remove.c @@ -34,7 +34,6 @@ #include "logging.h" #include "namedev.h" #include "udevdb.h" -#include "libsysfs/libsysfs.h" static int delete_path(char *path) { @@ -67,9 +66,11 @@ static int delete_path(char *path) static int delete_node(struct udevice *dev) { char filename[255]; + char partitionname[255]; char *symlinks; char *linkname; int retval; + int i; strncpy(filename, udev_root, sizeof(filename)); strncat(filename, dev->name, sizeof(filename)); @@ -82,11 +83,20 @@ static int delete_node(struct udevice *dev) return retval; } + /* remove partition nodes */ + if (dev->partitions > 0) { + info("removing partitions '%s[1-%i]'", filename, dev->partitions); + for (i = 1; i <= dev->partitions; i++) { + sprintf(partitionname, "%s%i", filename, i); + unlink(partitionname); + } + } + /* remove subdirectories */ if (strchr(dev->name, '/')) delete_path(filename); - if (*dev->symlink) { + if (dev->symlink[0] != '\0') { symlinks = dev->symlink; while (1) { linkname = strsep(&symlinks, " ");