chiark / gitweb /
prefix udev-util.c functions with util_*
[elogind.git] / udev / udevd.c
index 918825ae506194765e9431503991ee0a2a7eb88a..21fd6f82e7355acbad3d0c3074d39783dd23791b 100644 (file)
@@ -108,9 +108,9 @@ static void export_event_state(struct udev_event *event, enum event_state state)
 
        switch (state) {
        case EVENT_QUEUED:
-               unlink(filename_failed);
-               delete_path(event->udev, filename_failed);
-               create_path(event->udev, filename);
+               if(unlink(filename_failed) == 0)
+                       util_delete_path(event->udev, filename_failed);
+               util_create_path(event->udev, filename);
                udev_selinux_setfscreatecon(event->udev, filename, S_IFLNK);
                symlink(udev_device_get_devpath(event->dev), filename);
                udev_selinux_resetfscreatecon(event->udev);
@@ -130,20 +130,24 @@ static void export_event_state(struct udev_event *event, enum event_state state)
                                info(event->udev, "renamed devpath, moved failed state of '%s' to %s'\n",
                                     udev_device_get_devpath_old(event->dev), udev_device_get_devpath(event->dev));
                } else {
-                       unlink(filename_failed);
-                       delete_path(event->udev, filename_failed);
+                       if (unlink(filename_failed) == 0)
+                               util_delete_path(event->udev, filename_failed);
                }
 
                unlink(filename);
-               delete_path(event->udev, filename);
+
+               /* clean up possibly empty queue directory */
+               if (udev_list_is_empty(&exec_list) && udev_list_is_empty(&running_list))
+                       util_delete_path(event->udev, filename);
                break;
        case EVENT_FAILED:
                /* move failed event to the failed directory */
-               create_path(event->udev, filename_failed);
+               util_create_path(event->udev, filename_failed);
                rename(filename, filename_failed);
 
                /* clean up possibly empty queue directory */
-               delete_path(event->udev, filename);
+               if (udev_list_is_empty(&exec_list) && udev_list_is_empty(&running_list))
+                       util_delete_path(event->udev, filename);
                break;
        }
 
@@ -208,7 +212,7 @@ static void event_fork(struct udev_event *event)
                alarm(UDEV_EVENT_TIMEOUT);
 
                /* apply rules, create node, symlinks */
-               err = udev_event_run(event, rules);
+               err = udev_event_execute_rules(event, rules);
 
                /* rules may change/disable the timeout */
                if (udev_device_get_event_timeout(event->dev) >= 0)
@@ -216,7 +220,7 @@ static void event_fork(struct udev_event *event)
 
                /* execute RUN= */
                if (err == 0 && !event->ignore_device && udev_get_run(event->udev))
-                       udev_rules_run(event);
+                       udev_event_execute_run(event);
                info(event->udev, "seq %llu exit with %i\n", udev_device_get_seqnum(event->dev), err);
                logging_close();
                if (err != 0)
@@ -609,7 +613,7 @@ static void export_initial_seqnum(struct udev *udev)
        }
        util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
        util_strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
-       create_path(udev, filename);
+       util_create_path(udev, filename);
        fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
        if (fd >= 0) {
                write(fd, seqnum, len);
@@ -644,7 +648,7 @@ int main(int argc, char *argv[])
        logging_init("udevd");
        udev_set_log_fn(udev, log_fn);
        info(udev, "version %s\n", VERSION);
-       selinux_init(udev);
+       udev_selinux_init(udev);
 
        while (1) {
                int option;
@@ -974,7 +978,7 @@ exit:
                close(inotify_fd);
        udev_monitor_unref(kernel_monitor);
 
-       selinux_exit(udev);
+       udev_selinux_exit(udev);
        udev_unref(udev);
        logging_close();
        return rc;