On Sun, Sep 20, 2015 at 09:40:05PM -0600, Bob Beck wrote: > I concur, I don't want to see a plethora of "isnumber" > "ismaybeanumber" bullshit in the tree that > do the same thing "isdigit" does.. if for whatever reason we want > isdigit to be more efficient because > the most important thing I have to do is make shell sleep more > efficient, we should fix isdigit, or the locale poo.. > > But for sure not introduce non-standard ascii-only replacements into > all code that do not quite what libc does.. > > Jesus ted did you learn nothing from OpenSSL? :)
Just remove the setlocale() call to leave sleep(1) in the default "C" locale. isdigit() and friends can now be considered ASCII-only. When we still had latin1 etc. it was possible in theory that values between 128 and 255 represented a digit. But now, isdigit() does the same regardless of locale setting (C or UTF-8) since it cannot be given a multibyte sequence, i.e. it will not deal with character values above 127. The function that parses funny numbers is iswdigit() which gets a wchar_t. But sleep(1) doesn't need that.