shortlog: optimize out useless "<none>" normalization
[gitweb.git] / builtin / shortlog.c
index 973b50d417753618da50b9d74d290280bc914ff7..a7708c3a333d2266fab5bdeec3b2b04baa3003af 100644 (file)
@@ -31,13 +31,9 @@ static void insert_one_record(struct shortlog *log,
                              const char *author,
                              const char *oneline)
 {
-       const char *dot3 = log->common_repo_prefix;
-       char *buffer, *p;
        struct string_list_item *item;
        const char *mailbuf, *namebuf;
        size_t namelen, maillen;
-       const char *eol;
-       struct strbuf subject = STRBUF_INIT;
        struct strbuf namemailbuf = STRBUF_INIT;
        struct ident_split ident;
 
@@ -59,34 +55,43 @@ static void insert_one_record(struct shortlog *log,
        if (item->util == NULL)
                item->util = xcalloc(1, sizeof(struct string_list));
 
-       /* Skip any leading whitespace, including any blank lines. */
-       while (*oneline && isspace(*oneline))
-               oneline++;
-       eol = strchr(oneline, '\n');
-       if (!eol)
-               eol = oneline + strlen(oneline);
-       if (starts_with(oneline, "[PATCH")) {
-               char *eob = strchr(oneline, ']');
-               if (eob && (!eol || eob < eol))
-                       oneline = eob + 1;
-       }
-       while (*oneline && isspace(*oneline) && *oneline != '\n')
-               oneline++;
-       format_subject(&subject, oneline, " ");
-       buffer = strbuf_detach(&subject, NULL);
-
-       if (dot3) {
-               int dot3len = strlen(dot3);
-               if (dot3len > 5) {
-                       while ((p = strstr(buffer, dot3)) != NULL) {
-                               int taillen = strlen(p) - dot3len;
-                               memcpy(p, "/.../", 5);
-                               memmove(p + 5, p + dot3len, taillen + 1);
+       if (log->summary)
+               string_list_append(item->util, xstrdup(""));
+       else {
+               const char *dot3 = log->common_repo_prefix;
+               char *buffer, *p;
+               struct strbuf subject = STRBUF_INIT;
+               const char *eol;
+
+               /* Skip any leading whitespace, including any blank lines. */
+               while (*oneline && isspace(*oneline))
+                       oneline++;
+               eol = strchr(oneline, '\n');
+               if (!eol)
+                       eol = oneline + strlen(oneline);
+               if (starts_with(oneline, "[PATCH")) {
+                       char *eob = strchr(oneline, ']');
+                       if (eob && (!eol || eob < eol))
+                               oneline = eob + 1;
+               }
+               while (*oneline && isspace(*oneline) && *oneline != '\n')
+                       oneline++;
+               format_subject(&subject, oneline, " ");
+               buffer = strbuf_detach(&subject, NULL);
+
+               if (dot3) {
+                       int dot3len = strlen(dot3);
+                       if (dot3len > 5) {
+                               while ((p = strstr(buffer, dot3)) != NULL) {
+                                       int taillen = strlen(p) - dot3len;
+                                       memcpy(p, "/.../", 5);
+                                       memmove(p + 5, p + dot3len, taillen + 1);
+                               }
                        }
                }
-       }
 
-       string_list_append(item->util, buffer);
+               string_list_append(item->util, buffer);
+       }
 }
 
 static void read_from_stdin(struct shortlog *log)