From: Kyle J. McKay Date: Thu, 22 May 2014 00:07:36 GMT Subject: Re: [PATCH 2/9] strbuf: add strbuf_tolower function Message-ID: In-Reply-To: <20140521102742.GB30464@sigill.intra.peff.net> On May 21, 2014, at 03:27, Jeff King wrote: > This makes config's lowercase() function public. > > Note that we could continue to offer a pure-string > lowercase, but there would be no callers (in most > pure-string cases, we actually duplicate and lowercase the > duplicate). > > Signed-off-by: Jeff King > --- > This ones gets used later on... > > Documentation/technical/api-strbuf.txt | 4 ++++ > config.c | 8 +------- > strbuf.c | 7 +++++++ > strbuf.h | 1 + > 4 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/Documentation/technical/api-strbuf.txt b/Documentation/ > technical/api-strbuf.txt > index 3350d97..8480f89 100644 > --- a/Documentation/technical/api-strbuf.txt > +++ b/Documentation/technical/api-strbuf.txt > @@ -125,6 +125,10 @@ Functions > > Strip whitespace from the end of a string. > > +`strbuf_tolower`:: > + > + Lowercase each character in the buffer using `tolower`. > + > `strbuf_cmp`:: > > Compare two buffers. Returns an integer less than, equal to, or > greater > diff --git a/config.c b/config.c > index a30cb5c..03ce5c6 100644 > --- a/config.c > +++ b/config.c > @@ -147,12 +147,6 @@ int git_config_include(const char *var, const > char *value, void *data) > return ret; > } > > -static void lowercase(char *p) > -{ > - for (; *p; p++) > - *p = tolower(*p); > -} > - > void git_config_push_parameter(const char *text) > { > struct strbuf env = STRBUF_INIT; > @@ -180,7 +174,7 @@ int git_config_parse_parameter(const char *text, > strbuf_list_free(pair); > return error("bogus config parameter: %s", text); > } > - lowercase(pair[0]->buf); > + strbuf_tolower(pair[0]); > if (fn(pair[0]->buf, pair[1] ? pair[1]->buf : NULL, data) < 0) { > strbuf_list_free(pair); > return -1; > diff --git a/strbuf.c b/strbuf.c > index ee96dcf..a1b8a47 100644 > --- a/strbuf.c > +++ b/strbuf.c > @@ -106,6 +106,13 @@ void strbuf_ltrim(struct strbuf *sb) > sb->buf[sb->len] = '\0'; > } > > +void strbuf_tolower(struct strbuf *sb) > +{ > + size_t i; > + for (i = 0; i < sb->len; i++) > + sb->buf[i] = tolower(sb->buf[i]); > +} > + Wouldn't a direct transfer of the lowercase function be something more like: void strbuf_tolower(struct strbuf *sb) { char *p = sb->buf; for (; *p; p++) *p = tolower(*p); } That seems to me to be a bit more efficient. According to the comments in strbuf.c, "people can always assume buf is non NULL and - >buf is NUL terminated even for a freshly initialized strbuf." > struct strbuf **strbuf_split_buf(const char *str, size_t slen, > int terminator, int max) > { > diff --git a/strbuf.h b/strbuf.h > index 39c14cf..6b6f745 100644 > --- a/strbuf.h > +++ b/strbuf.h > @@ -45,6 +45,7 @@ static inline void strbuf_setlen(struct strbuf > *sb, size_t len) > extern void strbuf_trim(struct strbuf *); > extern void strbuf_rtrim(struct strbuf *); > extern void strbuf_ltrim(struct strbuf *); > +extern void strbuf_tolower(struct strbuf *sb); > extern int strbuf_cmp(const struct strbuf *, const struct strbuf *); > > /* > -- > 2.0.0.rc1.436.g03cb729 >