X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fshow.c;h=1acaf70eed5208587ba358a00fe37846eef16676;hp=b19f7627092d6ba009aacb8f3ff5028f9be14acf;hb=84c6039eb7226c0ba0a8f708205e33d10950d2ae;hpb=240013872c392fe644bd4f79382d9f5314b4ea60 diff --git a/uip/show.c b/uip/show.c index b19f762..1acaf70 100644 --- a/uip/show.c +++ b/uip/show.c @@ -33,13 +33,11 @@ static struct swit switches[] = { { "showproc program", 0 }, #define SHOWMIMESW 10 { "showmimeproc program", 0 }, -#define NSHOWSW 11 - { "noshowproc", 0 }, -#define FILESW 12 +#define FILESW 11 { "file file", -4 }, /* interface from showfile */ -#define VERSIONSW 13 +#define VERSIONSW 12 { "version", 0 }, -#define HELPSW 14 +#define HELPSW 13 { "help", 0 }, { NULL, 0 } }; @@ -61,7 +59,7 @@ int main(int argc, char **argv) { int headersw = 1, msgp = 0; - int nshow = 0, checkmime = 1, mime; + int checkmime = 1, mime; int vecp = 1, procp = 1, mode = SHOW, msgnum; char *cp, *maildir, *file = NULL, *folder = NULL, *proc; char buf[BUFSIZ], **argp, **arguments; @@ -87,84 +85,84 @@ main(int argc, char **argv) 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]); + continue; + + case SHOWMIMESW: + if (!(showmimeproc = *argp++) || + *showmimeproc == '-') + adios(NULL, "missing argument to %s", + argp[-2]); + 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 { @@ -173,9 +171,6 @@ usage: } procp = vecp; - if (!context_find("path")) - free(path("./", TFOLDER)); - if (file) { if (msgp) adios(NULL, "only one file at a time!"); @@ -193,21 +188,21 @@ usage: 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(1); - maildir = m_maildir(folder); + folder = getcurfol(); + maildir = toabsdir(folder); if (chdir(maildir) == NOTOK) adios(maildir, "unable to change directory to"); @@ -235,7 +230,7 @@ usage: 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", @@ -247,7 +242,7 @@ usage: 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) @@ -262,55 +257,36 @@ go_to_it: ; ** 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 (!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 for MIME */ - if (is_nontext(vec[vecp - 1])) + /* check if any messages are non-text MIME messages */ + if (checkmime) { + 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 for MIME */ + if (is_nontext(vec[vecp - 1])) + mime = 1; } - - /* Set the "proc" */ - if (mime) - proc = showmimeproc; - else - proc = showproc; } + /* Set the "proc" */ + if (mime) + proc = showmimeproc; + else + proc = showproc; + if (folder && !file) m_putenv("mhfolder", folder); - /* - ** For backward compatibility, if the "proc" is mhn, - ** then add "-show" option. Add "-file" if showing - ** file. - */ - if (strcmp(mhbasename(proc), "mhn") == 0) { - if (file) { - vec[vecp] = vec[vecp - 1]; - vec[vecp - 1] = "-file"; - vecp++; - } - vec[vecp++] = "-show"; - vec[vecp] = NULL; - } - /* If the "proc" is "mhshow", add "-file" if showing file. */ if (strcmp(mhbasename(proc), "mhshow") == 0 && file ) { vec[vecp] = vec[vecp - 1]; @@ -330,17 +306,16 @@ go_to_it: ; /* ** 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. + ** add the path to the message names. */ - 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); } @@ -378,7 +353,7 @@ is_nontext(char *msgnam) int passno; char c; - cp = add(buf, NULL); + cp = getcpy(buf); while (state == FLDPLUS) { state = m_getfld(state, name, buf, sizeof(buf), fp); @@ -484,7 +459,7 @@ out: ** 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);