--- evkeyd-0.1pre7/evkeyd.c.orig 2003-07-20 06:47:44.000000000 +0200 +++ evkeyd-0.1pre7/evkeyd.c.orig 2005-12-15 07:38:36.000000000 +0100 @@ -16,6 +16,7 @@ struct config *sigcfg; +int sig_received; void log_debug (struct config *cfg, char *msg) { @@ -124,14 +125,7 @@ void signal_handler (int sig) { - if(sig == SIGTERM) { - log_info(sigcfg, "recieved SIGTERM, exiting"); - unlink(LOCK_FILE); - exit(0); - } else if (sig > 32) { - read_event(sigcfg, sig-32); - } - + sig_received = sig; } int init (struct config *cfg, int argc, char **argv, @@ -199,7 +193,15 @@ free(verstr); while(1) { + sig_received = 0; sleep(1); + if (sig_received == SIGTERM) { + log_info(sigcfg, "received SIGTERM, exiting"); + unlink(LOCK_FILE); + break; + } + else if (sig_received > 32) + read_event(sigcfg, sig_received-32); } finish(cfg, eventfd, pmufd);