chiark / gitweb /
udevtrigger: fix pattern match
[elogind.git] / udevd.c
diff --git a/udevd.c b/udevd.c
index bb956b520c2866d26be448b0eade558738d61788..a21d2ab77d6cfe050bad776f66ca96be9948d80b 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -155,9 +155,9 @@ static void export_event_state(struct udevd_uevent_msg *msg, enum event_state st
 {
        char filename[PATH_SIZE];
        char filename_failed[PATH_SIZE];
-       char target[PATH_SIZE];
        size_t start, end, i;
        struct udevd_uevent_msg *loop_msg;
+       int fd;
 
        /* add location of queue files */
        strlcpy(filename, udev_root, sizeof(filename));
@@ -189,11 +189,10 @@ static void export_event_state(struct udevd_uevent_msg *msg, enum event_state st
        case EVENT_QUEUED:
                unlink(filename_failed);
                delete_path(filename_failed);
-
-               strlcpy(target, sysfs_path, sizeof(target));
-               strlcat(target, msg->devpath, sizeof(target));
                create_path(filename);
-               symlink(target, filename);
+               fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
+               if (fd > 0)
+                       close(fd);
                return;
        case EVENT_FINISHED:
        case EVENT_FAILED:
@@ -926,12 +925,6 @@ int main(int argc, char *argv[], char *envp[])
        selinux_init();
        dbg("version %s", UDEV_VERSION);
 
-       if (getuid() != 0) {
-               fprintf(stderr, "root privileges required\n");
-               err("root privileges required");
-               goto exit;
-       }
-
        /* parse commandline options */
        for (i = 1 ; i < argc; i++) {
                char *arg = argv[i];
@@ -946,6 +939,12 @@ int main(int argc, char *argv[], char *envp[])
                }
        }
 
+       if (getuid() != 0) {
+               fprintf(stderr, "root privileges required\n");
+               err("root privileges required");
+               goto exit;
+       }
+
        /* init sockets to receive events */
        if (init_udevd_socket() < 0) {
                if (errno == EADDRINUSE) {