|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
From 651c5d428c2ef103ee8c5b1a310d6f29f0304744 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
From: Karel Zak <kzak@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
Date: Tue, 27 Mar 2018 10:40:13 +0200
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
Subject: [PATCH] column: fix leading space characters bug
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
The bug has been introduced during column(1) rewrite. The function
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
read_input() need to skip leading space only temporary to detect empty
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
lines, but the rest of the code has to use the original buffer (line).
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
I've tried to fix one of the symptoms by 5c7b67fbbf41c973ca8d49b1e8bdba22dbb917aa
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
(alter), but this solution is unnecessary and too complex.
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
Changes:
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
* don't ignore leading space
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
* remove unnecessary stuff introduced by 5c7b67fbbf41c973ca8d49b1e8bdba22dbb917aa
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
* fix regression test with incorrect separator
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
Addresses: https://github.com/karelzak/util-linux/issues/575
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1560283
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
Signed-off-by: Karel Zak <kzak@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
---
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
tests/expected/column/table-input-separator-space | 2 +-
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
tests/ts/column/table | 2 +-
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
text-utils/column.c | 36 ++---------------------
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
4 files changed, 5 insertions(+), 38 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
diff --git a/tests/expected/column/table-input-separator-space b/tests/expected/column/table-input-separator-space
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
index 8a6513c11..25d9b5ab0 100644
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
--- a/tests/expected/column/table-input-separator-space
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+++ b/tests/expected/column/table-input-separator-space
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -1,5 +1,5 @@
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
AAA BBBB C DDDD
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
-BBB CCCC DDD
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+ BBB CCCC DDD
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
AA BB DD
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
AAAA B CC D
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
AA CC DD
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
diff --git a/tests/ts/column/table b/tests/ts/column/table
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
index 27b52e7c8..5c89d5eaf 100755
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
--- a/tests/ts/column/table
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+++ b/tests/ts/column/table
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -37,7 +37,7 @@ $TS_CMD_COLUMN --separator ',' --table $TS_SELF/files/table-sep >> $TS_OUTPUT 2>
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ts_finalize_subtest
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ts_init_subtest "input-separator-space"
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
-$TS_CMD_COLUMN --separator ',' --table $TS_SELF/files/table-sep-space >> $TS_OUTPUT 2>&1
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+$TS_CMD_COLUMN --separator "$(echo -e '\t')" --table $TS_SELF/files/table-sep-space >> $TS_OUTPUT 2>&1
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ts_finalize_subtest
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ts_init_subtest "long"
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
diff --git a/text-utils/column.c b/text-utils/column.c
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
index 89d46d280..195814328 100644
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
--- a/text-utils/column.c
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+++ b/text-utils/column.c
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -86,7 +86,6 @@ struct column_control {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
const char *tree_parent;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
wchar_t *input_separator;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- char *input_separator_raw;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
const char *output_separator;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
wchar_t **ents; /* input entries */
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -96,7 +95,6 @@ struct column_control {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
unsigned int greedy :1,
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
json :1,
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
header_repeat :1,
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- input_sep_space : 1, /* input separator contains space chars */
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
tab_noheadings :1;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
};
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -470,19 +468,7 @@ static int read_input(struct column_control *ctl, FILE *fp)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
char *buf = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
size_t bufsz = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
size_t maxents = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- int rc = 0, is_space_sep = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
-
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- /* Check if columns separator contains spaces chars */
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- if (ctl->mode == COLUMN_MODE_TABLE && ctl->input_separator_raw) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- char *p;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
-
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- for (p = ctl->input_separator_raw; *p; p++) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- if (isspace(*p)) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- is_space_sep = 1;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- break;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+ int rc = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
/* Read input */
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
do {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -496,19 +482,6 @@ static int read_input(struct column_control *ctl, FILE *fp)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
err(EXIT_FAILURE, _("read failed"));
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
}
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
str = (char *) skip_space(buf);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
-
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- /* The table columns separator could be a space. In this case
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- * don't skip the separator if at begin of the line. For example:
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- *
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- * echo -e "\tcol1\tcol2\nrow\t1\t2" \
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- * | column -t -s "$(echo -e '\t')" --table-columns A,B,C
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- */
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- if (is_space_sep && str > buf) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- char *x = strpbrk(buf, ctl->input_separator_raw);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- if (x && x < str)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- str = x;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
-
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
if (str) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
p = strchr(str, '\n');
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
if (p)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -517,13 +490,13 @@ static int read_input(struct column_control *ctl, FILE *fp)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
if (!str || !*str)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
continue;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- wcs = mbs_to_wcs(str);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+ wcs = mbs_to_wcs(buf);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
if (!wcs) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
/*
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
* Convert broken sequences to \x<hex> and continue.
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
size_t tmpsz = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- char *tmp = mbs_invalid_encode(str, &tmpsz);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
+ char *tmp = mbs_invalid_encode(buf, &tmpsz);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
if (!tmp)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
err(EXIT_FAILURE, _("read failed"));
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -720,7 +693,6 @@ int main(int argc, char **argv)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ctl.output_separator = " ";
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ctl.input_separator = mbs_to_wcs("\t ");
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- ctl.input_separator_raw = xstrdup("\t ");
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
while ((c = getopt_long(argc, argv, "c:dE:eH:hi:JN:n:O:o:p:R:r:s:T:tVW:x", longopts, NULL)) != -1) {
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
@@ -775,9 +747,7 @@ int main(int argc, char **argv)
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
case 's':
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
free(ctl.input_separator);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- free(ctl.input_separator_raw);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ctl.input_separator = mbs_to_wcs(optarg);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
- ctl.input_separator_raw = xstrdup(optarg);
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
ctl.greedy = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
case 'T':
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
--
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
2.14.3
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
5972c3 |
|