X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhlist.c;fp=uip%2Fmhlist.c;h=c4682b4adc93b594924c2d89989321d356b514be;hp=ceb9336cc09b40d0c6f45f3470880d68357280e8;hb=cf1205b5cbea2f0cd6ea710ec16c637df85b647c;hpb=d254c5e2ad008f26d5fda43c3f24f0a711c7e851 diff --git a/uip/mhlist.c b/uip/mhlist.c index ceb9336..c4682b4 100644 --- a/uip/mhlist.c +++ b/uip/mhlist.c @@ -18,6 +18,7 @@ #include #include #include +#include static struct swit switches[] = { #define VERBSW 0 @@ -96,7 +97,7 @@ main(int argc, char **argv) CT ct, *ctp; if (atexit(freects_done) != 0) { - adios(NULL, "atexit failed"); + adios(EX_OSERR, NULL, "atexit failed"); } setlocale(LC_ALL, ""); @@ -116,39 +117,39 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - exit(1); + exit(EX_USAGE); case UNKWNSW: - adios(NULL, "-%s unknown", cp); + adios(EX_USAGE, NULL, "-%s unknown", cp); case HELPSW: snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name); print_help(buf, switches, 1); - exit(0); + exit(argc == 2 ? EX_OK : EX_USAGE); case VERSIONSW: print_version(invo_name); - exit(0); + exit(argc == 2 ? EX_OK : EX_USAGE); case PARTSW: if (!(cp = *argp++) || *cp == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); if (npart >= NPARTS) - adios(NULL, "too many parts (starting with %s), %d max", cp, NPARTS); + adios(EX_USAGE, NULL, "too many parts (starting with %s), %d max", cp, NPARTS); parts[npart++] = cp; continue; case TYPESW: if (!(cp = *argp++) || *cp == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); if (ntype >= NTYPES) - adios(NULL, "too many types (starting with %s), %d max", cp, NTYPES); + adios(EX_USAGE, NULL, "too many types (starting with %s), %d max", cp, NTYPES); types[ntype++] = cp; continue; case FILESW: if (!(cp = *argp++) || (*cp == '-' && cp[1])) - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); file = *cp == '-' ? cp : getcpy(expanddir(cp)); continue; @@ -166,7 +167,7 @@ main(int argc, char **argv) } if (*cp == '+' || *cp == '@') { if (folder) - adios(NULL, "only one folder at a time!"); + adios(EX_USAGE, NULL, "only one folder at a time!"); else folder = getcpy(expandfol(cp)); } else @@ -190,14 +191,14 @@ main(int argc, char **argv) tmp = getcpy(toabsdir(invo_name)); if (file && msgs.size) - adios(NULL, "cannot specify msg and file at same time!"); + adios(EX_USAGE, NULL, "cannot specify msg and file at same time!"); /* ** check if message is coming from file */ if (file) { if (!(cts = (CT *) calloc((size_t) 2, sizeof(*cts)))) - adios(NULL, "out of memory"); + adios(EX_OSERR, NULL, "out of memory"); ctp = cts; if ((ct = parse_mime(file))) @@ -213,28 +214,27 @@ main(int argc, char **argv) maildir = toabsdir(folder); if (chdir(maildir) == NOTOK) - adios(maildir, "unable to change directory to"); + adios(EX_OSERR, maildir, "unable to change directory to"); /* read folder and create message structure */ if (!(mp = folder_read(folder))) - adios(NULL, "unable to read folder %s", folder); + adios(EX_IOERR, NULL, "unable to read folder %s", folder); /* check for empty folder */ if (mp->nummsg == 0) - adios(NULL, "no messages in %s", folder); + adios(EX_DATAERR, NULL, "no messages in %s", folder); /* parse all the message ranges/sequences and set SELECTED */ for (msgnum = 0; msgnum < msgs.size; msgnum++) { if (!m_convert(mp, msgs.msgs[msgnum])) { - /* sysexits.h EX_USAGE */ - exit(1); + exit(EX_SOFTWARE); } } seq_setprev(mp); /* set the previous-sequence */ if (!(cts = (CT *) calloc((size_t) (mp->numsel + 1), sizeof(*cts)))) - adios(NULL, "out of memory"); + adios(EX_OSERR, NULL, "out of memory"); ctp = cts; for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) { @@ -249,7 +249,7 @@ main(int argc, char **argv) } if (!*cts) - exit(1); + exit(EX_SOFTWARE); userrs = 1; SIGNAL(SIGQUIT, quitser); @@ -290,7 +290,7 @@ main(int argc, char **argv) context_save(); /* save the context file */ } - return 0; + return EX_OK; } @@ -304,6 +304,6 @@ pipeser(int i) fflush(stderr); } - exit(1); + _exit(EX_IOERR); /* NOTREACHED */ }