Re: [PATCH 1/6] shortlog: match both "Author:" and "author" on stdin
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jan 15, 2016, 23:19 UTC
- Message-ID
- <CAPig+cQXDn+iR29vKzSRAUBYgXzTiR5MykKAtvCcF0SE7J4kUg@mail.gmail.com>
- In-Reply-To
- <20160115170823.GA21102@sigill.intra.peff.net>
On Friday, January 15, 2016, Jeff King <peff@peff.net> wrote:
Show 27 quoted lines
> 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 <peff@peff.net>
> ---
> 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?
Show 9 quoted lines
> + if (!skip_prefix(candidate, header, &v)) > + return 0; > + if (*v == ':') > + v++; > + if (*v++ != ' ') > + return 0; > + *out_value = v; > + return 1; > +}