--- /dev/null
+#!/bin/sh
+######################################################
+#
+# Test pick parse rfc2047-header
+#
+######################################################
+
+set -e
+
+expected_err=$MH_TEST_DIR/$$.expected_err
+expected_out=$MH_TEST_DIR/$$.expected_out
+actual_err=$MH_TEST_DIR/$$.actual_err
+actual_out=$MH_TEST_DIR/$$.actual_out
+
+# Test MIME-encoded header.
+cat >"$MH_TEST_DIR/Mail/inbox/13" <<EOF
+From: Test13 <test13@example.com>
+To: Some User <user@example.com>
+Date: Fri, 29 Sep 2006 00:00:00
+Message-Id: 13@test.nmh
+Subject: =?us-ascii?q?=66=6f=6f?=
+ =?utf-8?q?=62=61=72?=
+
+This is message number 13, with MIME-encoded Subject "foobar".
+EOF
+
+echo 13 >"$expected_out"
+cat /dev/null > $expected_err
+
+pick -subject foobar 13 > $actual_out 2> $actual_err
+diff -u $expected_err $actual_err
+diff -u $expected_out $actual_out
static char linebuf[LBSIZE + 1];
+static char decoded_linebuf[LBSIZE + 1];
/* the magic array for case-independence */
static char cc[] = {
p1 = linebuf;
p2 = n->n_expbuf;
+ /* Attempt to decode as a MIME header. If it's the last header,
+ * body will be 1 and lf will be at least 1. */
+ if ((body == 0 || lf > 0) &&
+ decode_rfc2047 (linebuf, decoded_linebuf, sizeof decoded_linebuf)) {
+ p1 = decoded_linebuf;
+ }
+
if (n->n_circf) {
if (advance(p1, p2))
return 1;