Applied, thanks!
On Thu, Jan 21, 2021 at 9:41 AM Ron Yorston <[email protected]> wrote: > > The command 'nl -b n' should output no line numbers, just some > spaces as a placeholder followed by the actual file content. > > Add tests for line numbering by cat and nl. The correct results > were obtained from coreutils. > > function old new delta > print_numbered_lines 152 157 +5 > .rodata 182456 182453 -3 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 1/1 up/down: 5/-3) Total: 2 bytes > > Signed-off-by: Ron Yorston <[email protected]> > --- > coreutils/cat.c | 2 +- > coreutils/nl.c | 2 +- > libbb/print_numbered_lines.c | 3 ++- > testsuite/cat.tests | 24 ++++++++++++++++++++++ > testsuite/nl.tests | 39 ++++++++++++++++++++++++++++++++++++ > 5 files changed, 67 insertions(+), 3 deletions(-) > create mode 100755 testsuite/nl.tests > > diff --git a/coreutils/cat.c b/coreutils/cat.c > index 65f0648f9..dae6089bd 100644 > --- a/coreutils/cat.c > +++ b/coreutils/cat.c > @@ -201,7 +201,7 @@ int cat_main(int argc UNUSED_PARAM, char **argv) > ns.start = 1; > ns.inc = 1; > ns.sep = "\t"; > - ns.empty_str = "\n"; > + ns.empty_str = NULL; > ns.all = !(opts & CAT_OPT_b); /* -n without -b */ > ns.nonempty = (opts & CAT_OPT_b); /* -b (with or without -n) > */ > exitcode = EXIT_SUCCESS; > diff --git a/coreutils/nl.c b/coreutils/nl.c > index 800b73c26..d06673881 100644 > --- a/coreutils/nl.c > +++ b/coreutils/nl.c > @@ -68,7 +68,7 @@ int nl_main(int argc UNUSED_PARAM, char **argv) > &ns.width, &ns.sep, &ns.start, &ns.inc, &opt_b); > ns.all = (opt_b[0] == 'a'); > ns.nonempty = (opt_b[0] == 't'); > - ns.empty_str = xasprintf("%*s\n", ns.width + (int)strlen(ns.sep), ""); > + ns.empty_str = xasprintf("%*s", ns.width + (int)strlen(ns.sep), ""); > > argv += optind; > if (!*argv) > diff --git a/libbb/print_numbered_lines.c b/libbb/print_numbered_lines.c > index d6459d7c3..4758068a4 100644 > --- a/libbb/print_numbered_lines.c > +++ b/libbb/print_numbered_lines.c > @@ -22,10 +22,11 @@ int FAST_FUNC print_numbered_lines(struct number_state > *ns, const char *filename > if (ns->all > || (ns->nonempty && line[0]) > ) { > - printf("%*u%s%s\n", ns->width, N, ns->sep, line); > + printf("%*u%s", ns->width, N, ns->sep); > N += ns->inc; > } else if (ns->empty_str) > fputs(ns->empty_str, stdout); > + puts(line); > free(line); > } > ns->start = N; > diff --git a/testsuite/cat.tests b/testsuite/cat.tests > index 10970dc90..cf924ab5b 100755 > --- a/testsuite/cat.tests > +++ b/testsuite/cat.tests > @@ -22,4 +22,28 @@ testing 'cat -v' \ > 'foo\n' > SKIP= > > +optional FEATURE_CATN > +testing 'cat -n' \ > + 'cat -n' \ > +"\ > + 1 line 1 > + 2 > + 3 line 3 > +" \ > + '' \ > + 'line 1\n\nline 3\n' > +SKIP= > + > +optional FEATURE_CATN > +testing 'cat -b' \ > + 'cat -b' \ > +"\ > + 1 line 1 > + > + 2 line 3 > +" \ > + '' \ > + 'line 1\n\nline 3\n' > +SKIP= > + > exit $FAILCOUNT > diff --git a/testsuite/nl.tests b/testsuite/nl.tests > new file mode 100755 > index 000000000..95e7abb58 > --- /dev/null > +++ b/testsuite/nl.tests > @@ -0,0 +1,39 @@ > +#!/bin/sh > +# Copyright 2021 by Ron Yorston > +# Licensed under GPLv2, see file LICENSE in this source tree. > + > +. ./testing.sh > + > +# testing "test name" "commands" "expected result" "file input" "stdin" > + > +testing "nl numbers all lines" \ > + "nl -b a input" \ > +"\ > + 1 line 1 > + 2 > + 3 line 3 > +" \ > + "line 1\n\nline 3\n" \ > + "" > + > +testing "nl numbers non-empty lines" \ > + "nl -b t input" \ > +"\ > + 1 line 1 > + > + 2 line 3 > +" \ > + "line 1\n\nline 3\n" \ > + "" > + > +testing "nl numbers no lines" \ > + "nl -b n input" \ > +"\ > + line 1 > + > + line 3 > +" \ > + "line 1\n\nline 3\n" \ > + "" > + > +exit $FAILCOUNT > -- > 2.29.2 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
