Subject: Re: [PATCH v7 1/2] format-patch: make newline after signature conditional

From: Junio C Hamano <[email-masked]>
Date: Wed, 21 May 2014 14:22:38 -0700

Jeremiah Mahler <[email-masked]> writes:

> From: Jeff King <[email-masked]>
>
> When we print an email signature, we print the divider "--
> \n", then the signature string, then two newlines.
> Traditionally the signature is a one-liner (and the default
> is just the git version), so the extra newline makes sense.
>
> But one could easily specify a longer, multi-line signature,
> like:
>
>   git format-patch --signature='
>   this is my long signature
>
>   it has multiple lines
>   ' ...
>
> We should notice that it already has its own trailing
> newline, and suppress one of ours.

That is a half-good example; the first line being a blank is
misleading, as we are not doing anything about that, though.

Other than that, the patch looks OK to me.  If anybody complains we
can fix it later to do more cleansing.

> Signed-off-by: Jeff King <[email-masked]>
> Signed-off-by: Jeremiah Mahler <[email-masked]>
> ---
>  builtin/log.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/log.c b/builtin/log.c
> index 39e8836..5acc048 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -844,8 +844,13 @@ static void gen_message_id(struct rev_info *info, char *base)
>  
>  static void print_signature(void)
>  {
> -	if (signature && *signature)
> -		printf("-- \n%s\n\n", signature);
> +	if (!signature || !*signature)
> +		return;
> +
> +	printf("-- \n%s", signature);
> +	if (signature[strlen(signature)-1] != '\n')
> +		putchar('\n');
> +	putchar('\n');
>  }
>  
>  static void add_branch_description(struct strbuf *buf, const char *branch_name)