nl: ensure '-b n' option displays file content
No binary (build failed)
—
(log yok)
| @@ -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; | |
| @@ -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) | |
| @@ -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; | |
| @@ -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 | |
| @@ -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 |