X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fshow.c;h=e7ecb72d7259e316b193419cb8cdc7d944d33832;hb=8ff284ff9167eff8f5349481529332d59ed913b1;hp=757b0018e337f9b6806df3ff82e697ac7658b4c1;hpb=682962d94b21e120c78a52a8bdcb6aa994330a14;p=mmh diff --git a/uip/show.c b/uip/show.c index 757b001..e7ecb72 100644 --- a/uip/show.c +++ b/uip/show.c @@ -87,77 +87,82 @@ 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 = 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; + 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 == '@') { @@ -190,15 +195,15 @@ 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; } } @@ -232,7 +237,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", @@ -330,14 +335,14 @@ go_to_it: ; ** 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(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); }