format-patch: do not wrap non-rfc2047 headers too early
Do not wrap the second and later lines of non-rfc2047-encoded headers substantially before the 78 character limit. Instead of passing the remaining length of the first line as wrapping width, use the correct maximum length and tell strbuf_add_wrapped_bytes() how many characters of the first line are already used. Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
14e1a4e1ff
commit
7a76e68a17
2
pretty.c
2
pretty.c
|
@ -286,7 +286,7 @@ static void add_rfc2047(struct strbuf *sb, const char *line, int len,
|
||||||
if ((i + 1 < len) && (ch == '=' && line[i+1] == '?'))
|
if ((i + 1 < len) && (ch == '=' && line[i+1] == '?'))
|
||||||
goto needquote;
|
goto needquote;
|
||||||
}
|
}
|
||||||
strbuf_add_wrapped_bytes(sb, line, len, 0, 1, max_length - line_len);
|
strbuf_add_wrapped_bytes(sb, line, len, -line_len, 1, max_length);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
needquote:
|
needquote:
|
||||||
|
|
|
@ -752,16 +752,14 @@ M64=$M8$M8$M8$M8$M8$M8$M8$M8
|
||||||
M512=$M64$M64$M64$M64$M64$M64$M64$M64
|
M512=$M64$M64$M64$M64$M64$M64$M64$M64
|
||||||
cat >expect <<'EOF'
|
cat >expect <<'EOF'
|
||||||
Subject: [PATCH] foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
Subject: [PATCH] foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
||||||
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
||||||
foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
||||||
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
||||||
foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
||||||
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
||||||
foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
|
foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
||||||
bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
|
|
||||||
foo bar foo bar foo bar foo bar
|
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'format-patch wraps extremely long headers (ascii)' '
|
test_expect_success 'format-patch wraps extremely long subject (ascii)' '
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
git commit -m "$M512" &&
|
git commit -m "$M512" &&
|
||||||
|
@ -807,28 +805,12 @@ test_expect_success 'format-patch wraps extremely long headers (rfc2047)' '
|
||||||
test_cmp expect subject
|
test_cmp expect subject
|
||||||
'
|
'
|
||||||
|
|
||||||
M8="foo_bar_"
|
|
||||||
M64=$M8$M8$M8$M8$M8$M8$M8$M8
|
|
||||||
cat >expect <<EOF
|
|
||||||
From: $M64
|
|
||||||
<foobar@foo.bar>
|
|
||||||
EOF
|
|
||||||
test_expect_success 'format-patch wraps non-quotable headers' '
|
|
||||||
rm -rf patches/ &&
|
|
||||||
echo content >>file &&
|
|
||||||
git add file &&
|
|
||||||
git commit -mfoo --author "$M64 <foobar@foo.bar>" &&
|
|
||||||
git format-patch --stdout -1 >patch &&
|
|
||||||
sed -n "/^From: /p; /^ /p; /^$/q" <patch >from &&
|
|
||||||
test_cmp expect from
|
|
||||||
'
|
|
||||||
|
|
||||||
check_author() {
|
check_author() {
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
GIT_AUTHOR_NAME=$1 git commit -m author-check &&
|
GIT_AUTHOR_NAME=$1 git commit -m author-check &&
|
||||||
git format-patch --stdout -1 >patch &&
|
git format-patch --stdout -1 >patch &&
|
||||||
grep ^From: patch >actual &&
|
sed -n "/^From: /p; /^ /p; /^$/q" <patch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -853,6 +835,32 @@ test_expect_success 'rfc2047-encoded headers also double-quote 822 specials' '
|
||||||
check_author "Föo B. Bar"
|
check_author "Föo B. Bar"
|
||||||
'
|
'
|
||||||
|
|
||||||
|
cat >expect <<EOF
|
||||||
|
From: foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_
|
||||||
|
<author@example.com>
|
||||||
|
EOF
|
||||||
|
test_expect_success 'format-patch wraps moderately long from-header (ascii)' '
|
||||||
|
check_author "foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_"
|
||||||
|
'
|
||||||
|
|
||||||
|
cat >expect <<'EOF'
|
||||||
|
From: Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar
|
||||||
|
Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo
|
||||||
|
Bar Foo Bar Foo Bar Foo Bar <author@example.com>
|
||||||
|
EOF
|
||||||
|
test_expect_success 'format-patch wraps extremely long from-header (ascii)' '
|
||||||
|
check_author "Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar"
|
||||||
|
'
|
||||||
|
|
||||||
|
cat >expect <<'EOF'
|
||||||
|
From: "Foo.Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar
|
||||||
|
Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo
|
||||||
|
Bar Foo Bar Foo Bar Foo Bar" <author@example.com>
|
||||||
|
EOF
|
||||||
|
test_expect_success 'format-patch wraps extremely long from-header (rfc822)' '
|
||||||
|
check_author "Foo.Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar"
|
||||||
|
'
|
||||||
|
|
||||||
cat >expect <<'EOF'
|
cat >expect <<'EOF'
|
||||||
Subject: header with . in it
|
Subject: header with . in it
|
||||||
EOF
|
EOF
|
||||||
|
|
Loading…
Reference in New Issue