aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2008-11-12 12:59:56 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2008-11-12 12:59:56 +0000
commit2598f761bb526afd8ec0de06071fcd6f1a897cd5 (patch)
tree563c08c1abfbab669dcacf51e76a6e5221fb192d
parent1ad4db1d8e47b8835f19ad8fe44475db51cf01f9 (diff)
downloadbusybox-w32-2598f761bb526afd8ec0de06071fcd6f1a897cd5.tar.gz
busybox-w32-2598f761bb526afd8ec0de06071fcd6f1a897cd5.tar.bz2
busybox-w32-2598f761bb526afd8ec0de06071fcd6f1a897cd5.zip
- add seq -w support (Natanael Copa)
-rw-r--r--coreutils/seq.c15
-rw-r--r--include/usage.h3
-rwxr-xr-xtestsuite/seq.tests7
3 files changed, 19 insertions, 6 deletions
diff --git a/coreutils/seq.c b/coreutils/seq.c
index 01d71f256..899cd696b 100644
--- a/coreutils/seq.c
+++ b/coreutils/seq.c
@@ -16,23 +16,30 @@ int seq_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
16int seq_main(int argc, char **argv) 16int seq_main(int argc, char **argv)
17{ 17{
18 double last, increment, i; 18 double last, increment, i;
19 enum { OPT_w = 1 };
20 unsigned opt = getopt32(argv, "+w");
21 unsigned width = 0;
19 22
23 argc -= optind;
24 argv += optind;
20 i = increment = 1; 25 i = increment = 1;
21 switch (argc) { 26 switch (argc) {
22 case 4:
23 increment = atof(argv[2]);
24 case 3: 27 case 3:
25 i = atof(argv[1]); 28 increment = atof(argv[1]);
26 case 2: 29 case 2:
30 i = atof(*argv);
31 case 1:
27 last = atof(argv[argc-1]); 32 last = atof(argv[argc-1]);
28 break; 33 break;
29 default: 34 default:
30 bb_show_usage(); 35 bb_show_usage();
31 } 36 }
37 if (opt & OPT_w) /* Pad to length of start or last */
38 width = MAX(strlen(*argv), strlen(argv[argc-1]));
32 39
33 /* You should note that this is pos-5.0.91 semantics, -- FK. */ 40 /* You should note that this is pos-5.0.91 semantics, -- FK. */
34 while ((increment > 0 && i <= last) || (increment < 0 && i >= last)) { 41 while ((increment > 0 && i <= last) || (increment < 0 && i >= last)) {
35 printf("%g\n", i); 42 printf("%0*g\n", width, i);
36 i += increment; 43 i += increment;
37 } 44 }
38 45
diff --git a/include/usage.h b/include/usage.h
index 71f221828..4360edba6 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -3594,11 +3594,12 @@
3594 "\nOther options are silently ignored; -oi is implied" \ 3594 "\nOther options are silently ignored; -oi is implied" \
3595 3595
3596#define seq_trivial_usage \ 3596#define seq_trivial_usage \
3597 "[first [increment]] last" 3597 "[-w] [first [increment]] last"
3598#define seq_full_usage "\n\n" \ 3598#define seq_full_usage "\n\n" \
3599 "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \ 3599 "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \
3600 "FIRST, INCREMENT default to 1\n" \ 3600 "FIRST, INCREMENT default to 1\n" \
3601 "\nArguments:" \ 3601 "\nArguments:" \
3602 "\n -w Pad to last with leading zeros" \
3602 "\n LAST" \ 3603 "\n LAST" \
3603 "\n FIRST LAST" \ 3604 "\n FIRST LAST" \
3604 "\n FIRST INCREMENT LAST" \ 3605 "\n FIRST INCREMENT LAST" \
diff --git a/testsuite/seq.tests b/testsuite/seq.tests
index ebb44e7a6..cea4eefb8 100755
--- a/testsuite/seq.tests
+++ b/testsuite/seq.tests
@@ -29,8 +29,13 @@ testing "seq count up by 2" "seq 4 2 8" "4\n6\n8\n" "" ""
29testing "seq count down by 2" "seq 8 -2 4" "8\n6\n4\n" "" "" 29testing "seq count down by 2" "seq 8 -2 4" "8\n6\n4\n" "" ""
30testing "seq count wrong way #1" "seq 4 -2 8" "" "" "" 30testing "seq count wrong way #1" "seq 4 -2 8" "" "" ""
31testing "seq count wrong way #2" "seq 8 2 4" "" "" "" 31testing "seq count wrong way #2" "seq 8 2 4" "" "" ""
32testing "seq count by .3" "seq 3 .3 4" "3\n3.3\n3.6\n3.9\n" "" "" 32testing "seq count by .3" "seq 3 .3 4" "3.0\n3.3\n3.6\n3.9\n" "" ""
33testing "seq count by -.9" "seq .7 -.9 -2.2" "0.7\n-0.2\n-1.1\n-2\n" "" "" 33testing "seq count by -.9" "seq .7 -.9 -2.2" "0.7\n-0.2\n-1.1\n-2\n" "" ""
34testing "seq count by zero" "seq 4 0 8 | head -n 10" "" "" "" 34testing "seq count by zero" "seq 4 0 8 | head -n 10" "" "" ""
35 35
36testing "seq one argument with padding" "seq -w 003" "001\n002\n003\n" "" ""
37testing "seq two arguments with padding" "seq -w 005 7" "005\n006\n007\n" "" ""
38testing "seq count down by 3 with padding" "seq -w 8 -3 04" "08\n05\n" "" ""
39testing "seq count by .3 with padding" "seq -w 03 .3 0004" "003.0\n003.3\n003.6\n003.9\n" "" ""
40
36exit $FAILCOUNT 41exit $FAILCOUNT