Date: Thu, 24 Jan 2019 16:18:49 +0100 From: Joerg Sonnenberger <jo...@bec.de> Message-ID: <20190124151849.ga10...@britannica.bec.de>
| This is overcomplicated and fragile, IMO. Can we just go back to the old | code and switch the strtod to strtod_l with LC_C_LOCALE? That solves the | input problem. We could certainly do that, but while it is a little complicated, I do not really think it is fragile. Using a locale specific decimal radix in a script is fragile - but the only way to avoid that is either to effectively give up on non-C locales entirely for scripts, or drop all support for fractional numbers as args to any command. Note: the arg to "sleep" might come as ... echo -n "How many seconds do you want to sleep? " read secs sleep "${secs}" (with some error checking). I have no idea why sleep() was made to parse its arg in a locale specific way, but that was done long long ago, and was (according to the comments) done quite deliberately. I think changing that decison (rather than just avoiding the problem, as the current "fix" does) needs more discussion than a few comments on the source-changes-d list. kre ps: "long long ago" means 1997 - this was added in version 1.10 of sleep.c along with the comment explaining that it allows a locale specific radix to be used. 1997 means this was in NetBSD 1.3 and has been in all versions since. Even if we were to change that for NetBSD 9, I don't think such an alteration should be done in a point release, so we will need to make something deal with the problem for 8.1