X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhbuild.c;h=fde4a1d784fd1d3cd3a6c017d828c4c741480be6;hb=6e5da31c92f5a3fa38e010052c5a7743bfe1cf11;hp=1b2afa58db8e8aa0fd76c70dc0ac9ba6af3dbd97;hpb=f3380fda9da04a7c26a76070888ece92ae5648e9;p=mmh diff --git a/uip/mhbuild.c b/uip/mhbuild.c index 1b2afa5..fde4a1d 100644 --- a/uip/mhbuild.c +++ b/uip/mhbuild.c @@ -1239,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; @@ -1297,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; @@ -1311,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; @@ -1334,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)) { @@ -1347,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)) { @@ -1426,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; }