зеркало из https://github.com/microsoft/git.git
mailinfo: correctly handle multiline 'Subject:' header
When native language (RU) is in use, subject header usually contains several parts, e.g. Subject: [Navy-patches] [PATCH] =?utf-8?b?0JjQt9C80LXQvdGR0L0g0YHQv9C40YHQvtC6INC/0LA=?= =?utf-8?b?0LrQtdGC0L7QsiDQvdC10L7QsdGF0L7QtNC40LzRi9GFINC00LvRjyA=?= =?utf-8?b?0YHQsdC+0YDQutC4?= This exposes several bugs in builtin-mailinfo.c: 1. decode_b_segment: do not append explicit NUL -- explicit NUL was preventing correct header construction on parts concatenation via strbuf_addbuf in decode_header_bq. Fixes: -Subject: Изменён список пакетов необходимых для сборки +Subject: Изменён список па Then 2. Do not emit '\n' between "encoded-word" where RFC2046 says that linear white space between them are ignored when displaying. Fixes: -Subject: Изменён список пакетов необходимых для сборки +Subject: Изменён список па кетов необходимых для сборки Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
141201d124
Коммит
353aaf2fa1
|
@ -430,13 +430,6 @@ static struct strbuf *decode_b_segment(const struct strbuf *b_seg)
|
||||||
c -= 'a' - 26;
|
c -= 'a' - 26;
|
||||||
else if ('0' <= c && c <= '9')
|
else if ('0' <= c && c <= '9')
|
||||||
c -= '0' - 52;
|
c -= '0' - 52;
|
||||||
else if (c == '=') {
|
|
||||||
/* padding is almost like (c == 0), except we do
|
|
||||||
* not output NUL resulting only from it;
|
|
||||||
* for now we just trust the data.
|
|
||||||
*/
|
|
||||||
c = 0;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
continue; /* garbage */
|
continue; /* garbage */
|
||||||
switch (pos++) {
|
switch (pos++) {
|
||||||
|
@ -514,7 +507,25 @@ static int decode_header_bq(struct strbuf *it)
|
||||||
rfc2047 = 1;
|
rfc2047 = 1;
|
||||||
|
|
||||||
if (in != ep) {
|
if (in != ep) {
|
||||||
strbuf_add(&outbuf, in, ep - in);
|
/*
|
||||||
|
* We are about to process an encoded-word
|
||||||
|
* that begins at ep, but there is something
|
||||||
|
* before the encoded word.
|
||||||
|
*/
|
||||||
|
char *scan;
|
||||||
|
for (scan = in; scan < ep; scan++)
|
||||||
|
if (!isspace(*scan))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (scan != ep || in == it->buf) {
|
||||||
|
/*
|
||||||
|
* We should not lose that "something",
|
||||||
|
* unless we have just processed an
|
||||||
|
* encoded-word, and there is only LWS
|
||||||
|
* before the one we are about to process.
|
||||||
|
*/
|
||||||
|
strbuf_add(&outbuf, in, ep - in);
|
||||||
|
}
|
||||||
in = ep;
|
in = ep;
|
||||||
}
|
}
|
||||||
/* E.g.
|
/* E.g.
|
||||||
|
|
|
@ -11,7 +11,7 @@ test_expect_success 'split sample box' \
|
||||||
'git mailsplit -o. ../t5100/sample.mbox >last &&
|
'git mailsplit -o. ../t5100/sample.mbox >last &&
|
||||||
last=`cat last` &&
|
last=`cat last` &&
|
||||||
echo total is $last &&
|
echo total is $last &&
|
||||||
test `cat last` = 11'
|
test `cat last` = 12'
|
||||||
|
|
||||||
for mail in `echo 00*`
|
for mail in `echo 00*`
|
||||||
do
|
do
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
Author: Dmitriy Blinov
|
||||||
|
Email: bda@mnsspb.ru
|
||||||
|
Subject: Изменён список пакетов необходимых для сборки
|
||||||
|
Date: Wed, 12 Nov 2008 17:54:41 +0300
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
textlive-* исправлены на texlive-*
|
||||||
|
docutils заменён на python-docutils
|
||||||
|
|
||||||
|
Действительно, оказалось, что rest2web вытягивает за собой
|
||||||
|
python-docutils. В то время как сам rest2web не нужен.
|
||||||
|
|
||||||
|
Signed-off-by: Dmitriy Blinov <bda@mnsspb.ru>
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
howto/build_navy.txt | 6 +++---
|
||||||
|
1 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/howto/build_navy.txt b/howto/build_navy.txt
|
||||||
|
index 3fd3afb..0ee807e 100644
|
||||||
|
--- a/howto/build_navy.txt
|
||||||
|
+++ b/howto/build_navy.txt
|
||||||
|
@@ -119,8 +119,8 @@
|
||||||
|
- libxv-dev
|
||||||
|
- libusplash-dev
|
||||||
|
- latex-make
|
||||||
|
- - textlive-lang-cyrillic
|
||||||
|
- - textlive-latex-extra
|
||||||
|
+ - texlive-lang-cyrillic
|
||||||
|
+ - texlive-latex-extra
|
||||||
|
- dia
|
||||||
|
- python-pyrex
|
||||||
|
- libtool
|
||||||
|
@@ -128,7 +128,7 @@
|
||||||
|
- sox
|
||||||
|
- cython
|
||||||
|
- imagemagick
|
||||||
|
- - docutils
|
||||||
|
+ - python-docutils
|
||||||
|
|
||||||
|
#. на машине dinar: добавить свой открытый ssh-ключ в authorized_keys2 пользователя ddev
|
||||||
|
#. на своей машине: отредактировать /etc/sudoers (команда ``visudo``) примерно следующим образом::
|
||||||
|
--
|
||||||
|
1.5.6.5
|
|
@ -501,3 +501,55 @@ index 3e5fe51..aabfe5c 100644
|
||||||
|
|
||||||
--=-=-=--
|
--=-=-=--
|
||||||
|
|
||||||
|
From bda@mnsspb.ru Wed Nov 12 17:54:41 2008
|
||||||
|
From: Dmitriy Blinov <bda@mnsspb.ru>
|
||||||
|
To: navy-patches@dinar.mns.mnsspb.ru
|
||||||
|
Date: Wed, 12 Nov 2008 17:54:41 +0300
|
||||||
|
Message-Id: <1226501681-24923-1-git-send-email-bda@mnsspb.ru>
|
||||||
|
X-Mailer: git-send-email 1.5.6.5
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain;
|
||||||
|
charset=utf-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
Subject: [Navy-patches] [PATCH]
|
||||||
|
=?utf-8?b?0JjQt9C80LXQvdGR0L0g0YHQv9C40YHQvtC6INC/0LA=?=
|
||||||
|
=?utf-8?b?0LrQtdGC0L7QsiDQvdC10L7QsdGF0L7QtNC40LzRi9GFINC00LvRjyA=?=
|
||||||
|
=?utf-8?b?0YHQsdC+0YDQutC4?=
|
||||||
|
|
||||||
|
textlive-* исправлены на texlive-*
|
||||||
|
docutils заменён на python-docutils
|
||||||
|
|
||||||
|
Действительно, оказалось, что rest2web вытягивает за собой
|
||||||
|
python-docutils. В то время как сам rest2web не нужен.
|
||||||
|
|
||||||
|
Signed-off-by: Dmitriy Blinov <bda@mnsspb.ru>
|
||||||
|
---
|
||||||
|
howto/build_navy.txt | 6 +++---
|
||||||
|
1 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/howto/build_navy.txt b/howto/build_navy.txt
|
||||||
|
index 3fd3afb..0ee807e 100644
|
||||||
|
--- a/howto/build_navy.txt
|
||||||
|
+++ b/howto/build_navy.txt
|
||||||
|
@@ -119,8 +119,8 @@
|
||||||
|
- libxv-dev
|
||||||
|
- libusplash-dev
|
||||||
|
- latex-make
|
||||||
|
- - textlive-lang-cyrillic
|
||||||
|
- - textlive-latex-extra
|
||||||
|
+ - texlive-lang-cyrillic
|
||||||
|
+ - texlive-latex-extra
|
||||||
|
- dia
|
||||||
|
- python-pyrex
|
||||||
|
- libtool
|
||||||
|
@@ -128,7 +128,7 @@
|
||||||
|
- sox
|
||||||
|
- cython
|
||||||
|
- imagemagick
|
||||||
|
- - docutils
|
||||||
|
+ - python-docutils
|
||||||
|
|
||||||
|
#. на машине dinar: добавить свой открытый ssh-ключ в authorized_keys2 пользователя ddev
|
||||||
|
#. на своей машине: отредактировать /etc/sudoers (команда ``visudo``) примерно следующим образом::
|
||||||
|
--
|
||||||
|
1.5.6.5
|
||||||
|
|
Загрузка…
Ссылка в новой задаче