X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fforw.c;h=c754b2789c66c3c48d79cf5583a600afa1fb0a55;hp=91ce04a8a29f074191885e060bfc753fea883745;hb=cf1205b5cbea2f0cd6ea710ec16c637df85b647c;hpb=d254c5e2ad008f26d5fda43c3f24f0a711c7e851 diff --git a/uip/forw.c b/uip/forw.c index 91ce04a..c754b27 100644 --- a/uip/forw.c +++ b/uip/forw.c @@ -13,6 +13,7 @@ #include #include #include +#include #define IFORMAT "digest-issue-%s" #define VFORMAT "digest-volume-%s" @@ -83,18 +84,17 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - /* sysexits.h EX_USAGE */ - 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 ANNOSW: anot++; @@ -105,14 +105,14 @@ main(int argc, char **argv) case EDITRSW: if (!(ed = *argp++) || *ed == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); continue; case WHATSW: if (!(whatnowproc = *argp++) || *whatnowproc == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); continue; @@ -122,37 +122,37 @@ main(int argc, char **argv) case FORMSW: if (!(form = *argp++) || *form == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); continue; case DGSTSW: if (!(digest = *argp++) || *digest == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); //mime = 0; continue; case ISSUESW: if (!(cp = *argp++) || *cp == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); if ((issue = atoi(cp)) < 1) - adios(NULL, "bad argument %s %s", + adios(EX_USAGE, NULL, "bad argument %s %s", argp[-2], cp); continue; case VOLUMSW: if (!(cp = *argp++) || *cp == '-') - adios(NULL, "missing argument to %s", + adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]); if ((volume = atoi(cp)) < 1) - adios(NULL, "bad argument %s %s", + adios(EX_USAGE, NULL, "bad argument %s %s", argp[-2], cp); continue; } } 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 { @@ -180,27 +180,26 @@ 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 < msgp; msgnum++) { if (!m_convert(mp, msgs[msgnum])) { - /* sysexits.h EX_USAGE */ - exit(1); + exit(EX_SOFTWARE); } } seq_setprev(mp); /* set the previous sequence */ if ((out = creat(drft, m_gmprot())) == NOTOK) - adios(drft, "unable to create"); + adios(EX_CANTCREAT, drft, "unable to create"); /* Open form (component) file. */ if (digest) { @@ -225,7 +224,7 @@ main(int argc, char **argv) } else { fmtstr = new_fs(form, forwcomps); if (write(out, fmtstr, strlen(fmtstr)) != (int)strlen(fmtstr)) { - adios(drft, "error writing"); + adios(EX_IOERR, drft, "error writing"); } } close(out); @@ -247,11 +246,10 @@ main(int argc, char **argv) context_save(); /* save the context file */ if (buildsw) - exit(0); + exit(EX_OK); what_now(ed, NOUSE, drft, NULL, 0, mp, anot ? "Forwarded" : NULL, cwd); - /* sysexits.h EX_SOFTWARE */ - return 1; + return EX_OSERR; } @@ -280,7 +278,7 @@ add_forw_hdr(char *draft) } if (strlen(buf) + 1 + strlen(m_name(msgnum)) + 1 > sizeof buf) { - adios(NULL, "Attachment header line too long. " + adios(EX_DATAERR, NULL, "Attachment header line too long. " "Forward less messages."); } strcat(buf, " "); @@ -328,18 +326,20 @@ build_form(char *form, char *digest, int volume, int issue) dat[4] = 0; cp = m_mktemp2(NULL, invo_name, NULL, &tmp); - if (cp == NULL) adios("forw", "unable to create temporary file"); + if (cp == NULL) { + adios(EX_CANTCREAT, "forw", "unable to create temporary file"); + } strncpy(tmpfil, cp, sizeof(tmpfil)); unlink(tmpfil); if ((in = dup(fileno(tmp))) == NOTOK) - adios("dup", "unable to"); + adios(EX_OSERR, "dup", "unable to"); line = mh_xmalloc((unsigned) fmtsize); fmt_scan(fmt, line, fmtsize, dat); fputs(line, tmp); free(line); if (fclose(tmp)) - adios(tmpfil, "error writing"); + adios(EX_IOERR, tmpfil, "error writing"); lseek(in, (off_t) 0, SEEK_SET); return in;