Changed msg_style and msg_delim to be file static to m_getfld.c
[mmh] / uip / repl.c
index f6d32d3..cc8a86b 100644 (file)
@@ -2,10 +2,13 @@
 /*
  * repl.c -- reply to a message
  *
- * $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 <h/mh.h>
+#include <h/utils.h>
 
 
 static struct swit switches[] = {
@@ -65,11 +68,16 @@ static struct swit switches[] = {
     { "help", 0 },
 #define        FILESW                27
     { "file file", 4 },                        /* interface from msh */
-
-#ifdef MHE
 #define        BILDSW                28
     { "build", 5 },                    /* interface from mhe */
-#endif
+#define ATFILESW              29
+    { "atfile", 0 },
+#define NOATFILESW            30
+    { "noatfile", 0 },
+#define FMTPROCSW             31
+    { "fmtproc program", 0 },
+#define NFMTPROCSW            32
+    { "nofmtproc", 0 },
 
     { NULL, 0 }
 };
@@ -134,6 +142,8 @@ main (int argc, char **argv)
     int        i, isdf = 0;
     int anot = 0, inplace = 1;
     int nedit = 0, nwhat = 0;
+    int atfile = 0;
+    int fmtproc = -1;
     char *cp, *cwd, *dp, *maildir, *file = NULL;
     char *folder = NULL, *msg = NULL, *dfolder = NULL;
     char *dmsg = NULL, *ed = NULL, drft[BUFSIZ], buf[BUFSIZ];
@@ -142,9 +152,7 @@ main (int argc, char **argv)
     struct stat st;
     FILE *in;
 
-#ifdef MHE
     int buildsw = 0;
-#endif /* MHE */
 
 #ifdef LOCALE
     setlocale(LC_ALL, "");
@@ -173,7 +181,7 @@ main (int argc, char **argv)
                    done (0);
                case VERSIONSW:
                    print_version(invo_name);
-                   done (1);
+                   done (0);
 
                case GROUPSW:
                    groupreply++;
@@ -214,10 +222,8 @@ main (int argc, char **argv)
                        adios (NULL, "missing argument to %s", argp[-2]);
                    nwhat = 0;
                    continue;
-#ifdef MHE
                case BILDSW: 
                    buildsw++;  /* fall... */
-#endif /* MHE */
                case NWHATSW: 
                    nwhat++;
                    continue;
@@ -308,13 +314,29 @@ main (int argc, char **argv)
                    dfolder = NULL;
                    isdf = NOTOK;
                    continue;
+
+               case ATFILESW:
+                   atfile++;
+                   continue;
+               case NOATFILESW:
+                   atfile = 0;
+                   continue;
+
+               case FMTPROCSW:
+                   if (!(formatproc = *argp++) || *formatproc == '-')
+                       adios (NULL, "missing argument to %s", argp[-2]);
+                   fmtproc = 1;
+                   continue;
+               case NFMTPROCSW:
+                   fmtproc = 0;
+                   continue;
            }
        }
        if (*cp == '+' || *cp == '@') {
            if (folder)
                adios (NULL, "only one folder at a time!");
            else
-               folder = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF);
+               folder = pluspath (cp);
        } else {
            if (msg)
                adios (NULL, "only one message at a time!");
@@ -339,18 +361,11 @@ main (int argc, char **argv)
 
 try_it_again:
 
-#ifdef MHE
     strncpy (drft, buildsw ? m_maildir ("reply")
                          : m_draft (dfolder, NULL, NOUSE, &isdf), sizeof(drft));
 
     /* Check if a draft exists */
     if (!buildsw && stat (drft, &st) != NOTOK) {
-#else
-    strncpy (drft, m_draft (dfolder, dmsg, NOUSE, &isdf), sizeof(drft));
-
-    /* Check if a draft exists */
-    if (stat (drft, &st) != NOTOK) {
-#endif /* MHE */
        printf ("Draft \"%s\" exists (%ld bytes).", drft, (long) st.st_size);
        for (i = LISTDSW; i != YESW;) {
            if (!(argp = getans ("\nDisposition? ", isdf ? aqrnl : aqrl)))
@@ -430,14 +445,16 @@ try_it_again:
            form = etcpath (replcomps);
     }
 
-    replout (in, msg, drft, mp, outputlinelen, mime, form, filter, fcc);
+    replout (in, msg, drft, mp, outputlinelen, mime, form, filter,
+            fcc, fmtproc);
     fclose (in);
 
     if (nwhat)
        done (0);
-    what_now (ed, nedit, NOUSE, drft, msg, 0, mp,
-           anot ? "Replied" : NULL, inplace, cwd);
-    return done (1);
+    what_now (ed, nedit, NOUSE, drft, msg, 0, mp, anot ? "Replied" : NULL,
+           inplace, cwd, atfile);
+    done (1);
+    return 1;
 }
 
 void