Re: [PATCH/RFC v3 6/8] Add case insensitivity support when using git ls-files
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Oct 3, 2010, 18:19 UTC
- Message-ID
- <201010032019.09244.j6t@kdbg.org>
- In-Reply-To
- <AANLkTimH8Lj69qcOCmR3+5HYfgKnr5nyMvQU=9h0=FaB@mail.gmail.com>
On Sonntag, 3. Oktober 2010, Thomas Adam wrote:
Show 36 quoted lines
> Hi --
>
> On 3 October 2010 10:56, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
> > + if (ignore_case) {
> > + for (;;) {
> > + unsigned char c1 = tolower(*match);
> > + unsigned char c2 = tolower(*name);
> > + if (c1 == '\0' || is_glob_special(c1))
> > + break;
> > + if (c1 != c2)
> > + return 0;
> > + match++;
> > + name++;
> > + namelen--;
> > + }
> > + } else {
> > + for (;;) {
> > + unsigned char c1 = *match;
> > + unsigned char c2 = *name;
> > + if (c1 == '\0' || is_glob_special(c1))
> > + break;
> > + if (c1 != c2)
> > + return 0;
> > + match++;
> > + name++;
> > + namelen--;
> > + }
> > }
>
> It's a real shame about the code duplication here. Can we not avoid
> it just by doing:
>
> unsigned char c1 = (ignore_case) ? tolower(*match) : *match;
> unisgned char c2 = (ignore_case) ? tolower(*name) : *name;
>
> I appreciate that to some it might look like perl golf, but...It has been discussed, and IIRC, the concensus was to keep the code duplication because this is an inner loop.
-- Hannes