Replace done with exit at uip
[mmh] / uip / mhlist.c
index 685c8ff..8c7e51d 100644 (file)
 #include <h/utils.h>
 
 static struct swit switches[] = {
-#define HEADSW  0
-       { "headers", 0 },
-#define NHEADSW  1
-       { "noheaders", 0 },
-#define VERBSW  2
+#define VERBSW  0
        { "verbose", 0 },
-#define NVERBSW  3
-       { "noverbose", 0 },
-#define FILESW  4  /* interface from show */
+#define NVERBSW  1
+       { "noverbose", 2 },
+#define FILESW  2  /* interface from show */
        { "file file", 0 },
-#define PARTSW  5
+#define PARTSW  3
        { "part number", 0 },
-#define TYPESW  6
+#define TYPESW  4
        { "type content", 0 },
-#define VERSIONSW  7
-       { "version", 0 },
-#define HELPSW  8
+#define VERSIONSW  5
+       { "Version", 0 },
+#define HELPSW  6
        { "help", 0 },
-#define DEBUGSW  9
+#define DEBUGSW  7
        { "debug", -5 },
        { NULL, 0 }
 };
@@ -72,12 +68,12 @@ void set_endian(void);
 void flush_errors(void);
 
 /* mhlistsbr.c */
-void list_all_messages(CT *, int, int, int);
+void list_all_messages(CT *, int, int);
 
 /* mhfree.c */
 void free_content(CT);
 extern CT *cts;
-void freects_done(int) NORETURN;
+void freects_done();
 
 /*
 ** static prototypes
@@ -88,7 +84,6 @@ static void pipeser(int);
 int
 main(int argc, char **argv)
 {
-       int headsw = 1;
        int msgnum;
        char *cp, *file = NULL, *folder = NULL;
        char *maildir, buf[100], **argp;
@@ -97,11 +92,9 @@ main(int argc, char **argv)
        struct msgs *mp = NULL;
        CT ct, *ctp;
 
-       done=freects_done;
+       atexit(freects_done);
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
 
        /* read user profile/context */
@@ -118,24 +111,17 @@ main(int argc, char **argv)
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
-                               done(1);
+                               exit(1);
                        case UNKWNSW:
                                adios(NULL, "-%s unknown", cp);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
                                print_help(buf, switches, 1);
-                               done(1);
+                               exit(0);
                        case VERSIONSW:
                                print_version(invo_name);
-                               done(1);
-
-                       case HEADSW:
-                               headsw = 1;
-                               continue;
-                       case NHEADSW:
-                               headsw = 0;
-                               continue;
+                               exit(0);
 
                        case PARTSW:
                                if (!(cp = *argp++) || *cp == '-')
@@ -233,9 +219,12 @@ main(int argc, char **argv)
                        adios(NULL, "no messages in %s", folder);
 
                /* parse all the message ranges/sequences and set SELECTED */
-               for (msgnum = 0; msgnum < msgs.size; msgnum++)
-                       if (!m_convert(mp, msgs.msgs[msgnum]))
-                               done (1);
+               for (msgnum = 0; msgnum < msgs.size; msgnum++) {
+                       if (!m_convert(mp, msgs.msgs[msgnum])) {
+                               /* sysexits.h EX_USAGE */
+                               exit(1);
+                       }
+               }
                seq_setprev(mp);  /* set the previous-sequence */
 
                if (!(cts = (CT *) calloc((size_t) (mp->numsel + 1),
@@ -255,7 +244,7 @@ main(int argc, char **argv)
        }
 
        if (!*cts)
-               done(1);
+               exit(1);
 
        userrs = 1;
        SIGNAL(SIGQUIT, quitser);
@@ -279,7 +268,7 @@ main(int argc, char **argv)
        /*
        ** List the message content
        */
-       list_all_messages(cts, headsw, verbosw, debugsw);
+       list_all_messages(cts, verbosw, debugsw);
 
        /* Now free all the structures for the content */
        for (ctp = cts; *ctp; ctp++)
@@ -296,8 +285,7 @@ main(int argc, char **argv)
                context_save();  /* save the context file  */
        }
 
-       done(0);
-       return 1;
+       return 0;
 }
 
 
@@ -311,6 +299,6 @@ pipeser(int i)
                fflush(stderr);
        }
 
-       done(1);
+       exit(1);
        /* NOTREACHED */
 }