Hi Joe, On Thu, Jun 30, 2016 at 9:26 PM, Joe Perches <j...@perches.com> wrote: > On Wed, 2016-06-29 at 21:52 +0300, Andy Shevchenko wrote: >> On Wed, 2016-06-29 at 20:31 +0200, Michal Nazarewicz wrote: > [] >> > tolower macro maps to __tolower function which calls isupper to >> > to determine if character is an upper case letter before converting >> > it to lower case. This preservers non-letters unchanged which is >> > what you want in usual case. >> > >> > However, hex_to_bin does not care about non-letter characters so >> > such conversion can be performed as long as (i) upper case letters >> > become lower case, (ii) lower case letters are unchanged and (iii) >> > non-letters stay non-letters. >> > >> > This is exactly what _tolower function does and using it makes it >> > possible to avoid _ctype table lookup performed by the isupper >> > table. >> > >> > Furthermore, since _tolower conversion is done unconditionally, this >> > also eliminates a single branch. >> This change I agree with since _tolower() is specific for lib internal >> usage in the kernel. > > Perhaps _tolower should be used a bit more in lib > --- > lib/string.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/lib/string.c b/lib/string.c > index ed83562..b0e72fd 100644 > --- a/lib/string.c > +++ b/lib/string.c > @@ -53,8 +53,8 @@ int strncasecmp(const char *s1, const char *s2, size_t len) > break; > if (c1 == c2) > continue; > - c1 = tolower(c1); > - c2 = tolower(c2); > + c1 = _tolower(c1); > + c2 = _tolower(c2);
No, we do care about non-alphabetical characters here. Using _tolower is equivalent to ignoring bit 5 in each byte of the string. > if (c1 != c2) > break; > } while (--len); > @@ -69,8 +69,8 @@ int strcasecmp(const char *s1, const char *s2) > int c1, c2; > > do { > - c1 = tolower(*s1++); > - c2 = tolower(*s2++); > + c1 = _tolower(*s1++); > + c2 = _tolower(*s2++); Likewise > } while (c1 == c2 && c1 != 0); > return c1 - c2; > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds