diff options
-rwxr-xr-x | tests/seq.test | 14 | ||||
-rw-r--r-- | toys/lsb/seq.c | 4 |
2 files changed, 16 insertions, 2 deletions
diff --git a/tests/seq.test b/tests/seq.test index 3f3b4099..4d23f8e2 100755 --- a/tests/seq.test +++ b/tests/seq.test @@ -26,3 +26,17 @@ testing "seq separator -" "seq -s - 1 3" "1-2-3\n" "" "" testing "seq format string" 'seq -f %+01g -10 5 10' "-10\n-5\n+0\n+5\n+10\n" "" "" testing "seq separator and format string" "seq -f \%03g -s \; 5 -1 0" "005;004;003;002;001;000\n" "" "" +# Test -f format filtering +for i in %f %e %g "boo %f yah" "% f" %-1.2f %+-f "%+ - f" %.2f %3.f "%'.2f" \ + %%%f%% %%%f%%% +do + testing "seq filter -f \"$i\"" "seq -f \"$i\" 1 3 > /dev/null && echo yes" \ + "yes\n" "" "" +done +# Test -f format filtering failures +for i in %d %s "" "boo %f %f yah" "%*f" %-1.2.3f '%2$f' %1-f "%1 f" \ + %2..2f +do + testing "seq filter reject -f '$i'" \ + "seq -f '$i' 1 3 2>/dev/null || echo no" "no\n" "" "" +done diff --git a/toys/lsb/seq.c b/toys/lsb/seq.c index 322940b3..f1ca0d00 100644 --- a/toys/lsb/seq.c +++ b/toys/lsb/seq.c @@ -17,7 +17,7 @@ config SEQ to 1. Two arguments are used as first and last. Arguments can be negative or floating point. - -f Use fmt_str as a floating point format string + -f Use fmt_str as a printf-style floating point format string -s Use sep_str as separator, default is a newline character */ @@ -47,7 +47,7 @@ static void insanitize(char *f) } // The @ is a byte offset, not utf8 chars. Waiting for somebody to complain... - if (*s) error_exit("bad -f '%s'@%d", f, s-f+1); + if (*s || !found) error_exit("bad -f '%s'@%d", f, s-f+1); } void seq_main(void) |