]> diplodocus.org Git - nmh/blobdiff - uip/comp.c
folder_free.c: Move interface to own file.
[nmh] / uip / comp.c
index 2805d56b6f759637cc7689d10d11ec7cf4fa25c8..382be84deb69daec86b6d656dcc1698ccebb9476 100644 (file)
@@ -5,9 +5,16 @@
  * complete copyright information.
  */
 
-#include <h/mh.h>
-#include <h/utils.h>
-#include <h/fmt_scan.h>
+#include "h/mh.h"
+#include "sbr/context_save.h"
+#include "sbr/context_find.h"
+#include "sbr/ambigsw.h"
+#include "sbr/path.h"
+#include "sbr/print_version.h"
+#include "sbr/print_help.h"
+#include "sbr/error.h"
+#include "h/utils.h"
+#include "h/fmt_scan.h"
 #include "h/done.h"
 #include "sbr/m_maildir.h"
 #include <fcntl.h>
@@ -70,7 +77,10 @@ static struct swit aqrul[] = {
 int
 main (int argc, char **argv)
 {
-    int use = NOUSE, nedit = 0, nwhat = 0, build = 0;
+    int use = NOUSE;
+    bool nedit = false;
+    bool nwhat = false;
+    bool build = false;
     int i, in = NOTOK, isdf = 0, out, dat[5], format_len = 0;
     int outputlinelen = OUTPUTLINELEN;
     char *cp, *cwd, *maildir, *dfolder = NULL;
@@ -83,7 +93,7 @@ main (int argc, char **argv)
     struct format *fmt;
     struct stat st;
 
-    if (nmh_init(argv[0], 1)) { return 1; }
+    if (nmh_init(argv[0], true, true)) { return 1; }
 
     arguments = getarguments (invo_name, argc, argv, 1);
     argp = arguments;
@@ -95,7 +105,7 @@ main (int argc, char **argv)
                    ambigsw (cp, switches);
                    done (1);
                case UNKWNSW: 
-                   adios (NULL, "-%s unknown", cp);
+                   die("-%s unknown", cp);
 
                case HELPSW: 
                    snprintf (buf, sizeof(buf), "%s [+folder] [msg] [switches]",
@@ -108,29 +118,29 @@ main (int argc, char **argv)
 
                case EDITRSW: 
                    if (!(ed = *argp++) || *ed == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
-                   nedit = 0;
+                       die("missing argument to %s", argp[-2]);
+                   nedit = false;
                    continue;
                case NEDITSW: 
-                   nedit++;
+                   nedit = true;
                    continue;
 
                case WHATSW: 
                    if (!(whatnowproc = *argp++) || *whatnowproc == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
-                   nwhat = 0;
+                       die("missing argument to %s", argp[-2]);
+                   nwhat = false;
                    continue;
 
                case BILDSW:
-                   build++;
+                   build = true;
                    /* FALLTHRU */
                case NWHATSW: 
-                   nwhat++;
+                   nwhat = true;
                    continue;
 
                case FORMSW: 
                    if (!(form = *argp++) || *form == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    continue;
 
                case USESW: 
@@ -142,25 +152,25 @@ main (int argc, char **argv)
 
                case FILESW:    /* compatibility */
                    if (file)
-                       adios (NULL, "only one file at a time!");
+                       die("only one file at a time!");
                    if (!(file = *argp++) || *file == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    isdf = NOTOK;
                    continue;
 
                case DFOLDSW: 
                    if (dfolder)
-                       adios (NULL, "only one draft folder at a time!");
+                       die("only one draft folder at a time!");
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    dfolder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
                            *cp != '@' ? TFOLDER : TSUBCWF);
                    continue;
                case DMSGSW: 
                    if (file)
-                       adios (NULL, "only one draft message at a time!");
+                       die("only one draft message at a time!");
                    if (!(file = *argp++) || *file == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    continue;
                case NDFLDSW: 
                    dfolder = NULL;
@@ -169,25 +179,25 @@ main (int argc, char **argv)
 
                case TOSW:
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    to = addlist(to, cp);
                    continue;
 
                case CCSW:
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    cc = addlist(cc, cp);
                    continue;
 
                case FROMSW:
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    from = addlist(from, cp);
                    continue;
 
                case FCCSW:
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    dp = NULL;
                    if (*cp == '@')
                        cp = dp = path(cp + 1, TSUBCWF);
@@ -197,25 +207,25 @@ main (int argc, char **argv)
 
                case WIDTHSW:
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    if ((outputlinelen = atoi(cp)) < 10)
-                       adios (NULL, "impossible width %d", outputlinelen);
+                       die("impossible width %d", outputlinelen);
                    continue;
 
                case SUBJECTSW:
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    subject = cp;
                    continue;
            }
        }
        if (*cp == '+' || *cp == '@') {
            if (folder)
-               adios (NULL, "only one folder at a time!");
+               die("only one folder at a time!");
             folder = pluspath (cp);
        } else {
            if (msg)
-               adios (NULL, "only one message at a time!");
+               die("only one message at a time!");
             msg = cp;
        }
     }
@@ -234,7 +244,7 @@ main (int argc, char **argv)
        msg = NULL;
     }
     if (form && (folder || msg))
-           adios (NULL, "can't mix forms and folders/msgs");
+           die("can't mix forms and folders/msgs");
 
     cp = NULL;
 
@@ -253,11 +263,11 @@ main (int argc, char **argv)
 
        /* read folder and create message structure */
        if (!(mp = folder_read (folder, 1)))
-           adios (NULL, "unable to read folder %s", folder);
+           die("unable to read folder %s", folder);
 
        /* check for empty folder */
        if (mp->nummsg == 0)
-           adios (NULL, "no messages in %s", folder);
+           die("no messages in %s", folder);
 
        /* parse the message range/sequence/name and set SELECTED */
        if (!m_convert (mp, msg))
@@ -266,7 +276,7 @@ main (int argc, char **argv)
        seq_save (mp);
 
        if (mp->numsel > 1)
-           adios (NULL, "only one message at a time!");
+           die("only one message at a time!");
 
        if ((in = open (form = mh_xstrdup(m_name (mp->lowsel)), O_RDONLY)) == NOTOK)
            adios (form, "unable to open message");