add DEVLINKS to "remove" event

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
This commit is contained in:
Kay Sievers
2006-01-10 13:19:53 +01:00
parent 8531b0b964
commit afe9f2fb5f
+27 -19
View File
@@ -33,7 +33,6 @@
static int delete_node(struct udevice *udev)
{
char filename[PATH_SIZE];
char devname[PATH_SIZE];
char partitionname[PATH_SIZE];
struct name_entry *name_loop;
struct stat stats;
@@ -41,24 +40,35 @@ static int delete_node(struct udevice *udev)
int i;
int num;
list_for_each_entry(name_loop, &udev->symlink_list, node) {
snprintf(filename, sizeof(filename), "%s/%s", udev_root, name_loop->name);
filename[sizeof(filename)-1] = '\0';
if (!list_empty(&udev->symlink_list)) {
char symlinks[512] = "";
if (stat(filename, &stats) != 0) {
dbg("symlink '%s' not found", filename);
continue;
}
if (udev->devt && stats.st_rdev != udev->devt) {
info("symlink '%s' points to a different device, skip removal", filename);
continue;;
list_for_each_entry(name_loop, &udev->symlink_list, node) {
snprintf(filename, sizeof(filename), "%s/%s", udev_root, name_loop->name);
filename[sizeof(filename)-1] = '\0';
if (stat(filename, &stats) != 0) {
dbg("symlink '%s' not found", filename);
continue;
}
if (udev->devt && stats.st_rdev != udev->devt) {
info("symlink '%s' points to a different device, skip removal", filename);
continue;
}
info("removing symlink '%s'", filename);
unlink(filename);
if (strchr(filename, '/'))
delete_path(filename);
strlcat(symlinks, filename, sizeof(symlinks));
strlcat(symlinks, " ", sizeof(symlinks));
}
info("removing symlink '%s'", filename);
unlink(filename);
if (strchr(filename, '/'))
delete_path(filename);
remove_trailing_chars(symlinks, ' ');
if (symlinks[0] != '\0')
setenv("DEVLINKS", symlinks, 1);
}
snprintf(filename, sizeof(filename), "%s/%s", udev_root, udev->name);
@@ -78,9 +88,7 @@ static int delete_node(struct udevice *udev)
if (retval)
return retval;
snprintf(devname, sizeof(devname), "%s/%s", udev_root, udev->name);
devname[sizeof(devname)-1] = '\0';
setenv("DEVNAME", devname, 1);
setenv("DEVNAME", filename, 1);
num = udev->partitions;
if (num > 0) {