X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhbuild.c;h=6e0861eafbe431c172475ff70f05e4cd25368299;hp=fde4a1d784fd1d3cd3a6c017d828c4c741480be6;hb=fede6e42d81ce34fd5c1bbe7fb2757b281c2573a;hpb=c62aa648e80ae81ac4aa354ab15783c8fb172514 diff --git a/uip/mhbuild.c b/uip/mhbuild.c index fde4a1d..6e0861e 100644 --- a/uip/mhbuild.c +++ b/uip/mhbuild.c @@ -92,7 +92,7 @@ static int unlink_infile = 0; static char outfile[BUFSIZ]; static int unlink_outfile = 0; -static void unlink_done(int) NORETURN; +static void unlink_done(); /* mhoutsbr.c */ int output_message(CT, char *); @@ -115,7 +115,7 @@ main(int argc, char **argv) FILE *fp = NULL; FILE *fp_out = NULL; - done = unlink_done; + atexit(unlink_done); setlocale(LC_ALL, ""); invo_name = mhbasename(argv[0]); @@ -139,17 +139,18 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - done(1); + /* sysexits.h EX_USAGE */ + exit(1); case UNKWNSW: adios(NULL, "-%s unknown", cp); case HELPSW: snprintf(buf, sizeof(buf), "%s [switches] file", invo_name); print_help(buf, switches, 1); - done(1); + exit(0); case VERSIONSW: print_version(invo_name); - done(1); + exit(0); case VERBSW: verbosw++; @@ -244,7 +245,7 @@ main(int argc, char **argv) unlink_outfile = 0; free_content(ct); - done(0); + exit(0); } /* @@ -273,28 +274,28 @@ main(int argc, char **argv) if (rename(outfile, compfile) == NOTOK) { advise(compfile, "unable to rename output %s to", outfile); rename(buffer, compfile); - done(1); + /* sysexits.h EX_IOERR */ + exit(1); } unlink_outfile = 0; free_content(ct); - done(0); - return 1; + return 0; } static void -unlink_done(int status) +unlink_done() { /* ** Check if we need to remove stray temporary files. */ - if (unlink_infile) + if (unlink_infile) { unlink(infile); - if (unlink_outfile) + } + if (unlink_outfile) { unlink(outfile); - - exit(status); + } } /* @@ -419,8 +420,10 @@ finish_field: ** draft. So create a multipart/mixed content to hold everything. ** We can remove this later, if it is not needed. */ - if (get_ctinfo("multipart/mixed", ct, 0) == NOTOK) - done(1); + if (get_ctinfo("multipart/mixed", ct, 0) == NOTOK) { + /* sysexits.h EX_DATAERR */ + exit(1); + } ct->c_type = CT_MULTIPART; ct->c_subtype = MULTI_MIXED; ct->c_file = getcpy(infile); @@ -707,7 +710,8 @@ rock_and_roll: /* parse content type */ if (get_ctinfo(content, ct, inlineD) == NOTOK) - done(1); + /* sysexits.h EX_USAGE */ + exit(1); for (s2i = str2cts; s2i->si_key; s2i++) if (!mh_strcasecmp(ci->ci_type, s2i->si_key)) @@ -755,7 +759,8 @@ call_init: /* parse directive */ if (get_ctinfo(buf+1, ct, 1) == NOTOK) - done(1); + /* sysexits.h EX_DATAERR */ + exit(1); /* check directive against the list of MIME types */ for (s2i = str2cts; s2i->si_key; s2i++) @@ -826,7 +831,8 @@ use_forw: if ((cp = context_find(buffer)) == NULL || *cp == '\0') { content_error(NULL, ct, "don't know how to compose content"); - done(1); + /* sysexits.h EX_USAGE */ + exit(1); } } ci->ci_magic = getcpy(cp); @@ -878,7 +884,8 @@ use_forw: cp = *ap; if (*cp != '+' && *cp != '@') if (!m_convert(mp, cp)) - done(1); + /* sysexits.h EX_USAGE */ + exit(1); } free(folder); free_ctinfo(ct); @@ -892,7 +899,8 @@ use_forw: if (mp->numsel > 1) { /* we are forwarding multiple messages */ if (get_ctinfo("multipart/digest", ct, 0) == NOTOK) - done(1); + /* sysexits.h EX_DATAERR */ + exit(1); ct->c_type = CT_MULTIPART; ct->c_subtype = MULTI_DIGEST; @@ -915,7 +923,8 @@ use_forw: pe = p->c_cefile; if (get_ctinfo("message/rfc822", p, 0) == NOTOK) - done(1); + /* sysexits.h EX_DATAERR */ + exit(1); p->c_type = CT_MESSAGE; p->c_subtype = MESSAGE_RFC822; @@ -934,7 +943,8 @@ use_forw: } else { /* we are forwarding one message */ if (get_ctinfo("message/rfc822", ct, 0) == NOTOK) - done(1); + /* sysexits.h EX_DATAERR */ + exit(1); ct->c_type = CT_MESSAGE; ct->c_subtype = MESSAGE_RFC822; @@ -980,7 +990,8 @@ use_forw: free_ctinfo(ct); snprintf(buffer, sizeof(buffer), "multipart/%s", cp); if (get_ctinfo(buffer, ct, 0) == NOTOK) - done(1); + /* sysexits.h EX_DATAERR */ + exit(1); ct->c_type = CT_MULTIPART; ct->c_subtype = vrsn; @@ -1211,7 +1222,8 @@ raw: default: fclose(out); if (pidXwait(child_id, NULL)) - done(1); + /* sysexits.h EX_SOFTWARE */ + exit(1); break; } }