mailinfo: Remove only one set of square brackets
authorAndreas Ericsson <ae@op5.se>
Mon, 29 Jun 2009 09:55:51 +0000 (11:55 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 8 Jul 2009 18:22:51 +0000 (11:22 -0700)
git-format-patch prepends patches with a [PATCH x/n] prefix, but
mailinfo used to remove any number of square-bracket pairs and
the content between them. This prevents one from using a commit
subject like this:

  [ and ] must be allowed as input

Removing the square bracket pair from this rather clumsily
constructed subject line loses important information, so we must
take care not to.

This patch causes the subject stripping to stop after it has
encountered one pair of square brackets.

One possible downside of this patch is that the patch-handling
programs will now fail at removing author-added square-brackets
to be removed, such as

  [RFC][PATCH x/n]

However, since format-patch only adds one set of square brackets,
this behaviour is quite easily undesrstood and defended while the
previous behaviour is not.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-mailinfo.c
t/t5100/info0012
t/t5100/sample.mbox

index 1eeeb4de6d0d54e3fd753b7f057351094e10a24e..be42532d437620333f7ddeb5d1825383435800ce 100644 (file)
@@ -222,6 +222,8 @@ static void cleanup_subject(struct strbuf *subject)
 {
        char *pos;
        size_t remove;
+       int brackets_removed = 0;
+
        while (subject->len) {
                switch (*subject->buf) {
                case 'r': case 'R':
@@ -236,10 +238,15 @@ static void cleanup_subject(struct strbuf *subject)
                        strbuf_remove(subject, 0, 1);
                        continue;
                case '[':
+                       /* remove only one set of square brackets */
+                       if (brackets_removed)
+                               break;
+
                        if ((pos = strchr(subject->buf, ']'))) {
                                remove = pos - subject->buf;
                                if (remove <= (subject->len - remove) * 2) {
                                        strbuf_remove(subject, 0, remove + 1);
+                                       brackets_removed = 1;
                                        continue;
                                }
                        } else
index ac1216ff75709a329e44b0a2796da526244e8cb0..9cd1415d25569baf0d762937681ddaae7a6f3789 100644 (file)
@@ -1,5 +1,5 @@
 Author: Dmitriy Blinov
 Email: bda@mnsspb.ru
-Subject: Изменён список пакетов необходимых для сборки
+Subject: [Navy-patches] Изменён список пакетов необходимых для сборки
 Date: Wed, 12 Nov 2008 17:54:41 +0300
 
index c5ad206b40e1fcf79019cebdfd848d72c17cefcc..ba4d0c9baf21753aa95447e49f7a0f3843058d0e 100644 (file)
@@ -514,7 +514,7 @@ MIME-Version: 1.0
 Content-Type: text/plain;
   charset=utf-8
 Content-Transfer-Encoding: 8bit
-Subject: [Navy-patches] [PATCH]
+Subject: [PATCH] [Navy-patches]
        =?utf-8?b?0JjQt9C80LXQvdGR0L0g0YHQv9C40YHQvtC6INC/0LA=?=
        =?utf-8?b?0LrQtdGC0L7QsiDQvdC10L7QsdGF0L7QtNC40LzRi9GFINC00LvRjyA=?=
        =?utf-8?b?0YHQsdC+0YDQutC4?=