X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=test%2Ffakepop.c;h=389588d201c09e1d3f1893e5daef81bf683f3eac;hb=1175ec66e2dcc72e09617e2b853025af75fb0f7c;hp=7ff62a8bd551f92e1354f8e6996e602113399d4e;hpb=5908a577e3ddbe4c467af0936bd4ce4b16bffd99;p=mmh diff --git a/test/fakepop.c b/test/fakepop.c index 7ff62a8..389588d 100644 --- a/test/fakepop.c +++ b/test/fakepop.c @@ -36,6 +36,8 @@ continue; \ } +static void killpidfile(void); +static void handleterm(int); static void putpop(int, char *); static void putpopbulk(int, char *); static int getpop(int, char *, ssize_t); @@ -183,6 +185,9 @@ main(int argc, char *argv[]) fprintf(pid, "%ld\n", (long) getpid()); fclose(pid); + signal(SIGTERM, handleterm); + atexit(killpidfile); + FD_ZERO(&readfd); FD_SET(l, &readfd); @@ -412,3 +417,27 @@ readmessage(FILE *file) return buffer; } + +/* + * Handle a SIGTERM + */ + +static void +handleterm(int signal) +{ + (void) signal; + + killpidfile(); + fflush(NULL); + _exit(1); +} + +/* + * Get rid of our pid file + */ + +static void +killpidfile(void) +{ + unlink(PIDFILE); +}