X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udevd.c;h=79de11248ec5e8db484ce31318916d446af6353a;hp=1bbb0a98e73ba5372774caff70a5f04ae0571011;hb=807755776d294a9811c0c8e835538e83abf734bc;hpb=9a689d5863f2794aa71674dce4d251bec20ef0fb diff --git a/udevd.c b/udevd.c index 1bbb0a98e..79de11248 100644 --- a/udevd.c +++ b/udevd.c @@ -34,9 +34,7 @@ #include #include #include "klibc_fixups.h" -#ifndef __KLIBC__ #include -#endif #include "list.h" #include "udev.h" @@ -60,6 +58,7 @@ static void exec_queue_manager(void); static void msg_queue_manager(void); static void user_sighandler(void); static void reap_kids(void); +char *udev_bin; #ifdef LOG unsigned char logname[LOGNAME_SIZE]; @@ -73,6 +72,10 @@ void log_message (int level, const char *format, ...) } #endif +#define msg_dump(msg) \ + dbg("msg_dump: sequence %d, '%s', '%s', '%s'", \ + msg->seqnum, msg->action, msg->devpath, msg->subsystem); + static void msg_dump_queue(void) { #ifdef DEBUG @@ -83,14 +86,6 @@ static void msg_dump_queue(void) #endif } -#if 0 -static void msg_dump(struct hotplug_msg *msg) -{ - dbg("sequence %d, '%s', '%s', '%s'", - msg->seqnum, msg->action, msg->devpath, msg->subsystem); -} -#endif - static struct hotplug_msg *msg_create(void) { struct hotplug_msg *new_msg; @@ -150,7 +145,7 @@ static void udev_run(struct hotplug_msg *msg) switch (pid) { case 0: /* child */ - execle(UDEV_BIN, "udev", msg->subsystem, NULL, env); + execle(udev_bin, "udev", msg->subsystem, NULL, env); dbg("exec of child failed"); exit(1); break; @@ -311,9 +306,10 @@ skip: return; } -static void sig_handler(int signum) +asmlinkage static void sig_handler(int signum) { int rc; + switch (signum) { case SIGINT: case SIGTERM: @@ -330,7 +326,7 @@ static void sig_handler(int signum) goto do_write; break; default: - dbg("unhandled signal"); + dbg("unhandled signal %d", signum); return; } @@ -462,6 +458,13 @@ int main(int argc, char *argv[]) /* enable receiving of the sender credentials */ setsockopt(ssock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)); + /* possible override of udev binary, used for testing */ + udev_bin = getenv("UDEV_BIN"); + if (udev_bin != NULL) + dbg("udev binary is set to '%s'", udev_bin); + else + udev_bin = UDEV_BIN; + FD_ZERO(&readfds); FD_SET(ssock, &readfds); FD_SET(pipefds[0], &readfds);