util-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/4] column: Call mbs_to_wcs("") only once
@ 2020-09-20 13:08 Lennard Hofmann
  2020-09-20 13:08 ` [PATCH 3/4] column: Deprecate --table-empty-lines in favor of --keep-empty-lines Lennard Hofmann
  2020-09-20 13:08 ` [PATCH 4/4] tests: column --keep-empty-lines in cols mode Lennard Hofmann
  0 siblings, 2 replies; 4+ messages in thread
From: Lennard Hofmann @ 2020-09-20 13:08 UTC (permalink / raw)
  To: util-linux; +Cc: Lennard Hofmann

Signed-off-by: Lennard Hofmann <lennard.hofmann@web.de>
---
This is an optional patch to improve performance slightly while only
adding three lines of code.
 text-utils/column.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/text-utils/column.c b/text-utils/column.c
index bc7851472..d83d8d6d7 100644
--- a/text-utils/column.c
+++ b/text-utils/column.c
@@ -496,14 +496,18 @@ static void add_entry(struct column_control *ctl, size_t *maxents, wchar_t *wcs)
 	ctl->ents[ctl->nents] = wcs;
 }

-static void add_empty_entry(struct column_control *ctl, size_t *maxents)
+static void add_empty_entry(struct column_control *ctl, size_t *maxents,
+                            wchar_t *empty)
 {
-	add_entry(ctl, maxents, mbs_to_wcs(""));
+	if (empty == NULL)
+		empty = mbs_to_wcs("");
+	add_entry(ctl, maxents, empty);
 	ctl->nents++;
 }

 static int read_input(struct column_control *ctl, FILE *fp)
 {
+	wchar_t *empty = NULL;
 	char *buf = NULL;
 	size_t bufsz = 0;
 	size_t maxents = 0;
@@ -531,7 +535,7 @@ static int read_input(struct column_control *ctl, FILE *fp)
 				if (ctl->mode == COLUMN_MODE_TABLE)
 					add_emptyline_to_table(ctl);
 				else
-					add_empty_entry(ctl, &maxents);
+					add_empty_entry(ctl, &maxents, empty);
 			}
 			continue;
 		}
--
2.28.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/4] column: Deprecate --table-empty-lines in favor of --keep-empty-lines
  2020-09-20 13:08 [PATCH 2/4] column: Call mbs_to_wcs("") only once Lennard Hofmann
@ 2020-09-20 13:08 ` Lennard Hofmann
  2020-09-21 13:08   ` Karel Zak
  2020-09-20 13:08 ` [PATCH 4/4] tests: column --keep-empty-lines in cols mode Lennard Hofmann
  1 sibling, 1 reply; 4+ messages in thread
From: Lennard Hofmann @ 2020-09-20 13:08 UTC (permalink / raw)
  To: util-linux; +Cc: Lennard Hofmann

`--table-empty-lines` gives the false impression that the option
only applies to table mode.

Signed-off-by: Lennard Hofmann <lennard.hofmann@web.de>
---
 text-utils/column.1 | 8 +++++---
 text-utils/column.c | 9 +++++----
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/text-utils/column.1 b/text-utils/column.1
index 86886f3bf..d10fc7efb 100644
--- a/text-utils/column.1
+++ b/text-utils/column.1
@@ -110,9 +110,11 @@ hide all unnamed columns (see \-\-table-columns).
 Specify columns order on output.
 .IP "\fB\-n, \-\-table-name\fP \fIname\fP"
 Specify the table name used for JSON output. The default is "table".
-.IP "\fB\-L, \-\-table\-empty\-lines\fP"
-Insert empty line to the table for each empty line on input. The default
-is ignore empty lines at all.
+.IP "\fB\-L, \-\-keep\-empty\-lines\fP"
+Preserve whitespace-only lines in the input. The default is ignore empty lines
+at all. This option’s original name was \-\-table-empty-lines but is now
+deprecated because it gives the false impression that the option only applies
+to table mode.
 .IP "\fB\-r, \-\-tree\fP \fIcolumn\fP"
 Specify column to use tree-like output. Note that the circular dependencies and
 other anomalies in child and parent relation are silently ignored.
diff --git a/text-utils/column.c b/text-utils/column.c
index d83d8d6d7..bc0c1fd11 100644
--- a/text-utils/column.c
+++ b/text-utils/column.c
@@ -96,7 +96,7 @@ struct column_control {
 	unsigned int greedy :1,
 		     json :1,
 		     header_repeat :1,
-		     tab_empty_lines :1,	/* --table-empty-lines */
+		     keep_empty_lines :1,	/* --keep-empty-lines */
 		     tab_noheadings :1;
 };

@@ -531,7 +531,7 @@ static int read_input(struct column_control *ctl, FILE *fp)
 				*p = '\0';
 		}
 		if (!str || !*str) {
-			if (ctl->tab_empty_lines) {
+			if (ctl->keep_empty_lines) {
 				if (ctl->mode == COLUMN_MODE_TABLE)
 					add_emptyline_to_table(ctl);
 				else
@@ -709,6 +709,7 @@ int main(int argc, char **argv)
 		{ "fillrows",            no_argument,       NULL, 'x' },
 		{ "help",                no_argument,       NULL, 'h' },
 		{ "json",                no_argument,       NULL, 'J' },
+		{ "keep-empty-lines",    no_argument,       NULL, 'L' },
 		{ "output-separator",    required_argument, NULL, 'o' },
 		{ "output-width",        required_argument, NULL, 'c' },
 		{ "separator",           required_argument, NULL, 's' },
@@ -723,7 +724,7 @@ int main(int argc, char **argv)
 		{ "table-right",         required_argument, NULL, 'R' },
 		{ "table-truncate",      required_argument, NULL, 'T' },
 		{ "table-wrap",          required_argument, NULL, 'W' },
-		{ "table-empty-lines",   no_argument,       NULL, 'L' },
+		{ "table-empty-lines",   no_argument,       NULL, 'L' }, /* deprecated */
 		{ "table-header-repeat", no_argument,       NULL, 'e' },
 		{ "tree",                required_argument, NULL, 'r' },
 		{ "tree-id",             required_argument, NULL, 'i' },
@@ -774,7 +775,7 @@ int main(int argc, char **argv)
 			ctl.mode = COLUMN_MODE_TABLE;
 			break;
 		case 'L':
-			ctl.tab_empty_lines = 1;
+			ctl.keep_empty_lines = 1;
 			break;
 		case 'l':
 			ctl.maxncols = strtou32_or_err(optarg, _("invalid columns limit argument"));
--
2.28.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 4/4] tests: column --keep-empty-lines in cols mode
  2020-09-20 13:08 [PATCH 2/4] column: Call mbs_to_wcs("") only once Lennard Hofmann
  2020-09-20 13:08 ` [PATCH 3/4] column: Deprecate --table-empty-lines in favor of --keep-empty-lines Lennard Hofmann
@ 2020-09-20 13:08 ` Lennard Hofmann
  1 sibling, 0 replies; 4+ messages in thread
From: Lennard Hofmann @ 2020-09-20 13:08 UTC (permalink / raw)
  To: util-linux; +Cc: Lennard Hofmann

Add intentional whitespace to the test file `onecolumn` to test that
`column` ignores it. Add empty lines to the same test file to test that
`column--keep-empty-lines` preserves them.

Signed-off-by: Lennard Hofmann <lennard.hofmann@web.de>
---
 tests/expected/column/columnate-fill-cols-keep-empty | 7 +++++++
 tests/ts/column/columnate                            | 4 ++++
 tests/ts/column/files/onecolumn                      | 5 +++++
 3 files changed, 16 insertions(+)
 create mode 100644 tests/expected/column/columnate-fill-cols-keep-empty

diff --git a/tests/expected/column/columnate-fill-cols-keep-empty b/tests/expected/column/columnate-fill-cols-keep-empty
new file mode 100644
index 000000000..8cc1fdf1f
--- /dev/null
+++ b/tests/expected/column/columnate-fill-cols-keep-empty
@@ -0,0 +1,7 @@
+			FFFFFFFFFFFFFFFFFFF
+AAAAAAAAAAAAAAAAAAAA
+BBBBBBBBBBBBBBBBBBBBB
+CCCCCCCCCCCCCCCC	XXXXXXX
+			YYYYYYYYYYY
+DDDDDDDDDDDDDDDDD	ZZZZZZZZZZZ
+EEEEEEEEEEEEE
diff --git a/tests/ts/column/columnate b/tests/ts/column/columnate
index ebeb0c44f..e80f3b00d 100755
--- a/tests/ts/column/columnate
+++ b/tests/ts/column/columnate
@@ -49,4 +49,8 @@ ts_init_subtest "fill-rows-250"
 $TS_CMD_COLUMN --fillrows -c 250 $TS_SELF/files/onecolumn >> $TS_OUTPUT 2>> $TS_ERRLOG
 ts_finalize_subtest

+ts_init_subtest "fill-cols-keep-empty"
+$TS_CMD_COLUMN --keep-empty-lines -c 60 $TS_SELF/files/onecolumn >> $TS_OUTPUT 2>> $TS_ERRLOG
+ts_finalize_subtest
+
 ts_finalize
diff --git a/tests/ts/column/files/onecolumn b/tests/ts/column/files/onecolumn
index 69ec82f5d..3e579e1d4 100644
--- a/tests/ts/column/files/onecolumn
+++ b/tests/ts/column/files/onecolumn
@@ -1,9 +1,14 @@
+
 AAAAAAAAAAAAAAAAAAAA
 BBBBBBBBBBBBBBBBBBBBB
 CCCCCCCCCCCCCCCC
+
 DDDDDDDDDDDDDDDDD
 EEEEEEEEEEEEE
 FFFFFFFFFFFFFFFFFFF
+
+
 XXXXXXX
 YYYYYYYYYYY
 ZZZZZZZZZZZ
+
--
2.28.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 3/4] column: Deprecate --table-empty-lines in favor of --keep-empty-lines
  2020-09-20 13:08 ` [PATCH 3/4] column: Deprecate --table-empty-lines in favor of --keep-empty-lines Lennard Hofmann
@ 2020-09-21 13:08   ` Karel Zak
  0 siblings, 0 replies; 4+ messages in thread
From: Karel Zak @ 2020-09-21 13:08 UTC (permalink / raw)
  To: Lennard Hofmann; +Cc: util-linux

On Sun, Sep 20, 2020 at 03:08:18PM +0200, Lennard Hofmann wrote:
> +.IP "\fB\-L, \-\-keep\-empty\-lines\fP"
> +Preserve whitespace-only lines in the input. The default is ignore empty lines
> +at all. This option’s original name was \-\-table-empty-lines but is now
> +deprecated because it gives the false impression that the option only applies
> +to table mode.

Please update also usage() (--help output) where we do not need --table-empty-lines
anymore.

 Karel


-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-09-21 13:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-20 13:08 [PATCH 2/4] column: Call mbs_to_wcs("") only once Lennard Hofmann
2020-09-20 13:08 ` [PATCH 3/4] column: Deprecate --table-empty-lines in favor of --keep-empty-lines Lennard Hofmann
2020-09-21 13:08   ` Karel Zak
2020-09-20 13:08 ` [PATCH 4/4] tests: column --keep-empty-lines in cols mode Lennard Hofmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).