X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.cc;h=b28decc23a68b65d528ef489158f91c574727bc5;hb=d7cc09cebd23e052f230414f0ad7fb385e3cd2ef;hp=6b5251b5b8f38e92efe2c439993582f96c01d108;hpb=15d3efa69c40c93ae609a791e4b57c3d793e646f;p=chaz%2Fopenbox diff --git a/src/openbox.cc b/src/openbox.cc index 6b5251b5..b28decc2 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -58,17 +58,19 @@ Openbox *Openbox::instance = (Openbox *) 0; void Openbox::signalHandler(int signal) { switch (signal) { + case SIGUSR1: + printf("Caught SIGUSR1 signal. Restarting.\n"); + instance->restart(); + break; + case SIGHUP: - // XXX: Do something with HUP? Really shouldn't, we get this when X shuts - // down and hangs-up on us. - case SIGINT: case SIGTERM: case SIGPIPE: printf("Caught signal %d. Exiting.\n", signal); instance->shutdown(); - break; + case SIGFPE: case SIGSEGV: printf("Caught signal %d. Aborting and dumping core.\n", signal); @@ -108,6 +110,7 @@ Openbox::Openbox(int argc, char **argv) action.sa_handler = Openbox::signalHandler; action.sa_mask = sigset_t(); action.sa_flags = SA_NOCLDSTOP | SA_NODEFER; + sigaction(SIGUSR1, &action, (struct sigaction *) 0); sigaction(SIGPIPE, &action, (struct sigaction *) 0); sigaction(SIGSEGV, &action, (struct sigaction *) 0); sigaction(SIGFPE, &action, (struct sigaction *) 0);