cat: fix cat -e and cat -v erroneously numbering 1st line

function                                             old     new   delta
cat_main                                             418     421      +3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-04-29 14:05:43 +02:00
parent bc2e70b4a2
commit d80eecb868
2 changed files with 24 additions and 3 deletions

View File

@ -112,10 +112,10 @@ static int catv(unsigned opts, char **argv)
int retval = EXIT_SUCCESS; int retval = EXIT_SUCCESS;
int fd; int fd;
#if ENABLE_FEATURE_CATN #if ENABLE_FEATURE_CATN
unsigned lineno = 0; bool eol_seen = (opts & (CAT_OPT_n|CAT_OPT_b));
unsigned eol_char = (opts & (CAT_OPT_n|CAT_OPT_b)) ? '\n' : 0x100; unsigned eol_char = (eol_seen ? '\n' : 0x100);
unsigned skip_num_on = (opts & CAT_OPT_b) ? '\n' : 0x100; unsigned skip_num_on = (opts & CAT_OPT_b) ? '\n' : 0x100;
bool eol_seen = 1; unsigned lineno = 0;
#endif #endif
BUILD_BUG_ON(CAT_OPT_e != VISIBLE_ENDLINE); BUILD_BUG_ON(CAT_OPT_e != VISIBLE_ENDLINE);

21
testsuite/cat.tests Executable file
View File

@ -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