chiark / gitweb /
[PATCH] Update the Gentoo udev.rules and udev.permissions files
[elogind.git] / udev.c
diff --git a/udev.c b/udev.c
index b45fb336be8c631023b891a7a60b3840433a6f07..f3fab18b29e3fe000f214f38d0cfd0dfc8ee88fa 100644 (file)
--- a/udev.c
+++ b/udev.c
@@ -26,6 +26,7 @@
 #include <errno.h>
 #include <ctype.h>
 #include <signal.h>
+#include <sysfs/libsysfs.h>
 
 #include "udev.h"
 #include "udev_version.h"
 #include "logging.h"
 #include "namedev.h"
 #include "udevdb.h"
-#include "libsysfs/libsysfs.h"
 
 /* global variables */
 char **main_argv;
 char **main_envp;
+
+#ifdef LOG
 unsigned char logname[42];
+void log_message (int level, const char *format, ...)
+{
+       va_list args;
+
+       if (!udev_log)
+               return;
+
+       va_start(args, format);
+       vsyslog(level, format, args);
+       va_end(args);
+}
+#endif
 
 static void sig_handler(int signum)
 {
-       dbg("caught signal %d", signum);
        switch (signum) {
                case SIGINT:
                case SIGTERM:
                        sysbus_disconnect();
                        udevdb_exit();
                        exit(20 + signum);
-                       break;
                default:
                        dbg("unhandled signal");
        }
@@ -95,6 +107,7 @@ static int udev_hotplug(int argc, char **argv)
        char *subsystem;
        int retval = -EINVAL;
        int i;
+       struct sigaction act;
 
        action = get_action();
        if (!action) {
@@ -141,14 +154,17 @@ static int udev_hotplug(int argc, char **argv)
        }
 
        /* set up a default signal handler for now */
-       signal(SIGINT, sig_handler);
-       signal(SIGTERM, sig_handler);
+       act.sa_handler = sig_handler;
+       sigemptyset (&act.sa_mask);
+       act.sa_flags = SA_RESTART;
+       sigaction(SIGINT, &act, NULL);
+       sigaction(SIGTERM, &act, NULL);
 
        /* initialize the naming deamon */
        namedev_init();
 
        if (strcmp(action, "add") == 0)
-               retval = udev_add_device(devpath, subsystem);
+               retval = udev_add_device(devpath, subsystem, 0);
 
        else if (strcmp(action, "remove") == 0)
                retval = udev_remove_device(devpath, subsystem);