/*
* 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[] = {
#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 }
};
{ NULL, 0 }
};
-short ccto = 0; /* global for replsbr */
-short cccc = 0;
-short ccme = 0;
+short ccto = -1; /* global for replsbr */
+short cccc = -1;
+short ccme = -1;
short querysw = 0;
short outputlinelen = OUTPUTLINELEN;
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];
struct stat st;
FILE *in;
-#ifdef MHE
int buildsw = 0;
-#endif /* MHE */
#ifdef LOCALE
setlocale(LC_ALL, "");
done (0);
case VERSIONSW:
print_version(invo_name);
- done (1);
+ done (0);
case GROUPSW:
groupreply++;
- ccto = cccc = ccme = 1;
continue;
case NGROUPSW:
groupreply = 0;
- ccto = cccc = ccme = 0;
continue;
case ANNOSW:
adios (NULL, "missing argument to %s", argp[-2]);
nwhat = 0;
continue;
-#ifdef MHE
case BILDSW:
buildsw++; /* fall... */
-#endif /* MHE */
case NWHATSW:
nwhat++;
continue;
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!");
}
}
+ if (ccto == -1)
+ ccto = groupreply;
+ if (cccc == -1)
+ cccc = groupreply;
+ if (ccme == -1)
+ ccme = groupreply;
+
cwd = getcpy (pwd ());
if (!context_find ("path"))
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)))
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