X-Git-Url: http://git.tuebingen.mpg.de/?p=adu.git;a=blobdiff_plain;f=adu.c;h=0cd1644c236c17908656eb25c24c12084b7c9967;hp=7d8c9abd0191b6d4c84036bcc70e7e91d2cf03f3;hb=f56aa749790691ac3a44cc9c67a0ee7055939f78;hpb=1136bdfc82272850474eacba37cf87d01f6a1b7f diff --git a/adu.c b/adu.c index 7d8c9ab..0cd1644 100644 --- a/adu.c +++ b/adu.c @@ -165,14 +165,24 @@ void check_signals(void) exit(EXIT_FAILURE); } +static int catch_signal(int sig) +{ + struct sigaction act; + + act.sa_handler = signal_handler; + sigemptyset(&act.sa_mask); + act.sa_flags = 0; + return sigaction(sig, &act, NULL); +} + static int init_signals(void) { - if (signal(SIGINT, &signal_handler) == SIG_ERR) - return -E_SIGNAL_SIG_ERR; - if (signal(SIGTERM, &signal_handler) == SIG_ERR) - return -E_SIGNAL_SIG_ERR; - if (signal(SIGPIPE, &signal_handler) == SIG_ERR) - return -E_SIGNAL_SIG_ERR; + if (catch_signal(SIGINT) < 0) + return -E_SIGACTION; + if (catch_signal(SIGTERM) < 0) + return -E_SIGACTION; + if (catch_signal(SIGPIPE) < 0) + return -E_SIGACTION; return 1; } @@ -198,8 +208,10 @@ int open_dir_table(int create) goto out; NOTICE_LOG("creating dir table\n"); ret = osl(osl_create_table(&dir_table_desc)); - if (ret < 0) + if (ret < 0) { + ERROR_LOG("could not create %s\n", dir_table_desc.dir); goto out; + } } INFO_LOG("opening dir table\n"); return osl(osl_open_table(&dir_table_desc, &dir_table));