chiark / gitweb /
optimize SELinux path match
[elogind.git] / udev_remove.c
index cb5523af92aa04a460863473cff7f80c6791eb75..6efa17eb7c7957cf4aaf6f97e7d2b4e7cf2245f8 100644 (file)
 #include "udev.h"
 #include "udev_utils.h"
 #include "udev_version.h"
-#include "udev_db.h"
 #include "logging.h"
 
-static int delete_path(const char *path)
-{
-       char *pos;
-       int retval;
-
-       pos = strrchr(path, '/');
-       while (1) {
-               *pos = '\0';
-               pos = strrchr(path, '/');
-
-               /* don't remove the last one */
-               if ((pos == path) || (pos == NULL))
-                       break;
-
-               /* remove if empty */
-               retval = rmdir(path);
-               if (errno == ENOENT)
-                       retval = 0;
-               if (retval) {
-                       if (errno == ENOTEMPTY)
-                               return 0;
-                       err("rmdir(%s) failed: %s", path, strerror(errno));
-                       break;
-               }
-               dbg("removed '%s'", path);
-       }
-       return 0;
-}
-
 static int delete_node(struct udevice *udev)
 {
        char filename[PATH_SIZE];
@@ -152,8 +122,8 @@ int udev_remove_device(struct udevice *udev)
                dbg("remove name='%s'", udev->name);
                udev_db_delete_device(udev);
        } else {
-               dbg("'%s' not found in database, don't remove anything", udev->devpath);
-               return -1;
+               dbg("'%s' not found in database, using kernel name '%s'", udev->devpath, udev->kernel_name);
+               strlcpy(udev->name, udev->kernel_name, sizeof(udev->name));
        }
 
        return delete_node(udev);