Removed the -fcc switch from repl(1).
[mmh] / uip / repl.c
index 61ba08c..a21b0df 100644 (file)
@@ -27,43 +27,35 @@ static struct swit switches[] = {
        { "editor editor", 0 },
 #define NEDITSW  7
        { "noedit", 0 },
-#define FCCSW  8
-       { "fcc folder", 0 },
-#define FILTSW  9
+#define FILTSW  8
        { "filter filterfile", 0 },
-#define FORMSW  10
+#define FORMSW  9
        { "form formfile", 0 },
-#define FRMTSW  11
+#define FRMTSW  10
        { "format", 5 },
-#define NFRMTSW  12
+#define NFRMTSW  11
        { "noformat", 7 },
-#define INPLSW  13
-       { "inplace", 0 },
-#define NINPLSW  14
-       { "noinplace", 0 },
-#define MIMESW  15
+#define MIMESW  12
        { "mime", 0 },
-#define NMIMESW  16
+#define NMIMESW  13
        { "nomime", 0 },
-#define QURYSW  17
+#define QURYSW  14
        { "query", 0 },
-#define NQURYSW  18
+#define NQURYSW  15
        { "noquery", 0 },
-#define WHATSW  19
+#define WHATSW  16
        { "whatnowproc program", 0 },
-#define NWHATSW  20
+#define NWHATSW  17
        { "nowhatnowproc", 0 },
-#define WIDTHSW  21
-       { "width columns", 0 },
-#define VERSIONSW  22
+#define VERSIONSW  18
        { "version", 0 },
-#define HELPSW  23
+#define HELPSW  19
        { "help", 0 },
-#define FILESW  24
+#define FILESW  20
        { "file file", 4 },  /* interface from msh */
 
 #ifdef MHE
-#define BILDSW  25
+#define BILDSW  21
        { "build", 5 },  /* interface from mhe */
 #endif
 
@@ -87,13 +79,11 @@ short cccc = -1;
 short ccme = -1;
 short querysw = 0;
 
-short outputlinelen = OUTPUTLINELEN;
 short groupreply = 0;  /* Is this a group reply? */
 
 int mime = 0;  /* include original as MIME part */
 char *form   = NULL;  /* form (components) file */
 char *filter = NULL;  /* message filter file */
-char *fcc = NULL;  /* folders to add to Fcc: header */
 
 
 /*
@@ -105,9 +95,9 @@ void docc(char *, int);
 int
 main(int argc, char **argv)
 {
-       int anot = 0, inplace = 1;
+       int anot = 0;
        int nedit = 0, nwhat = 0;
-       char *cp, *cwd, *dp, *maildir, *file = NULL;
+       char *cp, *cwd, *maildir, *file = NULL;
        char *folder = NULL, *msg = NULL;
        char *ed = NULL, drft[BUFSIZ], buf[BUFSIZ];
        char **argp, **arguments;
@@ -132,143 +122,123 @@ main(int argc, char **argv)
        while ((cp = *argp++)) {
                if (*cp == '-') {
                        switch (smatch(++cp, switches)) {
-                               case AMBIGSW:
-                                       ambigsw(cp, switches);
-                                       done(1);
-                               case UNKWNSW:
-                                       adios(NULL, "-%s unknown", cp);
-
-                               case HELPSW:
-                                       snprintf(buf, sizeof(buf), "%s: [+folder] [msg] [switches]", invo_name);
-                                       print_help(buf, switches, 1);
-                                       done(0);
-                               case VERSIONSW:
-                                       print_version(invo_name);
-                                       done(1);
-
-                               case GROUPSW:
-                                       groupreply++;
-                                       continue;
-                               case NGROUPSW:
-                                       groupreply = 0;
-                                       continue;
-
-                               case ANNOSW:
-                                       anot++;
-                                       continue;
-                               case NANNOSW:
-                                       anot = 0;
-                                       continue;
-
-                               case CCSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       docc(cp, 1);
-                                       continue;
-                               case NCCSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       docc(cp, 0);
-                                       continue;
-
-                               case EDITRSW:
-                                       if (!(ed = *argp++) || *ed == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       nedit = 0;
-                                       continue;
-                               case NEDITSW:
-                                       nedit++;
-                                       continue;
-
-                               case WHATSW:
-                                       if (!(whatnowproc = *argp++) ||
-                                                       *whatnowproc == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       nwhat = 0;
-                                       continue;
+                       case AMBIGSW:
+                               ambigsw(cp, switches);
+                               done(1);
+                       case UNKWNSW:
+                               adios(NULL, "-%s unknown", cp);
+
+                       case HELPSW:
+                               snprintf(buf, sizeof(buf), "%s: [+folder] [msg] [switches]", invo_name);
+                               print_help(buf, switches, 1);
+                               done(0);
+                       case VERSIONSW:
+                               print_version(invo_name);
+                               done(1);
+
+                       case GROUPSW:
+                               groupreply++;
+                               continue;
+                       case NGROUPSW:
+                               groupreply = 0;
+                               continue;
+
+                       case ANNOSW:
+                               anot++;
+                               continue;
+                       case NANNOSW:
+                               anot = 0;
+                               continue;
+
+                       case CCSW:
+                               if (!(cp = *argp++) || *cp == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               docc(cp, 1);
+                               continue;
+                       case NCCSW:
+                               if (!(cp = *argp++) || *cp == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               docc(cp, 0);
+                               continue;
+
+                       case EDITRSW:
+                               if (!(ed = *argp++) || *ed == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               nedit = 0;
+                               continue;
+                       case NEDITSW:
+                               nedit++;
+                               continue;
+
+                       case WHATSW:
+                               if (!(whatnowproc = *argp++) ||
+                                               *whatnowproc == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               nwhat = 0;
+                               continue;
 #ifdef MHE
-                               case BILDSW:
-                                       buildsw++;  /* fall... */
+                       case BILDSW:
+                               buildsw++;  /* fall... */
 #endif /* MHE */
-                               case NWHATSW:
-                                       nwhat++;
-                                       continue;
-
-                               case FCCSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       dp = NULL;
-                                       if (*cp == '@')
-                                               cp = dp = path(cp + 1,
-                                                               TSUBCWF);
-                                       if (fcc)
-                                               fcc = add(", ", fcc);
-                                       fcc = add(cp, fcc);
-                                       if (dp)
-                                               free(dp);
-                                       continue;
-
-                               case FILESW:
-                                       if (file)
-                                               adios(NULL, "only one file at a time!");
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       file = path(cp, TFILE);
-                                       continue;
-                               case FILTSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       filter = getcpy(etcpath(cp));
-                                       mime = 0;
-                                       continue;
-                               case FORMSW:
-                                       if (!(form = *argp++) || *form == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       continue;
-
-                               case FRMTSW:
-                                       filter = getcpy(etcpath(mhlreply));
-                                       mime = 0;
-                                       continue;
-                               case NFRMTSW:
-                                       filter = NULL;
-                                       continue;
-
-                               case INPLSW:
-                                       inplace++;
-                                       continue;
-                               case NINPLSW:
-                                       inplace = 0;
-                                       continue;
-
-                               case MIMESW:
-                                       mime++;
-                                       filter = NULL;
-                                       continue;
-                               case NMIMESW:
-                                       mime = 0;
-                                       continue;
-
-                               case QURYSW:
-                                       querysw++;
-                                       continue;
-                               case NQURYSW:
-                                       querysw = 0;
-                                       continue;
-
-                               case WIDTHSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       if ((outputlinelen = atoi(cp)) < 10)
-                                               adios(NULL, "impossible width %d", outputlinelen);
-                                       continue;
+                       case NWHATSW:
+                               nwhat++;
+                               continue;
+
+                       case FILESW:
+                               if (file)
+                                       adios(NULL, "only one file at a time!");
+                               if (!(cp = *argp++) || *cp == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               file = getcpy(expanddir(cp));
+                               continue;
+                       case FILTSW:
+                               if (!(cp = *argp++) || *cp == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               filter = getcpy(etcpath(cp));
+                               mime = 0;
+                               continue;
+                       case FORMSW:
+                               if (!(form = *argp++) || *form == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               continue;
+
+                       case FRMTSW:
+                               filter = getcpy(etcpath(mhlreply));
+                               mime = 0;
+                               continue;
+                       case NFRMTSW:
+                               filter = NULL;
+                               continue;
+
+                       case MIMESW:
+                               mime++;
+                               filter = NULL;
+                               continue;
+                       case NMIMESW:
+                               mime = 0;
+                               continue;
+
+                       case QURYSW:
+                               querysw++;
+                               continue;
+                       case NQURYSW:
+                               querysw = 0;
+                               continue;
+
                        }
                }
                if (*cp == '+' || *cp == '@') {
                        if (folder)
                                adios(NULL, "only one folder at a time!");
                        else
-                               folder = pluspath(cp);
+                               folder = getcpy(expandfol(cp));
                } else {
                        if (msg)
                                adios(NULL, "only one message at a time!");
@@ -286,16 +256,14 @@ main(int argc, char **argv)
 
        cwd = getcpy(pwd());
 
-       if (!context_find("path"))
-               free(path("./", TFOLDER));
        if (file && (msg || folder))
                adios(NULL, "can't mix files and folders/msgs");
 
 #ifdef MHE
-       strncpy(drft, buildsw ? m_maildir("reply")
-               : m_draft("new"), sizeof(drft));
+       strncpy(drft, buildsw ? toabsdir("reply")
+               : m_draft(seq_beyond), sizeof(drft));
 #else
-       strncpy(drft, m_draft("new"), sizeof(drft));
+       strncpy(drft, m_draft(seq_beyond), sizeof(drft));
 #endif /* MHE */
 
        if (file) {
@@ -308,10 +276,10 @@ main(int argc, char **argv)
                ** We are replying to a message.
                */
                if (!msg)
-                       msg = "cur";
+                       msg = seq_cur;
                if (!folder)
-                       folder = getfolder(1);
-               maildir = m_maildir(folder);
+                       folder = getcurfol();
+               maildir = toabsdir(folder);
 
                if (chdir(maildir) == NOTOK)
                        adios(maildir, "unable to change directory to");
@@ -332,7 +300,7 @@ main(int argc, char **argv)
                if (mp->numsel > 1)
                        adios(NULL, "only one message at a time!");
 
-               context_replace(pfolder, folder);  /* update current folder */
+               context_replace(curfolder, folder); /* update current folder */
                seq_setcur(mp, mp->lowsel);  /* update current message  */
                seq_save(mp);  /* synchronize sequences   */
                context_save();  /* save the context file   */
@@ -351,13 +319,13 @@ main(int argc, char **argv)
                        form = etcpath(replcomps);
        }
 
-       replout(in, msg, drft, mp, outputlinelen, mime, form, filter, fcc);
+       replout(in, msg, drft, mp, mime, form, filter);
        fclose(in);
 
        if (nwhat)
                done(0);
        what_now(ed, nedit, NOUSE, drft, msg, 0, mp, anot ? "Replied" : NULL,
-                       inplace, cwd);
+                       cwd);
        done(1);
        return 1;
 }
@@ -366,27 +334,26 @@ void
 docc(char *cp, int ccflag)
 {
        switch (smatch(cp, ccswitches)) {
-               case AMBIGSW:
-                       ambigsw(cp, ccswitches);
-                       done(1);
-               case UNKWNSW:
-                       adios(NULL, "-%scc %s unknown", ccflag ? "" : "no",
-                                       cp);
-
-               case CTOSW:
-                       ccto = ccflag;
-                       break;
-
-               case CCCSW:
-                       cccc = ccflag;
-                       break;
-
-               case CMESW:
-                       ccme = ccflag;
-                       break;
-
-               case CALSW:
-                       ccto = cccc = ccme = ccflag;
-                       break;
+       case AMBIGSW:
+               ambigsw(cp, ccswitches);
+               done(1);
+       case UNKWNSW:
+               adios(NULL, "-%scc %s unknown", ccflag ? "" : "no", cp);
+
+       case CTOSW:
+               ccto = ccflag;
+               break;
+
+       case CCCSW:
+               cccc = ccflag;
+               break;
+
+       case CMESW:
+               ccme = ccflag;
+               break;
+
+       case CALSW:
+               ccto = cccc = ccme = ccflag;
+               break;
        }
 }