зеркало из 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;
|
||||
else if ('0' <= c && c <= '9')
|
||||
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
|
||||
continue; /* garbage */
|
||||
switch (pos++) {
|
||||
|
@ -514,7 +507,25 @@ static int decode_header_bq(struct strbuf *it)
|
|||
rfc2047 = 1;
|
||||
|
||||
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;
|
||||
}
|
||||
/* E.g.
|
||||
|
|
|
@ -11,7 +11,7 @@ test_expect_success 'split sample box' \
|
|||
'git mailsplit -o. ../t5100/sample.mbox >last &&
|
||||
last=`cat last` &&
|
||||
echo total is $last &&
|
||||
test `cat last` = 11'
|
||||
test `cat last` = 12'
|
||||
|
||||
for mail in `echo 00*`
|
||||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче