]> diplodocus.org Git - nmh/blobdiff - uip/refile.c
Added scan and inc from mbox with multiple messages.
[nmh] / uip / refile.c
index acafbf433a867e08d40193e31d721dd4c29e2810..ae71de23e12eb1ffc48527289ffe239b4c76c190 100644 (file)
@@ -3,8 +3,6 @@
  * refile.c -- move or link message(s) from a source folder
  *          -- into one or more destination folders
  *
- * $Id$
- *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
 #include <fcntl.h>
 #include <errno.h>
 
-static struct swit switches[] = {
-#define        DRAFTSW          0
-    { "draft", 0 },
-#define        LINKSW           1
-    { "link", 0 },
-#define        NLINKSW          2
-    { "nolink", 0 },
-#define        PRESSW           3
-    { "preserve", 0 },
-#define        NPRESSW          4
-    { "nopreserve", 0 },
-#define UNLINKSW         5
-    { "unlink", 0 },
-#define NUNLINKSW        6
-    { "nounlink", 0 },
-#define        SRCSW            7
-    { "src +folder", 0 },
-#define        FILESW           8
-    { "file file", 0 },
-#define        RPROCSW          9
-    { "rmmproc program", 0 },
-#define        NRPRCSW         10
-    { "normmproc", 0 },
-#define VERSIONSW       11
-    { "version", 0 },
-#define        HELPSW          12
-    { "help", 0 },
-    { NULL, 0 }
-};
+#define REFILE_SWITCHES \
+    X("draft", 0, DRAFTSW) \
+    X("link", 0, LINKSW) \
+    X("nolink", 0, NLINKSW) \
+    X("preserve", 0, PRESSW) \
+    X("nopreserve", 0, NPRESSW) \
+    X("unlink", 0, UNLINKSW) \
+    X("nounlink", 0, NUNLINKSW) \
+    X("src +folder", 0, SRCSW) \
+    X("file file", 0, FILESW) \
+    X("rmmproc program", 0, RPROCSW) \
+    X("normmproc", 0, NRPRCSW) \
+    X("version", 0, VERSIONSW) \
+    X("help", 0, HELPSW) \
+
+#define X(sw, minchars, id) id,
+DEFINE_SWITCH_ENUM(REFILE);
+#undef X
+
+#define X(sw, minchars, id) { sw, minchars, id },
+DEFINE_SWITCH_ARRAY(REFILE, switches);
+#undef X
 
 static char maildir[BUFSIZ];
 
@@ -102,10 +93,10 @@ main (int argc, char **argv)
                snprintf (buf, sizeof(buf), "%s [msgs] [switches] +folder ...",
                          invo_name);
                print_help (buf, switches, 1);
-               done (1);
+               done (0);
            case VERSIONSW:
                print_version(invo_name);
-               done (1);
+               done (0);
 
            case LINKSW: 
                linkf++;
@@ -163,7 +154,7 @@ main (int argc, char **argv)
            if (foldp > NFOLDERS)
                adios (NULL, "only %d folders allowed!", NFOLDERS);
            folders[foldp++].f_name =
-               path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF);
+               pluspath (cp);
        } else
                app_msgarg(&msgs, cp);
     }
@@ -266,7 +257,8 @@ main (int argc, char **argv)
     context_replace (pfolder, folder); /* update current folder   */
     context_save ();                   /* save the context file   */
     folder_free (mp);                  /* free folder structure   */
-    return done (0);
+    done (0);
+    return 1;
 }
 
 
@@ -278,11 +270,9 @@ main (int argc, char **argv)
 static void
 opnfolds (struct st_fold *folders, int nfolders)
 {
-    register char *cp;
     char nmaildir[BUFSIZ];
     register struct st_fold *fp, *ep;
     register struct msgs *mp;
-    struct stat st;
 
     for (fp = folders, ep = folders + nfolders; fp < ep; fp++) {
        chdir (m_maildir (""));