Thread (10 messages) flat view 10 messages, 2 authors, 2016-06-15

Re: [PATCH 1/6] shortlog: match both "Author:" and "author" on stdin

From: Eric Sunshine <hidden>
Date: 2016-06-15 23:07:47

On Friday, January 15, 2016, Jeff King [off-list ref] wrote:
quoted hunk ↗ jump to hunk
The original git-shortlog could read both the normal "git
log" output as well as "git log --format=raw". However, when it was
converted to C by b8ec592 (Build in shortlog, 2006-10-22),
the trailing colon became mandatory, and we no longer
matched the raw output.

Given the amount of intervening time without any bug
reports, it's probable that nobody cares. But given that
it's easy to fix, and that the end result is hopefully more
obvious and flexible (it could now easily accomodate matching
"Committer"), let's just make it work.

Signed-off-by: Jeff King <redacted>
---
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
@@ -89,13 +89,34 @@ static void insert_one_record(struct shortlog *log,
+/*
+ * If header is "author", match candidate against the regex /[Aa]uthor:? /,
+ * and return a pointer to the remainder of the string in out_value.
+ */
+static int match_ident_header(const char *candidate, const char *header,
+                             const char **out_value)
+{
+       const char *v;
+
+       if (tolower(*candidate++) != tolower(*header++))
+               return 0;
Presumably, this will never be invoked as match_ident_header("", "",
...) so we don't have to worry about it accessing beyond end-of-string
when it gets past this conditional. Does it deserve an
assert(*candidate) at the top of the function, though, or is that
overkill?
+       if (!skip_prefix(candidate, header, &v))
+               return 0;
+       if (*v == ':')
+               v++;
+       if (*v++ != ' ')
+               return 0;
+       *out_value = v;
+       return 1;
+}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help