From 0f2e278a8a44751594f461ee753b81da365b1147 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 24 Sep 2010 12:39:45 +0200 Subject: sleep: fix fractional arguments in non-POSIX locale function old new delta sleep_main 390 379 -11 Signed-off-by: Denys Vlasenko --- coreutils/sleep.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'coreutils') diff --git a/coreutils/sleep.c b/coreutils/sleep.c index 12798d9a7..9acb2d15f 100644 --- a/coreutils/sleep.c +++ b/coreutils/sleep.c @@ -49,6 +49,9 @@ int sleep_main(int argc UNUSED_PARAM, char **argv) #if ENABLE_FEATURE_FLOAT_SLEEP +# if ENABLE_LOCALE_SUPPORT + setlocale (LC_NUMERIC, "C"); +# endif duration = 0; do { char *arg = *argv; @@ -62,14 +65,15 @@ int sleep_main(int argc UNUSED_PARAM, char **argv) d = strtod(arg, &pp); if (errno || *pp) bb_show_usage(); - arg[len] = sv; - len--; - sv = arg[len]; - arg[len] = '1'; - duration += d * xatoul_sfx(&arg[len], sfx); - arg[len] = sv; - } else + arg += len; + *arg-- = sv; + sv = *arg; + *arg = '1'; + duration += d * xatoul_sfx(arg, sfx); + *arg = sv; + } else { duration += xatoul_sfx(arg, sfx); + } } while (*++argv); ts.tv_sec = MAXINT(typeof(ts.tv_sec)); -- cgit v1.2.3