setup_test
+check_exit '-eq 1' mhfixmsg -
+
#### Make sure that html-to-text conversion is what we expect.
-require_locale en_US.utf-8 en_US.utf8
-LC_ALL=en_US.UTF-8; export LC_ALL
+require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8
expected="$MH_TEST_DIR/test-mhfixmsg$$.expected"
expected_err="$MH_TEST_DIR/test-mhfixmsg$$.expected_err"
mhn_defaults="$MH_INST_DIR${nmhetcdir}/mhn.defaults"
-if grep mhfixmsg-format-text/html "${mhn_defaults}" \
- >/dev/null; then
+if grep mhfixmsg-format-text/html "${mhn_defaults}" >/dev/null; then
can_reformat_texthtml=1
if grep 'mhfixmsg-format-text/html.*w3m' "${mhn_defaults}" \
>/dev/null; then
-decodetext 8bit|7bit|binary
-nodecodetext
-decodetypes
+ -decodeheaderfieldbodies utf-8
+ -nodecodeheaderfieldbodies
-[no]crlflinebreaks
-[no]textcharset
-[no]reformat
-help
EOF
-run_prog mhfixmsg -help >"$actual" 2>&1
+#### Skip nmh intro text.
+run_prog mhfixmsg -help 2>&1 | sed '/^$/,$d' >"$actual"
check "$expected" "$actual"
# check that non-MIME messages aren't modified
# check -outfile
-start_test "that non-MIME messages aren't modified, and -outfile"
+start_test "non-MIME messages aren't modified, and -outfile"
run_test 'mhfixmsg first -outfile '"$actual" ''
check "`mhpath first`" "$actual" 'keep first'
# check that non-MIME messages with no bodies aren't modified
# check -outfile
-start_test "that non-MIME messages with no bodies aren't modified, and -outfile"
-cat >`mhpath new` <<EOF
+start_test "non-MIME messages with no bodies aren't modified, and -outfile"
+cat >"`mhpath new`" <<EOF
From: Test <test@example.com>
To: Some User <user@example.com>
Date: Fri, 29 Sep 2006 00:00:00
# check -nofixcte
start_test "-nofixcte"
-cat >"$MH_TEST_DIR"/Mail/inbox/11 <<EOF
+cat >"`mhpath new`" <<EOF
From: Anon
To: Mailinglist
Subject: =?ISO-8859-15?Q?Re=3A_H=E5lla_linuxsystem_uppdaterade?=
QUOTED-PRINTABLE with 8 bit"
check "$expected" "$actual" 'keep first'
+sbackup="`mhparam sbackup`"
# check with no options: checks backup
start_test "with no options: checks backup"
run_test 'mhfixmsg' ''
check "$expected" "$MH_TEST_DIR"/Mail/inbox/11 'keep first'
cp "$MH_TEST_DIR"/Mail/inbox/11.original "$MH_TEST_DIR"/Mail/inbox/11
-check "$MH_TEST_DIR"/Mail/inbox/,11 "$MH_TEST_DIR"/Mail/inbox/11.original
+check "$MH_TEST_DIR/Mail/inbox/${sbackup}11" "$MH_TEST_DIR"/Mail/inbox/11.original
# check backup with -file
folder last >/dev/null
run_test 'mhfixmsg -file '"$MH_TEST_DIR"/Mail/inbox/11 ''
check "$MH_TEST_DIR"/Mail/inbox/11 "$expected" 'keep first'
-check "$MH_TEST_DIR"/Mail/inbox/,11 "$MH_TEST_DIR"/Mail/inbox/11.original
+check "$MH_TEST_DIR/Mail/inbox/${sbackup}11" "$MH_TEST_DIR"/Mail/inbox/11.original
+
+
+# check -file with directory
+start_test "-file with directory"
+run_test 'mhfixmsg -file /tmp' 'mhfixmsg: /tmp is a directory
+mhfixmsg: unable to parse message from file /tmp'
# check -reformat (enabled by default): addition of text/plain part
------=_nmh-multipart
Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
Need to go! Need ... to ... go!
------=_nmh-multipart
Content-Type: text/html; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
<html>
<head>
------=_nmh-multipart--
EOF
-cat >"$MH_TEST_DIR"/Mail/inbox/12 <<EOF
+cat >"`mhpath new`" <<EOF
MIME-Version: 1.0
From: sender@example.com
To: bonquiqui@example.com
------=_nmh-multipart-3
Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
------=_nmh-multipart
------=_nmh-multipart-1
------=_nmh-multipart-3
Content-Type: text/html; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
<html>
<head>
------=_nmh-multipart-3--
EOF
-cat >"$MH_TEST_DIR"/Mail/inbox/12 <<EOF
+cat >"`mhpath last`" <<EOF
MIME-Version: 1.0
From: sender@example.com
To: bonquiqui@example.com
fi
-# check -nodecode
-start_test "-nodecode"
+# check -nodecodetext
+start_test "-nodecodetext"
prepare_space >"$expected" <<EOF
MIME-Version: 1.0
From: sender@example.com
------=_nmh-multipart
Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
Need to go! Need ... to ... go!
printf '%s\n' 'mhfixmsg: 12, insert text/plain part' >"$expected.err"
#### lynx inserts multiple blank lines, so squeeze them.
- run_prog mhfixmsg last -nodecode -outfile - -verbose 2>"$actual.err" | \
+ run_prog mhfixmsg last -nodecodetext -outfile - -verbose 2>"$actual.err" | \
squeeze_lines >"$actual"
check "$expected" "$actual" 'ignore space'
check "$expected.err" "$actual.err"
------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="iso-8859-1"; name="test4.txt"
Content-Disposition: attachment; filename="test4.txt"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is a text/plain part.
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg decode test 1
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: attachment; filename="test2.txt"
Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is the second text/plain part.
------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="iso-8859-1"; name="test4.txt"
Content-Disposition: attachment; filename="test4.txt"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is the fourth text/plain part.
This is additional content after the last subpart of the multipart.
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg decode test 2
#### Generated the encoded text below with:
#### $ printf '\275\262=\274\000\n' | base64
start_test "attempted (default, 8 bit) -decodetext of binary text"
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg binary decode test
Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset=UTF-8; name="nul+square.txt"
+Content-Type: text/plain; charset="UTF-8"; name="nul+square.txt"
Content-Transfer-Encoding: base64
vbI9vAAK
------- =_aaaaaaaaaa0--
EOF
-cp -p `mhpath last` "$expected"
+cp -p "`mhpath last`" "$expected"
run_prog mhfixmsg last
-check `mhpath last` "$expected" 'keep first'
+check "`mhpath last`" "$expected" 'keep first'
# check for successful decode of a different part with attempted -decodetext
------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is a text plain part
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg successful decode of text/plain with failed binary decode
EOF
run_prog mhfixmsg -noreformat last
-check `mhpath last` "$expected" 'keep first'
+check "`mhpath last`" "$expected" 'keep first'
# check for successful decode of a different part with -decodetext of binary
Subject: mhfixmsg successful decode of text/plain with failed binary decode
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+Content-Transfer-Encoding: binary
------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is a text plain part
EOF
run_prog mhfixmsg -noreformat -decodetext binary last
-check `mhpath last` "$expected"
+check "`mhpath last`" "$expected"
# check -decodetext of binary (containing ASCII NUL) text
Subject: mhfixmsg binary decode test
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=\"----- =_aaaaaaaaaa0\"
+Content-Transfer-Encoding: binary
------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset=UTF-8; name=\"nul+square.txt\"
+Content-Type: text/plain; charset=\"UTF-8\"; name=\"nul+square.txt\"
Content-Transfer-Encoding: binary
" "
# check that -reformat succeeds when decode of binary text fails
-start_test "that -reformat succeeds when decode of binary text fails"
+start_test "-reformat succeeds when decode of binary text fails"
prepare_space >"$expected" <<'EOF'
MIME-Version: 1.0
Date: Thu, 11 Apr 2013 02:47:08 -0700
------=_nmh-multipart
Content-Type: text/plain; charset="ISO-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
Mile $0.00
Time $78.71
<body>
EOF
-cat >`mhpath new` <<'EOF'
+cat >"`mhpath new`" <<'EOF'
MIME-Version: 1.0
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Subject: mhfixmsg textcharset test
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+Content-Transfer-Encoding: 8bit
------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="utf-8"; name="square.txt"
#### Generated the encoded text below with:
#### $ printf '\275\262=\274\n' | base64
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg textcharset test
cat >"$expected" <<EOF
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
Date: Fri, 13 May 2011 08:21:12 -0500
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_1781A17_01CC1147.81E9467A"
------=_NextPart_000_1781A1A_01CC1147.81EBA8D4--
EOF
-cp -p `mhpath last` `mhpath new`
+cp -p "`mhpath last`" "`mhpath new`"
run_test 'mhfixmsg last -nofixboundary' ''
check "$MH_TEST_DIR"/Mail/inbox/18 "$MH_TEST_DIR"/Mail/inbox/19 'keep first'
-# check that message is not output when fed through stdin
-start_test "that message is not output when fed through stdin"
+# check that message is not output when fed through stdin (without -outfile)
+start_test "message is not output when fed through stdin"
run_prog mhfixmsg -file - -verbose <`mhpath last` >"$actual" 2>"$actual.err"
check "$expected" "$actual"
if grep "mhfixmsg: $MH_TEST_DIR/Mail/.*, fix multipart boundary" \
# check that message is not modified when -fixboundary fails
-start_test "that message is not modified when -fixboundary fails"
-cat >`mhpath new` <<EOF
+start_test "message is not modified when -fixboundary fails"
+cat >"`mhpath new`" <<EOF
Date: Fri, 13 May 2011 08:21:12 -0500
Content-Type: multipart/alternative;
boundary="----=_ NextPart_000_1781A17_01CC1147.81E9467A"
NextPart_000_1781A1A_01CC1147.81EBA8D4--
EOF
-cp -p `mhpath last` "$expected"
+cp -p "`mhpath last`" "$expected"
run_test "mhfixmsg last -outfile $actual" ''
check "$expected" "$actual"
# check that text/plain part is not added to text/html in multipart/related
# when it shouldn't be
-start_test "that text/plain part is not added to text/html in multipart/related when it shouldn't be"
-cat >`mhpath new` <<EOF
+start_test "text/plain part is not added to text/html in multipart/related when it shouldn't be"
+cat >"`mhpath new`" <<EOF
MIME-Version: 1.0
Date: Tue, 26 Feb 2013 18:07:20 -0600
Subject: multipart/related, not /alternative
------=_Part_90310_101292502.1--
EOF
-cp -p `mhpath last` "$expected"
+cp -p "`mhpath last`" "$expected"
if [ $can_reformat_texthtml -eq 1 ]; then
#### lynx inserts multiple blank lines, so squeeze them.
# check that text/plain part is added to text/html in multipart/related
# when it should be
-start_test "that text/plain part is added to text/html in multipart/related when it should be"
+start_test "text/plain part is added to text/html in multipart/related when it should be"
cat >"$expected" <<EOF
MIME-Version: 1.0
Date: Tue, 26 Feb 2013 18:07:20 -0600
------=_Part_90310_101292502.1--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
MIME-Version: 1.0
Date: Tue, 26 Feb 2013 18:07:20 -0600
Subject: multipart/related, not /alternative
# check handling of rfc822 message type
+# also, checks -fixboundary
start_test "handling of rfc822 message type"
cat >"$expected" <<EOF
From: Test <test@example.com>
and some garbage at the end
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
From: Test <test@example.com>
To: Some User <user@example.com>
Date: Fri, 29 Sep 2006 00:00:00
Message-Id: @test.nmh
Subject: message with message/rfc822 attachment
MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaa0"
+Content-Type: multipart/mixed; boundary="----- =badboundary"
and some garbage before the attachment
\r
EOF
-cat >`mhpath new` <<'EOF'
+cat >"`mhpath new`" <<'EOF'
MIME-Version: 1.0
From: sender@example.com
To: recipient@example.com
EOF
-cat >`mhpath new` <<'EOF'
+cat >"`mhpath new`" <<'EOF'
MIME-Version: 1.0
From: sender@example.com
To: recipient@example.com
------=_Part_876302
Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
Yes, the text/plain part really was empty.
------=_Part_876302
Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
Content-Disposition: inline
<html><head>
------=_Part_876302--
EOF
-cat >`mhpath new` <<'EOF'
+cat >"`mhpath new`" <<'EOF'
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg replacement of bad text/plain part test
------=_Part_876302
Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
Content-Disposition: inline
<html><head>
------=_Part_876302
Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
Content-Disposition: inline
<html><head>
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
Subject: test
From: sender@example.com
check "$expected" "$actual"
-# check rmmproc
-start_test "rmmproc"
-cat >"$MH_TEST_DIR/Mail/rmmproc" <<'EOF'
+if [ $can_reformat_texthtml -eq 1 ]; then
+ # check rmmproc
+ start_test "rmmproc"
+ cat >"$MH_TEST_DIR/Mail/rmmproc" <<'EOF'
mv "$1" "$1.backup"
EOF
-chmod a+x "${MH_TEST_DIR}/Mail/rmmproc"
-echo "rmmproc: ${MH_TEST_DIR}/Mail/rmmproc" >>"$MH"
-cp "${MH_TEST_DIR}/Mail/inbox/16" "${MH_TEST_DIR}/Mail/inbox/16.original"
+ chmod a+x "${MH_TEST_DIR}/Mail/rmmproc"
+ echo "rmmproc: ${MH_TEST_DIR}/Mail/rmmproc" >>"$MH"
+ cp "${MH_TEST_DIR}/Mail/inbox/16" "${MH_TEST_DIR}/Mail/inbox/16.original"
-run_test 'mhfixmsg 16' ''
-check "${MH_TEST_DIR}/Mail/inbox/16.backup" \
- "${MH_TEST_DIR}/Mail/inbox/16.original"
+ run_test 'mhfixmsg 16' ''
+ check "${MH_TEST_DIR}/Mail/inbox/16.backup" \
+ "${MH_TEST_DIR}/Mail/inbox/16.original"
-# check -normmproc
-start_test "-normmproc"
-cp "${MH_TEST_DIR}/Mail/inbox/21" "${MH_TEST_DIR}/Mail/inbox/22"
+ # check -normmproc
+ start_test "-normmproc"
+ cp "${MH_TEST_DIR}/Mail/inbox/21" "${MH_TEST_DIR}/Mail/inbox/22"
-run_test 'mhfixmsg 21 -normmproc'
-check "${MH_TEST_DIR}/Mail/inbox/22" \
- "${MH_TEST_DIR}/Mail/inbox/,21" 'keep first'
+ run_test 'mhfixmsg 21 -normmproc'
+ check "${MH_TEST_DIR}/Mail/inbox/22" \
+ "${MH_TEST_DIR}/Mail/inbox/${sbackup}21" 'keep first'
+fi
# check -rmmproc
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg with incorrect Content-Type
EOF
mhfixmsg -fixtype application/octet-stream last
-check "$expected" `mhpath last`
+check "$expected" "`mhpath last`"
# check default -decodetypes
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: attachment; filename="test1.txt"
Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is the text/plain part.
------- =_aaaaaaaaaa0
Content-Type: text/html; charset="iso-8859-1"; name="test2.txt"
Content-Disposition: attachment; filename="test2.txt"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
<html>
<head>
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg decode test 3
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: attachment; filename="test1.txt"
Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is the text/plain part.
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg decode test 4
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: attachment; filename="test1.txt"
Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is the text/plain part.
------- =_aaaaaaaaaa0
Content-Type: application/ics; charset="iso-8859-1"; name="invite.ics"
Content-Disposition: attachment; filename="invite.ics"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
BEGIN:VCALENDAR\r
VERSION:2.0\r
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg decode test 5
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: attachment; filename="test1.txt"
Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
This is the text/plain part.
------- =_aaaaaaaaaa0
Content-Type: application/ics; charset="iso-8859-1"; name="invite.ics"
Content-Disposition: attachment; filename="invite.ics"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
BEGIN:VCALENDAR
VERSION:2.0
------- =_aaaaaaaaaa0--
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg decode test 5
# check that input is passed through to output when there's a parse error
# (the charset string is missing its closing quote) with -outfile
-start_test "that input is passed through to output when there's a parse error"
+start_test "input is passed through to output when there's a parse error"
cat >"$expected.err" <<EOF
mhfixmsg: invalid quoted-string in message 31's Content-Type: field
- (parameter charset)
+ (parameter charset)
mhfixmsg: unable to parse message 31
EOF
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
To: recipient@example.com
From: sender@example.com
Subject: mhfixmsg pass through on parse error
run_prog mhfixmsg last -outfile "$actual" 2>"$actual.err"
set -e
#### Expected output is identical to the input message.
-check `mhpath last` "$actual" 'keep first'
+check "`mhpath last`" "$actual" 'keep first'
check "$expected.err" "$actual.err"
# (the charset string is missing its closing quote) with -outfile, and
# input from stdin. Don't check err output, because it contains the name
# of a tmp file. It's similar to that of the previous check.
-start_test "that input is passed through to output when there's a parse error"
+start_test "input is passed through to output when there's a parse error"
set +e
run_prog mhfixmsg -file - -outfile - <`mhpath last` >"$actual" 2>/dev/null
set -e
#### Expected output is identical to the input message.
-check `mhpath last` "$actual"
+check "`mhpath last`" "$actual" 'keep first'
+
+
+start_test "pass through message with relative folder path with parse error"
+#### Factor out leading portion of current folder path and make it relative.
+pwd=`pwd -P`
+set +e
+run_prog mhfixmsg +./`mhpath | sed "s%^$pwd/%%"` last -out - >"$actual" 2>/dev/null
+set -e
+folder -f +inbox >/dev/null
+#### Expected output is identical to the input message.
+check "`mhpath last`" "$actual"
+
+
+start_test "fix RFC 2047 encoded header parameters"
+#### Also, add C-T-E:8bit to the message headers.
+cat >"$expected" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Date: Wed, 28 Sep 2016 11:24:28 -0400
+Subject: invalid header parameter encoding
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
+Content-Transfer-Encoding: 8bit
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8
+
+This is a test.
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset="UTF-8"; name*=UTF-8''test%C3%B8.txt
+Content-Disposition: attachment; filename*=UTF-8''test%C3%B8.txt
+Content-Transfer-Encoding: 8bit
+
+This is the first text/plain part, in a subpart. The file name
+is testø.txt.
+
+--001a114dd3e8fe9c56053d92f414--
+EOF
+
+cat >"`mhpath new`" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Date: Wed, 28 Sep 2016 11:24:28 -0400
+Subject: invalid header parameter encoding
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8
+
+This is a test.
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8; name="=?UTF-8?B?dGVzdMO4LnR4dA==?="
+Content-Disposition: attachment; filename="=?UTF-8?B?dGVzdMO4LnR4dA==?="
+Content-Transfer-Encoding: 8bit
+
+This is the first text/plain part, in a subpart. The file name
+is testø.txt.
+
+--001a114dd3e8fe9c56053d92f414--
+EOF
+run_prog mhfixmsg -file - -outfile - <`mhpath last` >"$actual" 2>/dev/null
+check "$expected" "$actual"
+
+
+start_test "-nodecodeheaderfieldbodies"
+cat >"`mhpath new`" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Date: Wed, 28 Sep 2016 11:24:28 -0400
+Subject: =?utf-8?B?dGhpcyBTdWJqZWN0IHdhcyBVVEYtOCBlbmNvZGVk?=
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
+Content-Transfer-Encoding: 8bit
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8
+
+This is a test.
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8; name="test.txt"
+Content-Disposition: attachment; filename="test.txt"
+Content-Transfer-Encoding: 8bit
+
+This is the first text/plain part, in a subpart. The file name
+is test.txt.
+
+--001a114dd3e8fe9c56053d92f414--
+EOF
+run_prog mhfixmsg -file - -outfile - -decodeheaderfieldbodies utf-8 \
+ -nodecodeheaderfieldbodies <`mhpath last` >"$actual" 2>/dev/null
+check `mhpath last` "$actual" 'keep first'
+
+
+start_test "test decoding of UTF-8 header value"
+cat >"$expected" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Date: Wed, 28 Sep 2016 11:24:28 -0400
+Subject: this Subject was UTF-8 encoded
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
+Content-Transfer-Encoding: 8bit
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8
+
+This is a test.
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8; name="test.txt"
+Content-Disposition: attachment; filename="test.txt"
+Content-Transfer-Encoding: 8bit
+
+This is the first text/plain part, in a subpart. The file name
+is test.txt.
+
+--001a114dd3e8fe9c56053d92f414--
+EOF
+
+run_prog mhfixmsg -file - -outfile - -decodeheaderfieldbodies utf-8 \
+ <`mhpath last` >"$actual" 2>/dev/null
+check "$expected" "$actual"
# make sure there are no tmp files left over
-find "$MH_TEST_DIR/Mail" \( -name 'mhfix*' -o -name ',mhfix*' \) -print \
+find "$MH_TEST_DIR/Mail" -name '*mhfix*' -print \
>"$actual"
cat >"$expected" <<EOF
EOF
check "$expected" "$actual"
+
finish_test
exit $failed