From: Vasyl' Date: Sun, 17 Oct 2010 09:29:06 GMT Subject: Re: [PATCH] Trim ending whitespaces in exclude file if needed. Message-ID: In-Reply-To: <20101017024133.GF26656@burratino> Jonathan Nieder 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 >