while ((cp = *argp++)) {
if (*cp == '-') {
switch (smatch(++cp, switches)) {
- case AMBIGSW:
- ambigsw(cp, switches);
- done(1);
- case UNKWNSW:
- case NPROGSW:
- vec[vecp++] = --cp;
- continue;
-
- case HELPSW:
- 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 FILESW:
- if (mode != SHOW)
+ case AMBIGSW:
+ ambigsw(cp, switches);
+ done(1);
+ case UNKWNSW:
+ case NPROGSW:
+ vec[vecp++] = --cp;
+ continue;
+
+ case HELPSW:
+ 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 FILESW:
+ if (mode != SHOW)
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]);
- file = path(cp, TFILE);
- continue;
-
- case HEADSW:
- headersw++;
- continue;
- case NHEADSW:
- headersw = 0;
- continue;
-
- case FORMSW:
- vec[vecp++] = --cp;
- if (!(cp = *argp++) || *cp == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
- 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", argp[-2]);
- nshow = 0;
- continue;
- case NSHOWSW:
- nshow++;
- continue;
-
- case SHOWMIMESW:
- if (!(showmimeproc = *argp++) || *showmimeproc == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
- nshow = 0;
- continue;
- case CHECKMIMESW:
- checkmime++;
- continue;
- case NOCHECKMIMESW:
- checkmime = 0;
- continue;
+ 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]);
+ file = getcpy(expanddir(cp));
+ continue;
+
+ case HEADSW:
+ headersw++;
+ continue;
+ case NHEADSW:
+ headersw = 0;
+ continue;
+
+ case FORMSW:
+ vec[vecp++] = --cp;
+ if (!(cp = *argp++) || *cp == '-')
+ adios(NULL, "missing argument to %s",
+ argp[-2]);
+ 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",
+ argp[-2]);
+ nshow = 0;
+ continue;
+ case NSHOWSW:
+ nshow++;
+ continue;
+
+ case SHOWMIMESW:
+ if (!(showmimeproc = *argp++) ||
+ *showmimeproc == '-')
+ adios(NULL, "missing argument to %s",
+ argp[-2]);
+ nshow = 0;
+ continue;
+ case CHECKMIMESW:
+ checkmime++;
+ continue;
+ case NOCHECKMIMESW:
+ checkmime = 0;
+ continue;
}
}
if (*cp == '+' || *cp == '@') {
if (folder)
adios(NULL, "only one folder at a time!");
else
- folder = pluspath(cp);
+ folder = getcpy(expandfol(cp));
} else if (mode != SHOW) {
goto usage;
} else {
if (!msgp) {
switch (mode) {
- case NEXT:
- msgs[msgp++] = "next";
- break;
- case PREV:
- msgs[msgp++] = "prev";
- break;
- default:
- msgs[msgp++] = "cur";
- break;
+ case NEXT:
+ msgs[msgp++] = seq_next;
+ break;
+ case PREV:
+ msgs[msgp++] = seq_prev;
+ break;
+ default:
+ msgs[msgp++] = seq_cur;
+ break;
}
}
if (!folder)
- folder = getfolder(FCUR);
- maildir = m_maildir(folder);
+ folder = getcurfol();
+ maildir = toabsdir(folder);
if (chdir(maildir) == NOTOK)
adios(maildir, "unable to change directory to");
set_unseen(mp, msgnum);
seq_setprev(mp); /* set the Previous-Sequence */
- seq_setunseen(mp, 1); /* unset the Unseen-Sequence */
+ seq_setunseen(mp, 0); /* unset unseen seqs for shown msgs */
if (mp->numsel > MAXARGS - 2)
adios(NULL, "more than %d messages for show exec",
seq_setcur(mp, mp->hghsel); /* update current message */
seq_save(mp); /* synchronize sequences */
- context_replace(pfolder, folder); /* update current folder */
+ context_replace(curfolder, folder); /* update current folder */
context_save(); /* save the context file */
if (headersw && vecp == 2)
** 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(mhbasename(proc), "mhl")
+ if (strcmp(mhbasename(proc), "mhl")==0
&& !file
&& chdir(maildir =
- concat(m_maildir(""), "/", NULL)) != NOTOK) {
+ concat(toabsdir("+"), "/", NULL)) != NOTOK) {
mp->foldpath = concat(mp->foldpath, "/", NULL);
- cp = isprefix(maildir, mp->foldpath)
- ? mp->foldpath + strlen(maildir)
- : mp->foldpath;
+ 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);
}
int passno;
char c;
- cp = add(buf, NULL);
+ cp = getcpy(buf);
while (state == FLDPLUS) {
state = m_getfld(state, name, buf,
sizeof(buf), fp);
** Check Content-Transfer-Encoding field
*/
if (!mh_strcasecmp(name, ENCODING_FIELD)) {
- cp = add(buf, NULL);
+ cp = getcpy(buf);
while (state == FLDPLUS) {
state = m_getfld(state, name, buf,
sizeof(buf), fp);