diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-09-17 14:17:58 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-09-17 15:24:52 -0700 |
commit | 176943b9658b1fa9ae3972156100d831d19c3576 (patch) | |
tree | 19b39b2c585260ef38740ba3b2f4c9d78d5cc777 | |
parent | 785ee4960c3d334cbc2b17ab74d2cebdf1b4db64 (diff) | |
download | git-176943b9658b1fa9ae3972156100d831d19c3576.tar.gz git-176943b9658b1fa9ae3972156100d831d19c3576.tar.xz |
mailinfo: do not concatenate charset= attribute values from mime headers
"Content-type: text/plain; charset=UTF-8" header should not appear
twice in the input, but it is always better to gracefully deal with
such a case. The current code concatenates the value to the values
we have seen previously, producing nonsense such as "utf8UTF-8".
Instead of concatenating, forget the previous value and use the last
value we see.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/mailinfo.c | 5 | ||||
-rwxr-xr-x | t/t5100-mailinfo.sh | 2 | ||||
-rw-r--r-- | t/t5100/info0017 | 5 | ||||
-rw-r--r-- | t/t5100/msg0017 | 2 | ||||
-rw-r--r-- | t/t5100/patch0017 | 6 | ||||
-rw-r--r-- | t/t5100/sample.mbox | 16 |
6 files changed, 32 insertions, 4 deletions
diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index eaf9e157a..dd8b67cfa 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -160,10 +160,9 @@ static int slurp_attr(const char *line, const char *name, struct strbuf *attr) const char *ends, *ap = strcasestr(line, name); size_t sz; - if (!ap) { - strbuf_setlen(attr, 0); + strbuf_setlen(attr, 0); + if (!ap) return 0; - } ap += strlen(name); if (*ap == '"') { ap++; diff --git a/t/t5100-mailinfo.sh b/t/t5100-mailinfo.sh index 81904d9ec..3e64a7a65 100755 --- a/t/t5100-mailinfo.sh +++ b/t/t5100-mailinfo.sh @@ -11,7 +11,7 @@ test_expect_success 'split sample box' \ 'git mailsplit -o. "$TEST_DIRECTORY"/t5100/sample.mbox >last && last=`cat last` && echo total is $last && - test `cat last` = 16' + test `cat last` = 17' check_mailinfo () { mail=$1 opt=$2 diff --git a/t/t5100/info0017 b/t/t5100/info0017 new file mode 100644 index 000000000..d2bc89ffe --- /dev/null +++ b/t/t5100/info0017 @@ -0,0 +1,5 @@ +Author: A U Thor +Email: a.u.thor@example.com +Subject: A E I O U +Date: Mon, 17 Sep 2012 14:23:44 -0700 + diff --git a/t/t5100/msg0017 b/t/t5100/msg0017 new file mode 100644 index 000000000..2ee090085 --- /dev/null +++ b/t/t5100/msg0017 @@ -0,0 +1,2 @@ +New content here + diff --git a/t/t5100/patch0017 b/t/t5100/patch0017 new file mode 100644 index 000000000..35cf84c9a --- /dev/null +++ b/t/t5100/patch0017 @@ -0,0 +1,6 @@ +diff --git a/foo b/foo +index e69de29..d95f3ad 100644 +--- a/foo ++++ b/foo +@@ -0,0 +1 @@ ++New content diff --git a/t/t5100/sample.mbox b/t/t5100/sample.mbox index de1031241..fcc0e0d20 100644 --- a/t/t5100/sample.mbox +++ b/t/t5100/sample.mbox @@ -683,3 +683,19 @@ index e69de29..d95f3ad 100644 @@ -0,0 +1 @@ +content +From nobody Mon Sep 17 00:00:00 2001 +From: A U Thor <a.u.thor@example.com> +Subject: A E I O U +Date: Mon, 17 Sep 2012 14:23:44 -0700 +MIME-Version: 1.0 +Content-Type: text/plain; charset="iso-2022-jp" +Content-type: text/plain; charset="UTF-8" + +New content here + +diff --git a/foo b/foo +index e69de29..d95f3ad 100644 +--- a/foo ++++ b/foo +@@ -0,0 +1 @@ ++New content |