X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fshow.c;h=671a4419eccd3d4a73fb7a69550bf730f61191d5;hp=f536af7cfb02da047558b7993a9966a04de96530;hb=3cc8ed080f6e741b8df04a3ebe764c659e75cb38;hpb=c20b4fa14515c7ab388ce35411d89a7a92300711 diff --git a/uip/show.c b/uip/show.c index f536af7..671a441 100644 --- a/uip/show.c +++ b/uip/show.c @@ -71,7 +71,7 @@ main(int argc, char **argv) #ifdef LOCALE setlocale(LC_ALL, ""); #endif - invo_name = r1bindex(argv[0], '/'); + invo_name = mhbasename(argv[0]); /* read user profile/context */ context_read(); @@ -87,84 +87,89 @@ 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]); + 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 { @@ -173,9 +178,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 +195,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 +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", @@ -247,7 +249,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) @@ -301,7 +303,7 @@ go_to_it: ; ** then add "-show" option. Add "-file" if showing ** file. */ - if (strcmp(r1bindex(proc, '/'), "mhn") == 0) { + if (strcmp(mhbasename(proc), "mhn") == 0) { if (file) { vec[vecp] = vec[vecp - 1]; vec[vecp - 1] = "-file"; @@ -312,7 +314,7 @@ go_to_it: ; } /* If the "proc" is "mhshow", add "-file" if showing file. */ - if (strcmp(r1bindex(proc, '/'), "mhshow") == 0 && file ) { + if (strcmp(mhbasename(proc), "mhshow") == 0 && file ) { vec[vecp] = vec[vecp - 1]; vec[vecp - 1] = "-file"; vec[++vecp] = NULL; @@ -322,7 +324,7 @@ go_to_it: ; ** If "proc" is mhl, then run it internally ** rather than exec'ing it. */ - if (strcmp(r1bindex(proc, '/'), "mhl") == 0) { + if (strcmp(mhbasename(proc), "mhl") == 0) { vec[0] = "mhl"; mhl(vecp, vec); done(0); @@ -333,10 +335,10 @@ 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(r1bindex(proc, '/'), "mhl") + if (!strcmp(mhbasename(proc), "mhl") && !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) @@ -345,7 +347,7 @@ go_to_it: ; vec[msgnum] = concat(cp, vec[msgnum], NULL); } - vec[0] = r1bindex(proc, '/'); + vec[0] = mhbasename(proc); execvp(proc, vec); adios(proc, "unable to exec"); return 0; /* dead code to satisfy the compiler */ @@ -378,7 +380,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 +486,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);