/*
- * show.c -- show/list messages
- *
- * 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.
- */
+** show.c -- show/list messages
+**
+** 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/mime.h>
{ "showmimeproc program", 0 },
#define NSHOWSW 11
{ "noshowproc", 0 },
-#define DRFTSW 12
- { "draft", 0 },
-#define FILESW 13
+#define FILESW 12
{ "file file", -4 }, /* interface from showfile */
-#define VERSIONSW 14
+#define VERSIONSW 13
{ "version", 0 },
-#define HELPSW 15
+#define HELPSW 14
{ "help", 0 },
{ NULL, 0 }
};
/*
- * static prototypes
- */
+** static prototypes
+*/
static int is_nontext(char *);
/* prototype from mhlsbr.c */
int
main (int argc, char **argv)
{
- int draftsw = 0, headersw = 1, msgp = 0;
+ int headersw = 1, msgp = 0;
int nshow = 0, checkmime = 1, mime;
- int vecp = 1, procp = 1, isdf = 0, mode = SHOW, msgnum;
+ int vecp = 1, procp = 1, mode = SHOW, msgnum;
char *cp, *maildir, *file = NULL, *folder = NULL, *proc;
char buf[BUFSIZ], **argp, **arguments;
char *msgs[MAXARGS], *vec[MAXARGS];
continue;
case HELPSW:
- snprintf (buf, sizeof(buf),
- "%s [+folder] %s[switches] [switches for showproc]",
- invo_name, mode == SHOW ? "[msgs] ": "");
+ snprintf (buf, sizeof(buf), "%s [+folder] %s[switches] [switches for showproc]", invo_name, mode == SHOW ? "[msgs] ": "");
print_help (buf, switches, 1);
done (1);
case VERSIONSW:
print_version(invo_name);
done (1);
- case DRFTSW:
- if (file)
- adios (NULL, "only one file at a time!");
- draftsw++;
- if (mode == SHOW)
- continue;
-usage:
- adios (NULL,
- "usage: %s [+folder] [switches] [switches for showproc]",
- invo_name);
case FILESW:
if (mode != SHOW)
- goto usage;
- if (draftsw || file)
+usage:
+ adios (NULL, "usage: %s [+folder] [switches] [switches for showproc]", invo_name);
+
+ if (file)
adios (NULL, "only one file at a time!");
if (!(cp = *argp++) || *cp == '-')
adios (NULL, "missing argument to %s", argp[-2]);
adios (NULL, "only one folder at a time!");
else
folder = pluspath (cp);
+ } else if (mode != SHOW) {
+ goto usage;
} else {
- if (mode != SHOW)
- goto usage;
- else
- msgs[msgp++] = cp;
+ msgs[msgp++] = cp;
}
}
procp = vecp;
if (!context_find ("path"))
free (path ("./", TFOLDER));
- if (draftsw || file) {
+ if (file) {
if (msgp)
adios (NULL, "only one file at a time!");
- vec[vecp++] = draftsw
- ? getcpy (m_draft (folder, msgp ? msgs[0] : NULL, 1, &isdf))
- : file;
+ vec[vecp++] = file;
goto go_to_it;
}
#ifdef WHATNOW
- if (!msgp && !folder && mode == SHOW && (cp = getenv ("mhdraft")) && *cp) {
- draftsw++;
+ if (!msgp && !folder && mode == SHOW &&
+ (cp = getenv ("mhdraft")) && *cp) {
vec[vecp++] = cp;
goto go_to_it;
}
done (1);
/*
- * Set the SELECT_UNSEEN bit for all the SELECTED messages,
- * since we will use that as a tag to know which messages
- * to remove from the "unseen" sequence.
- */
+ ** Set the SELECT_UNSEEN bit for all the SELECTED messages,
+ ** since we will use that as a tag to know which messages
+ ** to remove from the "unseen" sequence.
+ */
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
if (is_selected(mp, msgnum))
set_unseen (mp, msgnum);
seq_setunseen (mp, 1); /* unset the Unseen-Sequence */
if (mp->numsel > MAXARGS - 2)
- adios (NULL, "more than %d messages for show exec", MAXARGS - 2);
+ adios (NULL, "more than %d messages for show exec",
+ MAXARGS - 2);
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
if (is_selected(mp, msgnum))
vec[vecp] = NULL;
/*
- * Decide which "proc" to use
- */
+ ** Decide which "proc" to use
+ */
mime = 0;
if (nshow) {
proc = catproc;
} else {
/* check if any messages are non-text MIME messages */
if (checkmime && !getenv ("NOMHNPROC")) {
- if (!draftsw && !file) {
- /* loop through selected messages and check for MIME */
- for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
+ if (!file) {
+ /*
+ ** loop through selected messages
+ ** and check for MIME
+ */
+ for (msgnum = mp->lowsel;
+ msgnum <= mp->hghsel;
+ msgnum++)
if (is_selected (mp, msgnum) && is_nontext (m_name (msgnum))) {
mime = 1;
break;
}
} else {
- /* check the file or draft for MIME */
+ /* check the file for MIME */
if (is_nontext (vec[vecp - 1]))
mime = 1;
}
proc = showproc;
}
- if (folder && !draftsw && !file)
+ if (folder && !file)
m_putenv ("mhfolder", folder);
/*
- * For backward compatibility, if the "proc" is mhn,
- * then add "-show" option. Add "-file" if showing
- * file or draft.
- */
+ ** For backward compatibility, if the "proc" is mhn,
+ ** then add "-show" option. Add "-file" if showing
+ ** file.
+ */
if (strcmp (r1bindex (proc, '/'), "mhn") == 0) {
- if (draftsw || file) {
+ if (file) {
vec[vecp] = vec[vecp - 1];
vec[vecp - 1] = "-file";
vecp++;
vec[vecp] = NULL;
}
- /* If the "proc" is "mhshow", add "-file" if showing file or draft.
- */
- if (strcmp (r1bindex (proc, '/'), "mhshow") == 0 && (draftsw || file) ) {
+ /* If the "proc" is "mhshow", add "-file" if showing file. */
+ if (strcmp (r1bindex (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 "proc" is mhl, then run it internally
+ ** rather than exec'ing it.
+ */
if (strcmp (r1bindex (proc, '/'), "mhl") == 0) {
vec[0] = "mhl";
mhl (vecp, vec);
}
/*
- * If you are not using a nmh command as your "proc", then
- * add the path to the message names. Currently, we are just
- * checking for mhn here, since we've already taken care of mhl.
- */
+ ** If you are not using a nmh command as your "proc", then
+ ** add the path to the message names. Currently, we are just
+ ** checking for mhn here, since we've already taken care of mhl.
+ */
if (!strcmp (r1bindex (proc, '/'), "mhl")
- && !draftsw
&& !file
- && chdir (maildir = concat (m_maildir (""), "/", NULL)) != NOTOK) {
+ && chdir (maildir =
+ concat (m_maildir (""), "/", NULL)) != NOTOK) {
mp->foldpath = concat (mp->foldpath, "/", NULL);
cp = ssequal (maildir, mp->foldpath)
? mp->foldpath + strlen (maildir)
}
/*
- * Check if a message or file contains any non-text parts
- */
+** Check if a message or file contains any non-text parts
+*/
static int
is_nontext (char *msgnam)
{
case FLDPLUS:
case FLDEOF:
/*
- * Check Content-Type field
- */
+ ** Check Content-Type field
+ */
if (!mh_strcasecmp (name, TYPE_FIELD)) {
int passno;
char c;
cp = add (buf, NULL);
while (state == FLDPLUS) {
- state = m_getfld (state, name, buf, sizeof(buf), fp);
+ state = m_getfld (state, name, buf,
+ sizeof(buf), fp);
cp = add (buf, cp);
}
bp = cp;
if (!*bp)
goto invalid;
if (passno > 1) {
- if ((result = (mh_strcasecmp (bp, "plain") != 0)))
+ if ((result = (mh_strcasecmp (bp,
+ "plain") != 0)))
goto out;
*dp = c;
for (dp++; isspace (*dp); dp++)
continue;
if (*dp) {
- if ((result = !uprf (dp, "charset")))
+ if ((result = !uprf (dp,
+ "charset")))
goto out;
dp += sizeof("charset") - 1;
while (isspace (*dp))
}
/*
- * Check Content-Transfer-Encoding field
- */
+ ** Check Content-Transfer-Encoding field
+ */
if (!mh_strcasecmp (name, ENCODING_FIELD)) {
cp = add (buf, NULL);
while (state == FLDPLUS) {
}
/*
- * Just skip the rest of this header
- * field and go to next one.
- */
+ ** Just skip the rest of this header
+ ** field and go to next one.
+ */
while (state == FLDPLUS)
- state = m_getfld (state, name, buf, sizeof(buf), fp);
+ state = m_getfld(state, name, buf, sizeof(buf),
+ fp);
break;
/*
- * We've passed the message header,
- * so message is just text.
- */
+ ** We've passed the message header,
+ ** so message is just text.
+ */
default:
fclose (fp);
return 0;