static Cursor cursors[OB_NUM_CURSORS];
static KeyCode keys[OB_NUM_KEYS];
static gint exitcode = 0;
static Cursor cursors[OB_NUM_CURSORS];
static KeyCode keys[OB_NUM_KEYS];
static gint exitcode = 0;
-static void signal_handler(int signal, gpointer data);
-static void parse_args(int argc, char **argv);
+static void signal_handler(gint signal, gpointer data);
+static void parse_args(gint argc, gchar **argv);
ob_main_loop_signal_add(ob_main_loop, SIGINT, signal_handler, NULL, NULL);
ob_main_loop_signal_add(ob_main_loop, SIGHUP, signal_handler, NULL, NULL);
ob_main_loop_signal_add(ob_main_loop, SIGPIPE, signal_handler, NULL, NULL);
ob_main_loop_signal_add(ob_main_loop, SIGINT, signal_handler, NULL, NULL);
ob_main_loop_signal_add(ob_main_loop, SIGHUP, signal_handler, NULL, NULL);
ob_main_loop_signal_add(ob_main_loop, SIGPIPE, signal_handler, NULL, NULL);
XSynchronize(ob_display, xsync);
/* check for locale support */
XSynchronize(ob_display, xsync);
/* check for locale support */
if (parse_load_rc(&doc, &node))
parse_tree(i, doc, node->xmlChildrenNode);
/* we're done with parsing now, kill it */
if (parse_load_rc(&doc, &node))
parse_tree(i, doc, node->xmlChildrenNode);
/* we're done with parsing now, kill it */
- if (signal == SIGUSR1) {
- fprintf(stderr, "Caught signal %d. Restarting.\n", signal);
+ switch (signal) {
+ case SIGUSR1:
+ ob_debug("Caught signal %d. Restarting.\n", signal);
- } else if (signal == SIGUSR2) {
- fprintf(stderr, "Caught signal %d. Reconfiguring.\n", signal);
- ob_reconfigure();
- } else {
- fprintf(stderr, "Caught signal %d. Exiting.\n", signal);
+ break;
+ case SIGUSR2:
+ ob_debug("Caught signal %d. Reconfiguring.\n", signal);
+ ob_reconfigure();
+ break;
+ case SIGCHLD:
+ /* reap children */
+ while (waitpid(-1, NULL, WNOHANG) > 0);
+ break;
+ default:
+ ob_debug("Caught signal %d. Exiting.\n", signal);
for (i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--version")) {
for (i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--version")) {