[PATCH] improve checks on usernames V3.
Harald Becker
ralda at gmx.de
Wed Aug 10 11:24:18 UTC 2011
Hallo Denys!
> On Tue, Aug 9, 2011 at 7:33 PM, Rich Felker <dalias at aerifal.cx> wrote:
>> On Tue, Aug 09, 2011 at 09:37:58AM +0200, Denys Vlasenko wrote:
>>> #define isalnum(a) bb_ascii_isalnum(a)
>>> static ALWAYS_INLINE int bb_ascii_isalnum(unsigned char a)
>>> {
>>> unsigned char b = a - '0';
>>> if (b <= 9)
>>> return (b <= 9);
>>> b = (a|0x20) - 'a';
>>> return b <= 'z' - 'a';
>>> }
>> I'm scared to ask why this is written in such an obfuscated way rather
>> than just
>>
>> return a-'0'<10U || (a|32)-'a'<26U;
> Tried it. Bloatcheck:
> [...]
FYI: I tried it too ... test this version:
return (unsigned char)(a-'0')<10U || (unsigned char)((a|32)-'a')<26U;
... may look obscure, but influences the way gcc produces code! May be
you need to fiddle with type casting the other arguments in the
expression :-(
--
Harald
More information about the busybox
mailing list