chiark / gitweb /
volume_id: clean up linux_raid code
[elogind.git] / test-udev.c
index bbe50eeeb4c542f6d8be634026da91098b97c6e4..4ac2d5a8891cedb53386de53358e42bd611c804f 100644 (file)
@@ -90,10 +90,10 @@ int main(int argc, char *argv[], char *envp[])
 
        logging_init("udev");
        if (devnull < 0)
-               err("open /dev/null failed: %s", strerror(errno));
+               err("open /dev/null failed: %s\n", strerror(errno));
        udev_config_init();
        selinux_init();
-       dbg("version %s", UDEV_VERSION);
+       dbg("version %s\n", UDEV_VERSION);
 
        /* set signal handlers */
        memset(&act, 0x00, sizeof(act));
@@ -105,7 +105,7 @@ int main(int argc, char *argv[], char *envp[])
        sigaction(SIGTERM, &act, NULL);
 
        /* trigger timeout to prevent hanging processes */
-       alarm(UDEV_ALARM_TIMEOUT);
+       alarm(UDEV_EVENT_TIMEOUT);
 
        action = getenv("ACTION");
        devpath = getenv("DEVPATH");
@@ -115,7 +115,7 @@ int main(int argc, char *argv[], char *envp[])
                subsystem = argv[1];
 
        if (action == NULL || subsystem == NULL || devpath == NULL) {
-               err("action, subsystem or devpath missing");
+               err("action, subsystem or devpath missing\n");
                goto exit;
        }
 
@@ -132,11 +132,11 @@ int main(int argc, char *argv[], char *envp[])
 
        dev = sysfs_device_get(devpath);
        if (dev == NULL) {
-               info("unable to open '%s'", devpath);
+               info("unable to open '%s'\n", devpath);
                goto fail;
        }
 
-       udev = udev_device_init();
+       udev = udev_device_init(NULL);
        if (udev == NULL)
                goto fail;
 
@@ -154,27 +154,18 @@ int main(int argc, char *argv[], char *envp[])
 
        retval = udev_device_event(&rules, udev);
 
-       if (retval == 0 && !udev->ignore_device && udev_run) {
-               struct name_entry *name_loop;
-
-               dbg("executing run list");
-               list_for_each_entry(name_loop, &udev->run_list, node) {
-                       if (strncmp(name_loop->name, "socket:", strlen("socket:")) == 0)
-                               pass_env_to_socket(&name_loop->name[strlen("socket:")], devpath, action);
-                       else {
-                               char program[PATH_SIZE];
-
-                               strlcpy(program, name_loop->name, sizeof(program));
-                               udev_rules_apply_format(udev, program, sizeof(program));
-                               run_program(program, udev->dev->subsystem, NULL, 0, NULL, (udev_log_priority >= LOG_INFO));
-                       }
-               }
-       }
+       /* rules may change/disable the timeout */
+       if (udev->event_timeout >= 0)
+               alarm(udev->event_timeout);
+
+       if (retval == 0 && !udev->ignore_device && udev_run)
+               udev_rules_run(udev);
 
        udev_device_cleanup(udev);
 fail:
        udev_rules_cleanup(&rules);
        sysfs_cleanup();
+       selinux_exit();
 
 exit:
        logging_close();