nonstatic function for atexit, check if atexit fails
authorPhilipp Takacs <philipp@bureaucracy.de>
Sun, 22 Feb 2015 13:26:27 +0000 (14:26 +0100)
committerPhilipp Takacs <philipp@bureaucracy.de>
Sun, 22 Feb 2015 21:54:32 +0000 (22:54 +0100)
atexit needs nonstatic functions to work correct. The
error check is importent, because atexit can fail for
some reasons and the cleanup woulden't work.

uip/inc.c
uip/mhbuild.c
uip/mhlist.c
uip/mhshow.c
uip/mhstore.c
uip/mhtest.c
uip/pick.c
uip/rcvdist.c
uip/rcvstore.c

index 213cc5d..8a05c6a 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -119,7 +119,7 @@ static FILE *in;
 /*
 ** prototypes
 */
-static void inc_done();
+void inc_done();
 
 
 int
@@ -143,7 +143,9 @@ main(int argc, char **argv)
        /* copy of mail directory because the static gets overwritten */
        char *maildir_copy = NULL;
 
-       atexit(inc_done);
+       if (atexit(inc_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
 /*
 ** absolutely the first thing we do is save our privileges,
@@ -484,7 +486,7 @@ main(int argc, char **argv)
        return 0;
 }
 
-static void
+void
 inc_done()
 {
        if (locked) {
index 6e0861e..ba0d978 100644 (file)
@@ -92,7 +92,7 @@ static int unlink_infile  = 0;
 static char outfile[BUFSIZ];
 static int unlink_outfile = 0;
 
-static void unlink_done();
+void unlink_done();
 
 /* mhoutsbr.c */
 int output_message(CT, char *);
@@ -115,7 +115,9 @@ main(int argc, char **argv)
        FILE *fp = NULL;
        FILE *fp_out = NULL;
 
-       atexit(unlink_done);
+       if (atexit(unlink_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
@@ -284,7 +286,7 @@ main(int argc, char **argv)
 }
 
 
-static void
+void
 unlink_done()
 {
        /*
index 8c7e51d..cf55c4c 100644 (file)
@@ -92,7 +92,9 @@ main(int argc, char **argv)
        struct msgs *mp = NULL;
        CT ct, *ctp;
 
-       atexit(freects_done);
+       if (atexit(freects_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
index 9bc7ed3..e56b612 100644 (file)
@@ -98,7 +98,9 @@ main(int argc, char **argv)
        FILE *fp;
        int ontty = 0;
 
-       atexit(freects_done);
+       if (atexit(freects_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
index 6a268f2..63fa5ab 100644 (file)
@@ -129,7 +129,9 @@ main(int argc, char **argv)
        CT ct, *ctp;
        FILE *fp;
 
-       atexit(freects_done);
+       if (atexit(freects_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
index a1718db..aa7e411 100644 (file)
@@ -95,7 +95,9 @@ main(int argc, char **argv)
        struct msgs *mp = NULL;
        CT ct, *ctp;
 
-       atexit(freects_done);
+       if (atexit(freects_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
index 6c59add..d31f9b8 100644 (file)
@@ -76,7 +76,7 @@ static int pmatches(FILE *, int, long, long);
 
 static int listsw = -1;
 
-static void putzero_done();
+void putzero_done();
 
 int
 main(int argc, char **argv)
@@ -91,7 +91,9 @@ main(int argc, char **argv)
        struct msgs *mp;
        register FILE *fp;
 
-       atexit(putzero_done);
+        if (atexit(putzero_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
@@ -307,7 +309,7 @@ main(int argc, char **argv)
 }
 
 
-static void
+void
 putzero_done()
 {
        if (listsw && !isatty(fileno(stdout)))
index d3e4100..c365059 100644 (file)
@@ -30,7 +30,7 @@ static char tmpfil[BUFSIZ] = "";
 ** prototypes
 */
 static void rcvdistout(FILE *, char *, char *);
-static void unlink_done();
+void unlink_done();
 
 
 int
@@ -42,7 +42,9 @@ main(int argc, char **argv)
        FILE *fp;
        char *tfile = NULL;
 
-       atexit(unlink_done);
+       if (atexit(unlink_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
@@ -275,7 +277,7 @@ finished: ;
 }
 
 
-static void
+void
 unlink_done()
 {
        if (*backup) {
index fbddda7..0b5ad85 100644 (file)
@@ -44,7 +44,7 @@ static struct swit switches[] = {
 */
 static char *tmpfilenam = NULL;
 
-static void unlink_done();
+void unlink_done();
 
 int
 main(int argc, char **argv)
@@ -58,7 +58,9 @@ main(int argc, char **argv)
        struct msgs *mp;
        struct stat st;
 
-       atexit(unlink_done);
+       if (atexit(unlink_done) != 0) {
+               adios(NULL, "atexit failed");
+       }
 
        setlocale(LC_ALL, "");
        invo_name = mhbasename(argv[0]);
@@ -226,7 +228,7 @@ main(int argc, char **argv)
 /*
 ** Clean up and exit
 */
-static void
+void
 unlink_done()
 {
        if (tmpfilenam && *tmpfilenam) {