X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frepl.c;h=cc8a86b9bda2e7e1ba9d27e413c12e47102bab2c;hb=ab3e934551e83f49a04975b05c11c1b3d5768642;hp=67155fa5db55f8058ef4074a06c16f202b010e28;hpb=3c9700d8d045f3ff26ce5dd2a174454dafc14822;p=mmh diff --git a/uip/repl.c b/uip/repl.c index 67155fa..cc8a86b 100644 --- a/uip/repl.c +++ b/uip/repl.c @@ -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 +#include static struct swit switches[] = { @@ -62,14 +65,19 @@ static struct swit switches[] = { #define VERSIONSW 25 { "version", 0 }, #define HELPSW 26 - { "help", 4 }, + { "help", 0 }, #define FILESW 27 - { "file file", -4 }, /* interface from msh */ - -#ifdef MHE + { "file file", 4 }, /* interface from msh */ #define BILDSW 28 - { "build", -5 }, /* interface from mhe */ -#endif + { "build", 5 }, /* interface from mhe */ +#define ATFILESW 29 + { "atfile", 0 }, +#define NOATFILESW 30 + { "noatfile", 0 }, +#define FMTPROCSW 31 + { "fmtproc program", 0 }, +#define NFMTPROCSW 32 + { "nofmtproc", 0 }, { NULL, 0 } }; @@ -108,9 +116,9 @@ static struct swit aqrl[] = { { NULL, 0 } }; -short ccto = 1; /* global for replsbr */ -short cccc = 1; -short ccme = 1; +short ccto = -1; /* global for replsbr */ +short cccc = -1; +short ccme = -1; short querysw = 0; short outputlinelen = OUTPUTLINELEN; @@ -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!"); @@ -323,6 +345,13 @@ main (int argc, char **argv) } } + if (ccto == -1) + ccto = groupreply; + if (cccc == -1) + cccc = groupreply; + if (ccme == -1) + ccme = groupreply; + cwd = getcpy (pwd ()); if (!context_find ("path")) @@ -332,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))) @@ -423,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