Initialize vecp in send anno()
[mmh] / uip / inc.c
index 6546cea..159e010 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -41,11 +41,11 @@ static struct swit switches[] = {
 #define AUDSW  0
        { "audit audit-file", 0 },
 #define NAUDSW  1
-       { "noaudit", 0 },
+       { "noaudit", 2 },
 #define CHGSW  2
        { "changecur", 0 },
 #define NCHGSW  3
-       { "nochangecur", 0 },
+       { "nochangecur", 2 },
 #define FILESW  4
        { "file name", 0 },
 #define FORMSW  5
@@ -53,17 +53,18 @@ static struct swit switches[] = {
 #define SILSW  6
        { "silent", 0 },
 #define NSILSW  7
-       { "nosilent", 0 },
+       { "nosilent", 2 },
 #define TRNCSW  8
        { "truncate", 0 },
 #define NTRNCSW  9
-       { "notruncate", 0 },
+       { "notruncate", 2 },
 #define WIDTHSW  10
        { "width columns", 0 },
 #define VERSIONSW  11
-       { "version", 0 },
+       { "Version", 0 },
 #define HELPSW  12
        { "help", 0 },
+       { NULL, 0 },
 };
 
 /*
@@ -118,7 +119,7 @@ static FILE *in;
 /*
 ** prototypes
 */
-static void inc_done(int) NORETURN;
+static void inc_done();
 
 
 int
@@ -134,7 +135,7 @@ main(int argc, char **argv)
        char *cp, *maildir = NULL, *folder = NULL;
        char *form = NULL;
        char *audfile = NULL, *from = NULL;
-       char buf[BUFSIZ], **argp, *nfs, **arguments;
+       char buf[BUFSIZ], **argp, *fmtstr, **arguments;
        struct msgs *mp = NULL;
        struct stat st, s1;
        FILE *aud = NULL;
@@ -142,11 +143,7 @@ main(int argc, char **argv)
        /* copy of mail directory because the static gets overwritten */
        char *maildir_copy = NULL;
 
-#ifdef MHE
-       FILE *mhe = NULL;
-#endif
-
-       done=inc_done;
+       atexit(inc_done);
 
 /*
 ** absolutely the first thing we do is save our privileges,
@@ -155,9 +152,7 @@ main(int argc, char **argv)
        SAVEGROUPPRIVS();
        TRYDROPGROUPPRIVS();
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
 
        /* read user profile/context */
@@ -171,17 +166,18 @@ main(int argc, char **argv)
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
-                               done(1);
+                               /* sysexits.h EX_USAGE */
+                               exit(1);
                        case UNKWNSW:
                                adios(NULL, "-%s unknown", cp);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [+folder] [switches]", invo_name);
                                print_help(buf, switches, 1);
-                               done(1);
+                               exit(0);
                        case VERSIONSW:
                                print_version(invo_name);
-                               done(1);
+                               exit(0);
 
                        case AUDSW:
                                if (!(cp = *argp++) || *cp == '-')
@@ -294,16 +290,7 @@ main(int argc, char **argv)
        if ((maildir_copy = strdup(maildir)) == NULL)
                adios(maildir, "error allocating memory to copy maildir");
 
-       if (!folder_exists(maildir)) {
-               /*
-               ** If the folder doesn't exist, and we're given the -silent
-               ** flag, just fail.
-               */
-               if (noisy)
-                       create_folder(maildir, 0, done);
-               else
-                       done(1);
-       }
+       create_folder(maildir, noisy ? 0 : 1, done);
 
        if (chdir(maildir) == NOTOK)
                adios(maildir, "unable to change directory to");
@@ -346,25 +333,11 @@ main(int argc, char **argv)
                        chmod(audfile, m_gmprot());
 
                fprintf(aud, from ? "<<inc>> %s  -ms %s\n" : "<<inc>> %s\n",
-                        dtimenow(0), from);
+                        dtimenow(), from);
        }
 
-#ifdef MHE
-       if (context_find("mhe")) {
-               int i;
-               cp = concat(maildir, "/++", NULL);
-               i = stat(cp, &st);
-               if ((mhe = fopen(cp, "a")) == NULL)
-                       admonish(cp, "unable to append to");
-               else
-                       if (i == NOTOK)
-                               chmod(cp, m_gmprot());
-               free(cp);
-       }
-#endif /* MHE */
-
        /* Get new format string */
-       nfs = new_fs(form, FORMAT);
+       fmtstr = new_fs(form, FORMAT);
 
        if (noisy) {
                printf("Incorporating new mail into %s...\n\n", folder);
@@ -374,7 +347,7 @@ main(int argc, char **argv)
        /*
        ** Get the mail from file (usually mail spool)
        */
-       m_unknown(in);  /* the MAGIC invocation... */
+       thisisanmbox(in);
        hghnum = msgnum = mp->hghmsg;
        for (;;) {
                /*
@@ -389,7 +362,7 @@ main(int argc, char **argv)
 
                /* create scanline for new message */
                switch (incerr = scan(in, msgnum + 1, msgnum + 1,
-                               noisy ? nfs : NULL, width,
+                               noisy ? fmtstr : NULL, width,
                                msgnum == hghnum && chgflag, 1)) {
                case SCNFAT:
                case SCNEOF:
@@ -423,10 +396,6 @@ main(int argc, char **argv)
 
                        if (aud)
                                fputs(scanl, aud);
-#ifdef MHE
-                       if (mhe)
-                               fputs(scanl, mhe);
-#endif /* MHE */
                        if (noisy)
                                fflush(stdout);
                        msgnum++;
@@ -446,6 +415,7 @@ main(int argc, char **argv)
                */
                break;
        }
+       free(maildir_copy);
 
        if (incerr < 0) {  /* error */
                if (locked) {
@@ -464,11 +434,6 @@ main(int argc, char **argv)
        if (aud)
                fclose(aud);
 
-#ifdef MHE
-       if (mhe)
-               fclose(mhe);
-#endif /* MHE */
-
        if (noisy)
                fflush(stdout);
 
@@ -516,17 +481,15 @@ main(int argc, char **argv)
        seq_setunseen(mp, 1);  /* add new msgs to unseen sequences */
        seq_save(mp);  /* synchronize sequences   */
        context_save();  /* save the context file   */
-       done(0);
-       return 1;
+       return 0;
 }
 
 static void
-inc_done(int status)
+inc_done()
 {
        if (locked) {
                GETGROUPPRIVS();
                lkfclose(in, newmail);
                DROPGROUPPRIVS();
        }
-       exit(status);
 }