Re: [PATCH] mailinfo: Remove only one set of square brackets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andreas Ericsson <ae@xxxxxx> writes:

> git-format-patch prepends patches with a [PATCH x/n] prefix, but
> mailinfo used to remove any number of square-bracket pairs and
> the content between them. This prevents one from using a commit
> subject like this:
>
>   [ and ] must be allowed as input
>
> Removing the square bracket pair from this rather clumsily
> constructed subject line loses important information, so we must
> take care not to.
>
> This patch causes the subject stripping to stop after it has
> encountered one pair of square brackets.
>
> One possible downside of this patch is that the patch-handling
> programs will now fail at removing author-added square-brackets
> to be removed, such as
>
>   [RFC][PATCH x/n]
>
> However, since format-patch only adds one set of square brackets,
> this behaviour is quite easily undesrstood and defended while the
> previous behaviour is not.
>
> Signed-off-by: Andreas Ericsson <ae@xxxxxx>
> ---

All good points, and I like this one, including its Subject: line.

>  builtin-mailinfo.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
> index 92637ac..fb5ad70 100644
> --- a/builtin-mailinfo.c
> +++ b/builtin-mailinfo.c
> @@ -221,6 +221,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':
> @@ -235,10 +237,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
> -- 
> 1.6.3.3.354.gfb24
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]