diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2008-11-12 15:59:56 +0300 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2008-11-12 15:59:56 +0300 |
commit | 2598f761bb526afd8ec0de06071fcd6f1a897cd5 (patch) | |
tree | 563c08c1abfbab669dcacf51e76a6e5221fb192d /coreutils | |
parent | 1ad4db1d8e47b8835f19ad8fe44475db51cf01f9 (diff) |
- add seq -w support (Natanael Copa)
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/seq.c | 15 |
1 files changed, 11 insertions, 4 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; int seq_main(int argc, char **argv) { double last, increment, i; + enum { OPT_w = 1 }; + unsigned opt = getopt32(argv, "+w"); + unsigned width = 0; + argc -= optind; + argv += optind; i = increment = 1; switch (argc) { - case 4: - increment = atof(argv[2]); case 3: - i = atof(argv[1]); + increment = atof(argv[1]); case 2: + i = atof(*argv); + case 1: last = atof(argv[argc-1]); break; default: bb_show_usage(); } + if (opt & OPT_w) /* Pad to length of start or last */ + width = MAX(strlen(*argv), strlen(argv[argc-1])); /* You should note that this is pos-5.0.91 semantics, -- FK. */ while ((increment > 0 && i <= last) || (increment < 0 && i >= last)) { - printf("%g\n", i); + printf("%0*g\n", width, i); i += increment; } |