X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/cbffd053d895b0f64a8bfefc4fe838431d3387d5..6e1d79d58e5da5ba06bc42ebebd2f6f8f2ceb52e:/uip/mhoutsbr.c?ds=sidebyside diff --git a/uip/mhoutsbr.c b/uip/mhoutsbr.c index 0f3e9c1d..ea45a628 100644 --- a/uip/mhoutsbr.c +++ b/uip/mhoutsbr.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -96,7 +97,7 @@ output_content (CT ct, FILE *out) * headers (since it has no body). */ if (ct->c_ctexbody) { - if (boundary && *boundary != '\0') + if (*boundary != '\0') free(boundary); return OK; } @@ -116,7 +117,7 @@ output_content (CT ct, FILE *out) m = (struct multipart *) ct->c_ctparams; if (m->mp_content_before) { - fprintf (out, "%s", m->mp_content_before); + fputs(m->mp_content_before, out); } for (part = m->mp_parts; part; part = part->mp_next) { @@ -124,15 +125,15 @@ output_content (CT ct, FILE *out) fprintf (out, "\n--%s\n", boundary); if (output_content (p, out) == NOTOK) { - if (boundary && *boundary != '\0') + if (*boundary != '\0') free(boundary); - return NOTOK; + return NOTOK; } } fprintf (out, "\n--%s--\n", boundary); if (m->mp_content_after) { - fprintf (out, "%s", m->mp_content_after); + fputs(m->mp_content_after, out); } } break; @@ -187,8 +188,14 @@ output_content (CT ct, FILE *out) break; case CE_BINARY: - advise (NULL, "can't handle binary transfer encoding in content"); - result = NOTOK; + if (ct->c_type == CT_TEXT) { + /* So that mhfixmsg can decode to binary text. */ + putc ('\n', out); + result = write8Bit (ct, out); + } else { + advise (NULL, "can't handle binary transfer encoding in content"); + result = NOTOK; + } break; default: @@ -199,7 +206,7 @@ output_content (CT ct, FILE *out) break; } - if (boundary && *boundary != '\0') + if (*boundary != '\0') free(boundary); return result; @@ -359,7 +366,7 @@ writeQuoted (CT ct, FILE *out) * doesn't falsely match an mbox delimiter. */ cp = bufp; - if (gotlen >= 5 && strncmp (cp, "From ", 5) == 0) { + if (gotlen >= 5 && HasPrefix(cp, "From ")) { fprintf (out, "=%02X", 'F'); cp++; n += 3;