X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhbuild.c;h=fde4a1d784fd1d3cd3a6c017d828c4c741480be6;hb=379b1bf4d085439639e7c535aac08345809dd6aa;hp=67b2e0e8112925b9e8538c321417b0787483cae0;hpb=e68b1fb49f49b3f68b7a1a5eeb449b2c26b196a8;p=mmh diff --git a/uip/mhbuild.c b/uip/mhbuild.c index 67b2e0e..fde4a1d 100644 --- a/uip/mhbuild.c +++ b/uip/mhbuild.c @@ -32,9 +32,9 @@ static struct swit switches[] = { #define VERBSW 0 { "verbose", 0 }, #define NVERBSW 1 - { "noverbose", 0 }, + { "noverbose", 2 }, #define VERSIONSW 2 - { "version", 0 }, + { "Version", 0 }, #define HELPSW 3 { "help", 0 }, #define DEBUGSW 4 @@ -111,15 +111,13 @@ main(int argc, char **argv) char *cp, buf[BUFSIZ]; char buffer[BUFSIZ], *compfile = NULL; char **argp, **arguments; - CT ct, cts[2]; + CT ct; FILE *fp = NULL; FILE *fp_out = NULL; done = unlink_done; -#ifdef LOCALE setlocale(LC_ALL, ""); -#endif invo_name = mhbasename(argv[0]); /* read user profile/context */ @@ -222,8 +220,6 @@ main(int argc, char **argv) /* build the content structures for MIME message */ ct = build_mime(infile); - cts[0] = ct; - cts[1] = NULL; /* output MIME message to this temporary file */ strncpy(outfile, m_mktemp(invo_name, NULL, &fp_out), @@ -257,8 +253,6 @@ main(int argc, char **argv) /* build the content structures for MIME message */ ct = build_mime(compfile); - cts[0] = ct; - cts[1] = NULL; /* output MIME message to this temporary file */ strncpy(outfile, m_mktemp2(compfile, invo_name, NULL, &fp_out), @@ -270,14 +264,14 @@ main(int argc, char **argv) fclose(fp_out); /* Rename composition draft */ - snprintf(buffer, sizeof(buffer), "%s.orig", m_backup(compfile)); + snprintf(buffer, sizeof(buffer), "%s.orig", compfile); if (rename(compfile, buffer) == NOTOK) { - adios(compfile, "unable to rename comp draft %s to", buffer); + adios(buffer, "unable to rename draft %s to", compfile); } /* Rename output file to take its place */ if (rename(outfile, compfile) == NOTOK) { - advise(outfile, "unable to rename output %s to", compfile); + advise(compfile, "unable to rename output %s to", outfile); rename(buffer, compfile); done(1); } @@ -790,8 +784,8 @@ call_init: adios(NULL, "sorry, \"#%s/%s\" isn't supported", ci->ci_type, ci->ci_subtype); } use_forw: - adios(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype); - /* NOTREACHED */ + admonish(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype); + /* FALL */ default: if ((ct->c_ctinitfnx = s2i->si_init)) @@ -1245,10 +1239,10 @@ static int scan_content(CT ct) { int len; - int check8bit = 0, contains8bit = 0; /* check if contains 8bit data */ - int checklinelen = 0, linelen = 0; /* check for long lines */ - int checkboundary = 0, boundaryclash = 0; /* check if clashes with multipart boundary */ - int checklinespace = 0, linespace = 0; /* check if any line ends with space */ + int check8bit = 0, contains8bit = 0; + int checklinelen = 0, linelen = 0; + int checkboundary = 0, boundaryclash = 0; + int checklinespace = 0, linespace = 0; /* trailing whitespace */ unsigned char *cp = NULL, buffer[BUFSIZ]; struct text *t = NULL; FILE *in = NULL; @@ -1303,13 +1297,6 @@ scan_content(CT ct) } break; - case CT_APPLICATION: - check8bit = 1; - checklinelen = 1; - checklinespace = 1; - checkboundary = 1; - break; - case CT_MESSAGE: check8bit = 0; checklinelen = 0; @@ -1317,13 +1304,10 @@ scan_content(CT ct) checkboundary = 1; break; + case CT_APPLICATION: case CT_AUDIO: case CT_IMAGE: case CT_VIDEO: - /* - ** Don't check anything for these types, - ** since we are forcing use of base64. - */ check8bit = 0; checklinelen = 0; checklinespace = 0; @@ -1340,9 +1324,6 @@ scan_content(CT ct) len = strlen(prefix); while (fgets(buffer, sizeof(buffer) - 1, in)) { - /* - ** Check for 8bit data. - */ if (check8bit) { for (cp = buffer; *cp; cp++) { if (!isascii(*cp)) { @@ -1353,17 +1334,11 @@ scan_content(CT ct) } } - /* - ** Check line length. - */ if (checklinelen && (strlen(buffer) > CPERLIN + 1)) { linelen = 1; checklinelen = 0; /* no need to keep checking */ } - /* - ** Check if line ends with a space. - */ if (checklinespace && (cp = buffer + strlen(buffer) - 2) > buffer && isspace(*cp)) { @@ -1432,24 +1407,19 @@ scan_content(CT ct) ct->c_encoding = CE_7BIT; break; - case CT_APPLICATION: - /* For application type, use base64, except when postscript */ - if (contains8bit || linelen || linespace) - ct->c_encoding = (ct->c_subtype == - APPLICATION_POSTSCRIPT) ? - CE_QUOTED : CE_BASE64; - else - ct->c_encoding = CE_7BIT; - break; - case CT_MESSAGE: ct->c_encoding = CE_7BIT; break; + case CT_APPLICATION: case CT_AUDIO: case CT_IMAGE: case CT_VIDEO: - /* For audio, image, and video contents, just use base64 */ + /* + ** Forcing use of base64, because these types likely + ** contain binary data and NUL bytes. Don't care about + ** files that would be clean. + */ ct->c_encoding = CE_BASE64; break; }