# [PATCH] Trim ending whitespaces in exclude file if needed.

4 messages from 2010-10-15 to 2010-10-18. Participants: Vasyl', Jonathan Nieder, Junio C Hamano.
Thread: https://gitlist.dev/t/25456

## Vasyl', 2010-10-15 22:41

Subject: [PATCH] Trim ending whitespaces in exclude file if needed.
Message-ID: <AANLkTinUHQzuLJhZnVMKngEO75W=+5sES0WZFAFw5bDw@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTinUHQzuLJhZnVMKngEO75W%3D%2B5sES0WZFAFw5bDw%40mail.gmail.com

```
Signed-off-by: Vasyl' Vavrychuk <vvavrychuk@gmail.com>
---

Hope this can save someone's time debugging git.

 dir.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/dir.c b/dir.c
index d1e5e5e..704914b 100644
--- a/dir.c
+++ b/dir.c
@@ -171,7 +171,15 @@ void add_exclude(const char *string, const char *base,
 		to_exclude = 0;
 		string++;
 	}
+
 	len = strlen(string);
+	if (len && isspace((unsigned char)string[len - 1])) {
+		struct strbuf trim_buf = STRBUF_INIT;
+		strbuf_add(&trim_buf, string, len);
+		strbuf_rtrim(&trim_buf);
+		string = strbuf_detach(&trim_buf, &len);
+	}
+
 	if (len && string[len - 1] == '/') {
 		char *s;
 		x = xmalloc(sizeof(*x) + len);
-- 
1.7.3.1.msysgit.0

```

## Jonathan Nieder, 2010-10-17 02:41

Subject: Re: [PATCH] Trim ending whitespaces in exclude file if needed.
Message-ID: <20101017024133.GF26656@burratino>
URL: https://gitlist.dev/e/20101017024133.GF26656%40burratino
In-Reply-To: <AANLkTinUHQzuLJhZnVMKngEO75W=+5sES0WZFAFw5bDw@mail.gmail.com>

```
(+cc: msysgit)

Vasyl' wrote:

> Hope this can save someone's time debugging git.

It sounds like there's a story behind this one.  Could you tell it?
That would help future readers of this code to easily determine
why they shouldn't break it.

> --- a/dir.c
> +++ b/dir.c
> @@ -171,7 +171,15 @@ void add_exclude(const char *string, const char *base,
>  		to_exclude = 0;
>  		string++;
>  	}
> +

Why?

>  	len = strlen(string);
> +	if (len && isspace((unsigned char)string[len - 1])) {

This cast is not needed (see git-compat-util.h).

> +		struct strbuf trim_buf = STRBUF_INIT;
> +		strbuf_add(&trim_buf, string, len);
> +		strbuf_rtrim(&trim_buf);

Missing free(string)?

> +		string = strbuf_detach(&trim_buf, &len);
> +	}
> +
>  	if (len && string[len - 1] == '/') {

Thanks for a clear and pleasant read.
Jonathan

```

## Vasyl', 2010-10-17 09:29

Subject: Re: [PATCH] Trim ending whitespaces in exclude file if needed.
Message-ID: <AANLkTimrgGYXDtN_ukWuCpjGTibrMNLQvfpq8fe=VxS_@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTimrgGYXDtN_ukWuCpjGTibrMNLQvfpq8fe%3DVxS_%40mail.gmail.com
In-Reply-To: <20101017024133.GF26656@burratino>

```
Jonathan Nieder <jrnieder@gmail.com> wrote:

> (+cc: msysgit)
>
> Vasyl' wrote:
>
> > Hope this can save someone's time debugging git.
>
> It sounds like there's a story behind this one.  Could you tell it?
> That would help future readers of this code to easily determine
> why they shouldn't break it.
>
I modify either .git/info/exclude or .gitignore by copy-pasting `git
status`. But unfortunetly this adds spacing to ends of lines and ignoring
does not work...

>
> > --- a/dir.c
> > +++ b/dir.c
> > @@ -171,7 +171,15 @@ void add_exclude(const char *string, const char
> *base,
> >               to_exclude = 0;
> >               string++;
> >       }
> > +
>
> Why?
>
> >       len = strlen(string);
> > +     if (len && isspace((unsigned char)string[len - 1])) {
>
> This cast is not needed (see git-compat-util.h).
>
> > +             struct strbuf trim_buf = STRBUF_INIT;
> > +             strbuf_add(&trim_buf, string, len);
> > +             strbuf_rtrim(&trim_buf);
>
> Missing free(string)?
>
I have misunderstood in the first iteration memory managment in the
add_exclude's function code
 struct exclude *x;
char *s;
x = xmalloc(sizeof(*x) + len);
s = (char *)(x+1);
memcpy(s, string, len - 1);
s[len - 1] = '\0';
string = s;
And fix of my patch needs more change and testing. I will do this later.

>
> > +             string = strbuf_detach(&trim_buf, &len);
> > +     }
> > +
> >       if (len && string[len - 1] == '/') {
>
> Thanks for a clear and pleasant read.
>
Thanks for review.

> Jonathan
>

```

## Junio C Hamano, 2010-10-18 21:54

Subject: Re: [PATCH] Trim ending whitespaces in exclude file if needed.
Message-ID: <7v39s3416u.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v39s3416u.fsf%40alter.siamese.dyndns.org
In-Reply-To: <AANLkTimrgGYXDtN_ukWuCpjGTibrMNLQvfpq8fe=VxS_@mail.gmail.com>

```
"Vasyl'" <vvavrychuk@gmail.com> writes:

>> It sounds like there's a story behind this one.  Could you tell it?
>> That would help future readers of this code to easily determine
>> why they shouldn't break it.
>>
> I modify either .git/info/exclude or .gitignore by copy-pasting `git
> status`. But unfortunetly this adds spacing to ends of lines and ignoring
> does not work...

That makes it sound as if you would need a patch to fix your editor or
whatever you are using for copy/paste, rather than git, no?

I do not personally have need to ignore paths whose names end with
whitespaces, and I do not think anybody with such a need is sane, so in
that sense your patch would be less harmful than the purist in me finds
issues in it ;-)

But it changes the documented behaviour that requires documentation
updates, yes?

```
