seq: fix input handling in non-C locales
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 15 Jun 2009 13:47:58 +0000 (15:47 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 15 Jun 2009 13:47:58 +0000 (15:47 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/seq.c

index bb39a5b54ad3a52a7e8804a651cabac30aa615fb..03ae3c632be4a175144e4c466ae12c5296734edc 100644 (file)
@@ -22,8 +22,15 @@ int seq_main(int argc, char **argv)
        unsigned width;
        unsigned frac_part;
        const char *sep, *opt_s = "\n";
-       unsigned opt = getopt32(argv, "+ws:", &opt_s);
+       unsigned opt;
 
+#if ENABLE_LOCALE_SUPPORT
+       /* Undo busybox.c: on input, we want to use dot
+        * as fractional separator, regardless of current locale */
+       setlocale(LC_NUMERIC, "C");
+#endif
+
+       opt = getopt32(argv, "+ws:", &opt_s);
        argc -= optind;
        argv += optind;
        first = increment = 1;
@@ -44,6 +51,10 @@ int seq_main(int argc, char **argv)
                        bb_show_usage();
        }
 
+#if ENABLE_LOCALE_SUPPORT
+       setlocale(LC_NUMERIC, "");
+#endif
+
        /* Last checked to be compatible with: coreutils-6.10 */
        width = 0;
        frac_part = 0;