bc: convert to "G trick" - this returns bc to zero bss increase
[oweals/busybox.git] / coreutils / seq.c
index 84d11fd8c7f9d9b26ff759b292eb3ffb4cb23192..c26ff06b9a575f1e1d1dedf0d5aa9acee36482b7 100644 (file)
@@ -4,11 +4,30 @@
  *
  * Copyright (C) 2004, Glenn McGrath
  *
- * Licensed under the GPL v2, see the file LICENSE in this tarball.
+ * Licensed under GPLv2, see file LICENSE in this source tree.
  */
+//config:config SEQ
+//config:      bool "seq (3.6 kb)"
+//config:      default y
+//config:      help
+//config:      print a sequence of numbers
+
+//applet:IF_SEQ(APPLET_NOEXEC(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq))
+/* was NOFORK, but then "seq 1 999999999" can't be ^C'ed if run by hush */
+
+//kbuild:lib-$(CONFIG_SEQ) += seq.o
+
+//usage:#define seq_trivial_usage
+//usage:       "[-w] [-s SEP] [FIRST [INC]] LAST"
+//usage:#define seq_full_usage "\n\n"
+//usage:       "Print numbers from FIRST to LAST, in steps of INC.\n"
+//usage:       "FIRST, INC default to 1.\n"
+//usage:     "\n       -w      Pad to last with leading zeros"
+//usage:     "\n       -s SEP  String separator"
+
 #include "libbb.h"
 
-/* This is a NOFORK applet. Be very careful! */
+/* This is a NOEXEC applet. Be very careful! */
 
 int seq_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int seq_main(int argc, char **argv)
@@ -86,7 +105,8 @@ int seq_main(int argc, char **argv)
        v = first;
        n = 0;
        while (increment >= 0 ? v <= last : v >= last) {
-               printf("%s%0*.*f", sep, width, frac_part, v);
+               if (printf("%s%0*.*f", sep, width, frac_part, v) < 0)
+                       break; /* I/O error, bail out (yes, this really happens) */
                sep = opt_s;
                /* v += increment; - would accumulate floating point errors */
                n++;