aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/sleep.c18
1 files changed, 11 insertions, 7 deletions
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));