cat: fix cat -e and cat -v erroneously numbering 1st line
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 29 Apr 2018 12:05:43 +0000 (14:05 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 29 Apr 2018 12:05:43 +0000 (14:05 +0200)
function                                             old     new   delta
cat_main                                             418     421      +3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/cat.c
testsuite/cat.tests [new file with mode: 0755]

index 5f02233caa0c59e953941cf0022393a875fbf532..fb735f994092d91961bd9dc2a388e8e40fa9fe83 100644 (file)
@@ -112,10 +112,10 @@ static int catv(unsigned opts, char **argv)
        int retval = EXIT_SUCCESS;
        int fd;
 #if ENABLE_FEATURE_CATN
-       unsigned lineno = 0;
-       unsigned eol_char = (opts & (CAT_OPT_n|CAT_OPT_b)) ? '\n' : 0x100;
+       bool eol_seen = (opts & (CAT_OPT_n|CAT_OPT_b));
+       unsigned eol_char = (eol_seen ? '\n' : 0x100);
        unsigned skip_num_on = (opts & CAT_OPT_b) ? '\n' : 0x100;
-       bool eol_seen = 1;
+       unsigned lineno = 0;
 #endif
 
        BUILD_BUG_ON(CAT_OPT_e != VISIBLE_ENDLINE);
diff --git a/testsuite/cat.tests b/testsuite/cat.tests
new file mode 100755 (executable)
index 0000000..404ebed
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Copyright 2018 by Denys Vlasenko <vda.linux@googlemail.com>
+# Licensed under GPLv2, see file LICENSE in this source tree.
+
+. ./testing.sh
+
+# testing "description" "command" "result" "infile" "stdin"
+testing 'cat -e' \
+       'cat -e' \
+       'foo$\n' \
+       '' \
+       'foo\n'
+
+testing 'cat -v' \
+       'cat -v' \
+       'foo\n' \
+       '' \
+       'foo\n'
+
+exit $FAILCOUNT