* remove line size limit
* use multi-byte rather than wchar when read input
* prepare for future libsmartcols use in input() for table
Signed-off-by: Karel Zak <kzak@redhat.com>
The man page contains mistakes. The default is to fill columns before
lines:
$ printf 'aaaaaaaaaaaaaaaaaaaaaa\nBBBBBBBBBBBBBBBBBBBBB\nXXXXXXX\nYYYYYYYYYYY\nZZZZZ' > data
$ column --columns 80 < data
aaaaaaaaaaaaaaaaaaaaaa XXXXXXX ZZZZZ
BBBBBBBBBBBBBBBBBBBBB YYYYYYYYYYY
$ column --fillrows --columns 80 < data
aaaaaaaaaaaaaaaaaaaaaa BBBBBBBBBBBBBBBBBBBBB XXXXXXX
YYYYYYYYYYY ZZZZZ
The patch also rename functions in the code to make it more obvious
for code readers.
Signed-off-by: Karel Zak <kzak@redhat.com>
text-utils/tailf.c:69:21: warning: Using plain integer as NULL pointer
Since many 'struct option' has used zero as NULL make them more readable in
same go by reindenting, and using named argument requirements.
Reference: https://lwn.net/Articles/93577/
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
echo -e '\033[33mb\033[mXFoo\n\033[33mbar\033[mXFoo' | column -s X -t
old version:
b Foo
bar Foo
fixed version:
b Foo
bar Foo
References: https://github.com/karelzak/util-linux/issues/252
Signed-off-by: Karel Zak <kzak@redhat.com>
Almost any code calling get_terminal_width() checks returned width for
non-positive values and sets it to some default value (say, 80). So,
let's pass this default value directly to the function.
[kzak@redhat.com: - get_terminal_width() refactoring]
Signed-off-by: Karel Zak <kzak@redhat.com>
This adds a concise description of a tool to its usage text.
A first form of this patch was proposed by Steven Honeyman
(see http://www.spinics.net/lists/util-linux-ng/msg09994.html).
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
The column(1) read input until conversion error, and used incomplete
input when outputing, that made at least me to wonder where the rest
disappeared without explanation. IMHO it is better to fail immediately
rather than do only half of the task.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
The --output-separator option will allow user to define table column
separator. This will allow for example to write back same delimeter as
which was used as input separator, for example
column -t -s : -o : /etc/passwd
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This patch changes interpretation of subsequent delimeter interpretation.
Earlier version merged columns that had null string as content together,
which lead to output as visualized below.
$ printf "a🅱️c\n1::3\n" | column -t -s ':'
a b c
1 3
The number 3 has wrong column, which this patch takes care of, and alters
the output following way.
$ printf "a🅱️c\n1::3\n" | column -t -s ':'
a b c
1 3
This patch does not alter the default case, e.g., subsequent white spaces
are understood as separator of the same field, and the beginning of line
white spaces are being ignored together.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
The --separator and --columns long options in util-linux-2.21.2 and in
a git clone from 5 minutes ago, don't work:
$ echo foobar | column -s x
foobar
$ echo foobar | column -c 10
foobar
$ echo foobar | column --separator=x
column: option '--separator' doesn't allow an argument
$ echo foobar | column --separator x
Segmentation fault
$ echo foobar | column --columns 10
column: bad columns width value: '(null)': Invalid argument
$ echo foobar | column --columns=10
column: option '--columns' doesn't allow an argument
Looks like a simple case of missing has_arg flag in the "struct
option" initialization for these two options. The patch just adds the
flag. I haven't done thorough testing of the patched code, but it
seems to work OK and it no longer segfaults or tries to dereference a
null pointer.
Signed-off-by: Karel Zak <kzak@redhat.com>
Variables from global scope are moved to main, and passed as
function arguments where ever they are needed.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>