X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_event.c;h=b50fbf4c1dd61df4f0fcf8cceeb74975bfa22651;hb=a8d141a3c165dafcf21d081e88f3cc0b7f1e65c5;hp=8a3ed29315fd5fed00feea03b216c7e12d05ecb7;hpb=e8d569b4145a358775e87058829133fa725b32fd;p=elogind.git diff --git a/udev_event.c b/udev_event.c index 8a3ed2931..b50fbf4c1 100644 --- a/udev_event.c +++ b/udev_event.c @@ -28,10 +28,6 @@ #include #include #include -#include -#include -#include -#include #include "udev_libc_wrapper.h" #include "udev.h" @@ -77,13 +73,12 @@ int udev_process_event(struct udev_rules *rules, struct udevice *udev) sysfs_close_class_device(class_dev); return -1; } - if (udev->name[0] == '\0') { + if (udev->name[0] != '\0') { + /* create node, store in db */ + retval = udev_add_device(udev, class_dev); + } else { info("device node creation supressed"); - sysfs_close_class_device(class_dev); - return -1; } - /* create node, store in db */ - retval = udev_add_device(udev, class_dev); } else { dbg("no dev-file found"); udev_rules_get_run(rules, udev, class_dev, NULL); @@ -95,15 +90,21 @@ int udev_process_event(struct udev_rules *rules, struct udevice *udev) } sysfs_close_class_device(class_dev); } else if (strcmp(udev->action, "remove") == 0) { + struct name_entry *name_loop; + + /* get data from db, remove db-entry, delete node */ dbg("node remove"); + retval = udev_remove_device(udev); + + /* restore stored persistent data */ + list_for_each_entry(name_loop, &udev->env_list, node) + putenv(name_loop->name); + udev_rules_get_run(rules, udev, NULL, NULL); if (udev->ignore_device) { dbg("device event will be ignored"); return -1; } - - /* get name from db, remove db-entry, delete node */ - retval = udev_remove_device(udev); } /* export name of device node or netif */