[PATCH 10/19] rev: stop adding new line at the end when input does not have it

Sami Kerola
2013-06-02T17:52:05Z

When the rev(1) is executed twice outcome is expected to be exactly what
it was originally. That includes not adding new line at the end of the
output. The oneliner below demonstrates earlier issue.

$ printf "abc\n123" | rev | rev

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
---
tests/expected/misc/rev | 4 +++-
tests/ts/misc/rev | 2 ++
text-utils/rev.c | 3 ++-
3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/expected/misc/rev b/tests/expected/misc/rev
index 263923f..41fdf4c 100644
--- a/tests/expected/misc/rev
+++ b/tests/expected/misc/rev
@@ -1,2 +1,4 @@
53bbf0d98205319cee2ba589e205c68b -
-b407c257ed73b43cb992e778f925f7a3 -
+35484965b7a2fd45a471c0d80cb9752c -
+cba
+321
\ No newline at end of file
diff --git a/tests/ts/misc/rev b/tests/ts/misc/rev
index f36a799..035ce82 100755
--- a/tests/ts/misc/rev
+++ b/tests/ts/misc/rev
@@ -23,4 +23,6 @@ for I in {0..512}; do printf "%s " {a..z}; done | md5sum >> $TS_OUTPUT 2>&1
for I in {0..512}; do printf "%s " {a..z}; done | \
$TS_CMD_REV | md5sum >> $TS_OUTPUT 2>&1

+printf "abc\n123" | $TS_CMD_REV >> $TS_OUTPUT 2>&1
+
ts_finalize
diff --git a/text-utils/rev.c b/text-utils/rev.c
index 9554506..0456c2b 100644
--- a/text-utils/rev.c
+++ b/text-utils/rev.c
@@ -159,7 +159,8 @@ int main(int argc, char *argv[])
if (*t != 0)
putwchar(*t);
}
- putwchar('\n');
+ if (!feof(fp))
+ putwchar('\n');
}

fflush(fp);
--
1.8.3