{ "form formfile", 0 },
#define PROGSW 5
{ "moreproc program", 0 },
-#define NPROGSW 6
- { "nomoreproc", 0 },
-#define LENSW 7
+#define LENSW 6
{ "length lines", 0 },
-#define WIDTHSW 8
+#define WIDTHSW 7
{ "width columns", 0 },
-#define SHOWSW 9
+#define SHOWSW 8
{ "showproc program", 0 },
-#define SHOWMIMESW 10
+#define SHOWMIMESW 9
{ "showmimeproc program", 0 },
-#define FILESW 11
+#define FILESW 10
{ "file file", -4 }, /* interface from showfile */
-#define VERSIONSW 12
+#define VERSIONSW 11
{ "version", 0 },
-#define HELPSW 13
+#define HELPSW 12
{ "help", 0 },
{ NULL, 0 }
};
*/
static int is_nontext(char *);
-/* prototype from mhlsbr.c */
-int mhl(int, char **);
-
#define SHOW 0
#define NEXT 1
#define PREV 2
int headersw = 1, msgp = 0;
int checkmime = 1, mime;
int vecp = 1, procp = 1, mode = SHOW, msgnum;
- char *cp, *maildir, *file = NULL, *folder = NULL, *proc;
+ char *cp, *file = NULL, *folder = NULL, *proc;
char buf[BUFSIZ], **argp, **arguments;
char *msgs[MAXARGS], *vec[MAXARGS];
struct msgs *mp = NULL;
ambigsw(cp, switches);
done(1);
case UNKWNSW:
- case NPROGSW:
vec[vecp++] = --cp;
continue;
if (!folder)
folder = getcurfol();
- maildir = toabsdir(folder);
-
- if (chdir(maildir) == NOTOK)
- adios(maildir, "unable to change directory to");
/* read folder and create message structure */
if (!(mp = folder_read(folder)))
}
/* Set the "proc" */
- if (mime)
- proc = showmimeproc;
- else
- proc = showproc;
+ proc = (mime) ? showmimeproc : showproc;
if (folder && !file)
m_putenv("mhfolder", folder);
- /* If the "proc" is "mhshow", add "-file" if showing file. */
- if (strcmp(mhbasename(proc), "mhshow") == 0 && file ) {
- vec[vecp] = vec[vecp - 1];
- vec[vecp - 1] = "-file";
- vec[++vecp] = NULL;
- }
-
- /*
- ** If "proc" is mhl, then run it internally
- ** rather than exec'ing it.
- */
- if (strcmp(mhbasename(proc), "mhl") == 0) {
- vec[0] = "mhl";
- mhl(vecp, vec);
- done(0);
+ /* Special-cased because mhshow takes msg not files args. */
+ if (strcmp(mhbasename(proc), "mhshow")==0) {
+ if (file) {
+ vec[vecp] = vec[vecp - 1];
+ vec[vecp - 1] = "-file";
+ vec[++vecp] = NULL;
+ }
+ vec[vecp++] = concat("+", folder, NULL);
+ vec[vecp] = NULL;
+ vec[0] = mhbasename(proc);
+ execvp(proc, vec);
+ adios(proc, "unable to exec");
}
- /*
- ** If you are not using a nmh command as your "proc", then
- ** add the path to the message names.
- */
- if (strcmp(mhbasename(proc), "mhl")==0
- && !file
- && chdir(maildir =
- concat(toabsdir("+"), "/", NULL)) != NOTOK) {
- mp->foldpath = concat(mp->foldpath, "/", NULL);
- cp = (strncmp(mp->foldpath, maildir, strlen(maildir))==0) ?
- mp->foldpath + strlen(maildir) :
- mp->foldpath;
- for (msgnum = procp; msgnum < vecp; msgnum++)
- vec[msgnum] = concat(cp, vec[msgnum], NULL);
+ /* Add the path to the message names. */
+ if (!file) {
+ for (msgnum = procp; msgnum < vecp; msgnum++) {
+ vec[msgnum] = concat(mp->foldpath, "/",
+ vec[msgnum], NULL);
+ }
}
vec[0] = mhbasename(proc);