]> diplodocus.org Git - nmh/blobdiff - test/fakepop.c
Added mention of rcvstore(1) to inc(1) man page.
[nmh] / test / fakepop.c
index 7ff62a8bd551f92e1354f8e6996e602113399d4e..bca565d14b80e3ca6ba131ef6a7f6837e08093cf 100644 (file)
@@ -13,6 +13,7 @@
 #include <netdb.h>
 #include <errno.h>
 #include <sys/socket.h>
+#include <netinet/in.h>
 #include <sys/types.h>
 #include <sys/select.h>
 #include <sys/stat.h>
@@ -36,6 +37,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 +186,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 +418,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);
+}