--- /dev/null
+#!/bin/bash
+
+#
+# Copyright (C) 2020 Sami Kerola <kerolasa@iki.fi>
+#
+# This file is part of util-linux.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="newline handling"
+
+. $TS_TOPDIR/functions.sh
+ts_init "$*"
+
+ts_check_test_command "$TS_CMD_COL"
+
+ts_log "zero length file"
+printf "" | $TS_CMD_COL >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+ts_log "one line no nl"
+printf "1" | $TS_CMD_COL >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+ts_log "one line with nl"
+printf "1\n" | $TS_CMD_COL >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+ts_log "second line no nl"
+printf "1\n2" | $TS_CMD_COL >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+ts_log "second line with nl"
+printf "1\n2\n" | $TS_CMD_COL >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+ts_finalize
/* goto the last line that had a character on it */
for (; l->l_next; l = l->l_next)
this_line++;
- if (max_line == 0)
+ if (max_line == 0 && cur_col == 0)
return EXIT_SUCCESS; /* no lines, so just exit */
flush_lines(this_line - nflushd_lines + extra_lines + 1);