diff --git a/init/main.c b/init/main.c index 2836583..c5c04d1 100644 --- a/init/main.c +++ b/init/main.c @@ -66,6 +66,7 @@ static void cad_handler (void *data, NihSignal *signal); static void kbd_handler (void *data, NihSignal *signal); static void pwr_handler (void *data, NihSignal *signal); static void hup_handler (void *data, NihSignal *signal); +static void usr1_handler (void *data, NihSignal *signal); #endif /* DEBUG */ @@ -234,6 +235,10 @@ main (int argc, /* SIGHUP instructs us to re-load our configuration */ nih_signal_set_handler (SIGHUP, nih_signal_handler); NIH_MUST (nih_signal_add_handler (NULL, SIGHUP, hup_handler, NULL)); + + /* SIGHUSR1 instructs us to connect to system bus */ + nih_signal_set_handler (SIGUSR1, nih_signal_handler); + NIH_MUST (nih_signal_add_handler (NULL, SIGUSR1, usr1_handler, NULL)); #endif /* DEBUG */ @@ -465,4 +470,31 @@ hup_handler (void *data, } } } + +/** + * usr1_handler: + * @data: unused, + * @signal: signal that called this handler. + * + * Handle having recieved the SIGHUSR1 signal, which we use to instruct us to + * connect to system bus. + **/ +static void +usr1_handler (void *data, + NihSignal *signal) +{ + + if (! control_bus) { + nih_info (_("Connecting to system bus")); + + if (control_bus_open () < 0) { + NihError *err; + + err = nih_error_get (); + nih_warn ("%s: %s", _("Unable to connect to the system bus"), + err->message); + nih_free (err); + } + } +} #endif /* DEBUG */