{ "noheader", 0 },
#define FORMSW 4
{ "form formfile", 0 },
-#define PROGSW 5
- { "moreproc program", 0 },
-#define NPROGSW 6
- { "nomoreproc", 0 },
-#define LENSW 7
- { "length lines", 0 },
-#define WIDTHSW 8
- { "width columns", 0 },
-#define SHOWSW 9
+#define SHOWSW 5
{ "showproc program", 0 },
-#define SHOWMIMESW 10
+#define SHOWMIMESW 6
{ "showmimeproc program", 0 },
-#define FILESW 11
- { "file file", -4 }, /* interface from showfile */
-#define VERSIONSW 12
+#define FILESW 7
+ { "file file", -4 }, /* interface from whatnow (listproc) */
+#define VERSIONSW 8
{ "version", 0 },
-#define HELPSW 13
+#define HELPSW 9
{ "help", 0 },
{ NULL, 0 }
};
#define NEXT 1
#define PREV 2
+char *showproc = "mhl";
+char *showmimeproc = "mhshow";
int
main(int argc, char **argv)
ambigsw(cp, switches);
done(1);
case UNKWNSW:
- case NPROGSW:
vec[vecp++] = --cp;
continue;
vec[vecp++] = getcpy(etcpath(cp));
continue;
- case PROGSW:
- case LENSW:
- case WIDTHSW:
- vec[vecp++] = --cp;
- if (!(cp = *argp++) || *cp == '-')
- adios(NULL, "missing argument to %s",
- argp[-2]);
- vec[vecp++] = cp;
- continue;
-
case SHOWSW:
if (!(showproc = *argp++) || *showproc == '-')
adios(NULL, "missing argument to %s",
mime = 0;
/* check if any messages are non-text MIME messages */
if (checkmime) {
- if (!file) {
+ if (file) {
+ /* check the file for MIME */
+ if (is_nontext(vec[vecp - 1])) {
+ mime = 1;
+ }
+ } else {
/*
** loop through selected messages
** and check for MIME
*/
- for (msgnum = mp->lowsel;
- msgnum <= mp->hghsel;
+ for (msgnum = mp->lowsel; msgnum <= mp->hghsel;
msgnum++)
- if (is_selected(mp, msgnum) && is_nontext(m_name(msgnum))) {
+ if (is_selected(mp, msgnum) &&
+ is_nontext(m_name(msgnum))) {
mime = 1;
break;
}
- } else {
- /* check the file for MIME */
- if (is_nontext(vec[vecp - 1]))
- mime = 1;
}
}
/* 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;
+ /* 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");
}
/* Add the path to the message names. */
** Check Content-Type field
*/
if (!mh_strcasecmp(name, TYPE_FIELD)) {
- int passno;
+ int passno = 1;
char c;
cp = getcpy(buf);
cp = add(buf, cp);
}
bp = cp;
- passno = 1;
again:
for (; isspace(*bp); bp++)
*dp = '\0';
if (!*bp)
goto invalid;
- if (passno > 1) {
+ if (passno == 1) {
+ if (!(result = (mh_strcasecmp(bp, "text") != 0))) {
+ *dp = c;
+ bp = dp;
+ passno = 2;
+ goto again;
+ }
+ } else {
if ((result = (mh_strcasecmp(bp,
"plain") != 0)))
goto out;
}
/* Check the character set */
result = !check_charset(dp, strlen(dp));
- } else {
- if (!(result = (mh_strcasecmp(bp, "text") != 0))) {
- *dp = c;
- bp = dp;
- passno = 2;
- goto again;
- }
}
out:
free(cp);