]> diplodocus.org Git - nmh/commitdiff
Enabled check for 8-bit content in all text parts, not just those
authorDavid Levine <levinedl@acm.org>
Wed, 5 Oct 2016 01:24:10 +0000 (21:24 -0400)
committerDavid Levine <levinedl@acm.org>
Wed, 5 Oct 2016 01:24:10 +0000 (21:24 -0400)
with no specified character set, so that a Content-Transfer-Encoding
header will be added if needed.

docs/pending-release-notes
test/mhbuild/test-utf8-body
uip/mhbuildsbr.c

index cb3f09d8482ad98e4508bcf2e1ef3476348c42a6..ffcfcc9f357752d5510cab8ca87aca078decf7f6 100644 (file)
@@ -56,7 +56,6 @@ NEW FEATURES
   filename parameters in Content-Type and Content-Disposition headers,
   respectively.
 
-
 -----------------
 OBSOLETE FEATURES
 -----------------
@@ -88,3 +87,7 @@ BUG FIXES
   scan(1), inc(1), and the other programs that rely on the format scanner.
 - The first character of some very short (less than 4 characters) message
   bodies is no longer dropped.
+- mhfixmsg now adds a Content-Transfer-Encoding header at the message level,
+  if needed after decoding text parts.
+- mhbuild now checks whether all text parts need a Content-Transfer-Encoding
+  header, not just those with a character set not specified.
index 1a08a9075ab77102b81d5449d1dec7168eeae1d5..cb5aa9530f150d2ac7579c9c4bd6b8c1587f2ddb 100755 (executable)
@@ -49,7 +49,9 @@ test_attachment ()
   check "${testname}.actual" "$1"
 }
 
+
 # check that 7-bit body isn't encoded
+start_test "7-bit body isn't encoded"
 cat > "${MH_TEST_DIR}/attachment.txt" <<EOF
 this is an attachment
 EOF
@@ -88,9 +90,10 @@ EOF
 
 test_attachment "${testname}.expected"
 
+
 # check that 8-bit body is encoded as quoted-printable text/plain,
 # even with an attachment
-
+start_test '8-bit body is encoded as quoted-printable text/plain'
 cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
 From: Mr Nobody <nobody@example.com>
 To: Somebody <somebody@example.com>
@@ -127,9 +130,41 @@ EOF
 
 test_attachment "${testname}.expected"
 
-# Repeat the previous test, but make sure that the locale is set to C, which 
-# should cause mhbuild to fail
 
+# check that 8-bit attachment gets C-T-E
+start_test '8-bit attachment gets C-T-E'
+rm -f "${MH_TEST_DIR}/attachment.txt"
+cat > "${MH_TEST_DIR}/attachment.txt" <<EOF
+8-bit attachment, ¡Ay, caramba!
+EOF
+
+cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+Attach: $MH_TEST_DIR/attachment.txt
+EOF
+
+cat > "${testname}.expected" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+MIME-Version: 1.0
+Content-Type: text/plain; name="attachment.txt"
+Content-Description: attachment.txt
+Content-Disposition: attachment; filename="attachment.txt"
+Content-Transfer-Encoding: 8bit
+Date:
+
+8-bit attachment, ¡Ay, caramba!
+EOF
+
+test_attachment "${testname}.expected"
+
+
+# check 8-bit body but make sure that the locale is set to C, which
+# should cause mhbuild to fail
+start_test '8-bit body with C locale'
 cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
 From: Mr Nobody <nobody@example.com>
 To: Somebody <somebody@example.com>
@@ -152,8 +187,10 @@ EOF
 
 check "$expected" "$actual"
 
+
 rm -f ${MHMTSCONF} "${MH_TEST_DIR}/attachment.txt"
 
+finish_test
 exit ${failed:-0}
 
 # emacs hackage to ensure that it writes the inverted exclamation
index 26d8524d767a9f72005a641924ce4e2325135d57..b59ea58b0ddc083e94d4e03bbf3753cb6ccba2f8 100644 (file)
@@ -1453,15 +1453,17 @@ scan_content (CT ct, size_t maxunencoded)
      * Decide what to check while scanning this content.  Note that
      * for text content we always check for 8bit characters if the
      * charset is unspecified, because that controls whether or not the
-     * character set is us-ascii or retrieved from the locale.
+     * character set is us-ascii or retrieved from the locale.  And
+     * we check even if the charset is specified, to allow setting
+     * the proper Content-Transfer-Encoding.
      */
 
     if (ct->c_type == CT_TEXT) {
        t = (struct text *) ct->c_ctparams;
        if (t->tx_charset == CHARSET_UNSPECIFIED) {
-           check8bit = 1;
            checknul = 1;
        }
+       check8bit = 1;
     }
 
     switch (ct->c_reqencoding) {