From: Alex Riesen Date: Thu, 28 Aug 2008 20:27:10 GMT Subject: Re: [PATCH] dir.c: avoid c99 array initialization Message-ID: <81b0412b0808281327q302da48cl9e04ce999ff33903@mail.gmail.com> In-Reply-To: <20080828201657.GH21072@spearce.org> 2008/8/28 Shawn O. Pearce : > Alex Riesen wrote: >> >> For just these 5 values it is likely more effective to just use >> a conditional statement (less stack requested, less likely >> some stupid compiler tries to optimize it wrongly). >> And just as readable. >> >> diff --git a/dir.c b/dir.c >> index 92452eb..1cf5985 100644 >> --- a/dir.c >> +++ b/dir.c >> @@ -680,17 +680,12 @@ static int cmp_name(const void *p1, const void *p2) >> */ >> static int simple_length(const char *match) >> { >> - const char special[256] = { >> - [0] = 1, ['?'] = 1, >> - ['\\'] = 1, ['*'] = 1, >> - ['['] = 1 >> - }; >> int len = -1; >> >> for (;;) { >> unsigned char c = *match++; >> len++; >> - if (special[c]) >> + if (!c || '?' == c || '\\' == c || '*' == c || '[' == c) > > I am reminded of a year old thread with my patch to this: > > http://kerneltrap.org/mailarchive/git/2007/4/15/243541 > > The patch never applied. I wonder why. Was it just Dscho's comment? > Likely. And that sane_ctype Junio mentioned, which still has 5 bits free