mailinfo: Remove only one set of square brackets
[gitweb.git] / builtin-mailinfo.c
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