summaryrefslogtreecommitdiffstats
path: root/libsmartcols
Commit message (Collapse)AuthorAgeFilesLines
* libsmartcols: cleanup and extend padding functionalityKarel Zak2019-07-237-15/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | LIBSMARTCOLS_DEBUG_PADDING=on in the next examples forces libsmartcols print '.' as a padding char. See line "ffff" in the exmaples. * default output is to fill all except last cell $ LIBSMARTCOLS_DEBUG_PADDING=on ./sample-scols-fromfile --nlines 10 --width 80 --column tests/ts/libsmartcols/files/col-name --column tests/ts/libsmartcols/files/col-number --column tests/ts/libsmartcols/files/col-string --column tests/ts/libsmartcols/files/col-string tests/ts/libsmartcols/files/data-string tests/ts/libsmartcols/files/data-number tests/ts/libsmartcols/files/data-string-empty tests/ts/libsmartcols/files/data-string-empty 2> /dev/null NAME.. ......NUM STRINGS STRINGS aaaa.. ........0 aaaa... aaaa bbb... ......100 bbb.... bbb ccccc. .......21 ccccc.. ccccc dddddd ........3 dddddd. dddddd ee.... ......411 ee..... ee ffff.. .....5111 ....... gggggg 678993321 gggggg. gggggg hhh... ..7666666 hhh.... hhh * scols_table_enable_minout() minimizes output for tailing empty cells, example: $ LIBSMARTCOLS_DEBUG_PADDING=on ./sample-scols-fromfile --nlines 10 --minout --width 80 --column tests/ts/libsmartcols/files/col-name --column tests/ts/libsmartcols/files/col-number --column tests/ts/libsmartcols/files/col-string --column tests/ts/libsmartcols/files/col-string tests/ts/libsmartcols/files/data-string tests/ts/libsmartcols/files/data-number tests/ts/libsmartcols/files/data-string-empty tests/ts/libsmartcols/files/data-string-empty 2> /dev/null NAME.. ......NUM STRINGS STRINGS aaaa.. ........0 aaaa... aaaa bbb... ......100 bbb.... bbb ccccc. .......21 ccccc.. ccccc dddddd ........3 dddddd. dddddd ee.... ......411 ee..... ee ffff.. .....5111 gggggg 678993321 gggggg. gggggg hhh... ..7666666 hhh.... hhh * cleanup up scols_table_enable_maxout() use, example: $ LIBSMARTCOLS_DEBUG_PADDING=on ./sample-scols-fromfile --nlines 10 --maxout --width 80 --column tests/ts/libsmartcols/files/col-name --column tests/ts/libsmartcols/files/col-number --column tests/ts/libsmartcols/files/col-string --column tests/ts/libsmartcols/files/col-string tests/ts/libsmartcols/files/data-string tests/ts/libsmartcols/files/data-number tests/ts/libsmartcols/files/data-string-empty tests/ts/libsmartcols/files/data-string-empty 2> /dev/null NAME.............. ..................NUM STRINGS............ STRINGS............ aaaa.............. ....................0 aaaa............... aaaa............... bbb............... ..................100 bbb................ bbb................ ccccc............. ...................21 ccccc.............. ccccc.............. dddddd............ ....................3 dddddd............. dddddd............. ee................ ..................411 ee................. ee................. ffff.............. .................5111 ................... ................... gggggg............ ............678993321 gggggg............. gggggg............. hhh............... ..............7666666 hhh................ hhh................ Note that we cannot make scols_table_enable_minout() default because for example "column --table" is pretty commonly used with non-blank columns separator and in this case all cells has to be filled. $ echo -e "aa,b,ccc\na,,\naaa,bbb,ccc" | column --table --separator ',' --output-separator '|' aa |b |ccc a | | aaa|bbb|ccc Addresses: https://github.com/karelzak/util-linux/issues/826 Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: fix docsKarel Zak2019-06-132-1/+2
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (docs) add reference to v2.33 and v2.34Karel Zak2019-06-071-0/+8
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (groups) improve scols_table_group_lines() args check ↵Karel Zak2019-05-151-3/+3
| | | | | | [coverity scan] Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: use scols_walk_* for calculations and printingKarel Zak2019-05-072-99/+67Star
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: add generic function to walk on treeKarel Zak2019-05-073-1/+195
| | | | | | | Now we implement the same thing on more places. Let's add one set of functions to walk the tree and use it everywhere. Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: cell width calulation cleanupKarel Zak2019-05-032-36/+49
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (groups) use print functions tp calculate grpsetKarel Zak2019-05-034-75/+23Star
| | | | | | | Now we have extra code to calculate grpset. It seems better to use only one way how we wall the tree. Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (groups) print group childrent after regualr treeKarel Zak2019-05-033-28/+72
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (groups) improve debug messagesKarel Zak2019-05-032-2/+14
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: fix groups reset, add debugsKarel Zak2019-05-023-12/+29
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (groups) remove hardcoded const numbersKarel Zak2019-05-023-15/+20
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: print tree also for empty cellsKarel Zak2019-02-201-4/+2Star
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* docs: fix typos [codespell]Sami Kerola2019-02-183-4/+4
| | | | | Reference: https://github.com/codespell-project/codespell Signed-off-by: Sami Kerola <kerolasa@iki.fi>
* libsmartcols: use list_add_tail() in more robust wayKarel Zak2019-02-182-0/+12
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: remove extra ';' outside of a function [-Wextra-semi]Sami Kerola2019-01-021-1/+1
| | | | Signed-off-by: Sami Kerola <kerolasa@iki.fi>
* libsmartcols: fix variable shadowingSami Kerola2018-12-101-2/+2
| | | | | | | | libsmartcols/src/grouping.c:115:26: warning: declaration of ‘ln’ shadows a previous local [-Wshadow] libsmartcols/src/grouping.c:108:24: note: shadowed declaration is here Signed-off-by: Sami Kerola <kerolasa@iki.fi>
* libsmartcols: add grouping API docsKarel Zak2018-12-071-0/+13
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: add grouping samplesKarel Zak2018-12-073-0/+290
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: add lines grouping supportKarel Zak2018-12-0713-62/+1177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some use-case we need to describe M:N relation between output lines. The nice examples are RAIDs or multi-path devices in lsblk output. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 955.7M 0 loop ┌┈▶ ├─test-thin-metadata 253:0 0 2M 0 dm └┬▶ └─test-thin-data 253:1 0 953.7M 0 dm └┈┈test-thin-pool 253:2 0 953.7M 0 dm In this example two line (test-thin-metadata and test-thin-data) are parents for another line (test-thin-pool). The new API uses term "group" for parental line -- the number of group members is unlimited and every group has at least one child. It's possible that group's child is member of another group: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 955.7M 0 loop ┌┈▶ ├─test-thin-metadata 253:0 0 2M 0 dm └┬▶ └─test-thin-data 253:1 0 953.7M 0 dm ┌┈▶ └┈┈test-thin-pool 253:2 0 953.7M 0 dm ┆ └─test-thin 253:3 0 190.8M 0 dm └┬▶ loop1 7:1 0 190.8M 0 loop └┈┈┈┈┈test-thin-extsnap 253:4 0 190.8M 0 dm For now multi-group relation is unsupported and one line can be member of one group only. The library API and printing code is ready to support this feature, but not sure if we really need it. All what is necessary is to create array of groups in the line struct. Note that grouping is independent on standard parent->child relations between lines and grouping can connect arbitrary lines. The restriction is only that group child cannot be child of another line or child of another group. These cross reference are (and probably will be) impossible. The patch is relative large, but easy to review. Changes: * add new UTF symbols * add scols_symbols_set_group_* public API to modify new symbols * add struct libscols_group, used only internally * add "grpset" array to table struct -- the array is used to keep position of the group in the output. Every active group uses three items in the grpset. If there is more overlapping groups than bigger grpset is allocated. Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: split print.c into print.c, put.c and print-api.cKarel Zak2018-12-075-312/+339
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: move width calculation to separate fileKarel Zak2018-12-074-395/+412
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: rename table_print.c to print.cKarel Zak2018-12-072-1/+1
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: move buffer stuff to buffer.cKarel Zak2018-12-074-134/+163
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: add another UTF symbolsKarel Zak2018-12-071-4/+7
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: add is_last_child(), move is_last_column()Karel Zak2018-12-072-17/+24
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: don't mark as extreme where average is zeroKarel Zak2018-08-232-8/+9
| | | | | | | | | The columns with NOEXTREME flag are internally marked as extreme (=contains extreme width) if maximal with is greater than 2 * average_width. This detection has to sure that the average is non-zero otherwise the column is always "extreme". Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: allow to add line to table without columnsKarel Zak2018-08-231-2/+2
| | | | | | | | The table allows to add columns on the fly when lines already exist. So, it does not make sense to reject request to add line to table without columns. Signed-off-by: Karel Zak <kzak@redhat.com>
* docs: use SPDX license namesKarel Zak2018-08-161-1/+1
| | | | | | | | | | Let's use standardized names for licenses. The names used by SPDX makes things more obvious at first glance. For complete list see: https://spdx.org/licenses/ Note, this commit does not change any license or so... Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: don't print empty columnKarel Zak2018-06-041-2/+9
| | | | | | | | | | | | | | | | The commit 0f9f927b6f62cb7f488fadfad76c4a5defdefe36 forces libsmartcols to use one byte as a minimal column width. This seems like a bug if the column is empty and without header. $ printf ':a:b\n' | column -t -s ':' -o ':' :a:b Fixed version: $ printf ':a:b\n' | column -t -s ':' -o ':' :a:b Reported-by: Sami Kerola <kerolasa@iki.fi> Signed-off-by: Karel Zak <kzak@redhat.com>
* build: Add missing -lintl linkage to lib{smartcols,uuid}Karel Zak2018-04-091-1/+1
| | | | | Addresses: https://github.com/karelzak/util-linux/pull/615 Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: make sure boolean is true/false onlyKarel Zak2018-04-051-5/+9
| | | | | | .. and never "null". Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: improve JSON support (add types)Karel Zak2018-04-036-3/+75
| | | | | | | This commit add SCOLS_JSON_{NUMBER,STRING,BOOLEAN} to specify column type for JSON output formatting. Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: (docs) update yearKarel Zak2018-03-201-1/+1
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: fix docs warningsKarel Zak2018-02-212-1/+5
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>
* Merge branch 'maybe-for-v2.32' of https://github.com/rudimeier/util-linuxKarel Zak2018-02-162-2/+2
|\ | | | | | | | | | | | | | | | | * 'maybe-for-v2.32' of https://github.com/rudimeier/util-linux: tests: use pgrep instead of ps --ppid ... misc: fix typos using codespell lsns: fix clang compiler warning tests: add udevadm settle to sfdisk/resize build-sys: disable bz2 tarball and fix some am warnings
| * misc: fix typos using codespellRuediger Meier2018-02-162-2/+2
| | | | | | | | | | | | Some more funny typos, please review carefully. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
* | libsmartcols: fixes issue with 0 width columnstaiyu2018-02-151-0/+4
| | | | | | | | | | | | | | | | [kzak@redhat.com: - it's possible that column has zero width when minimal width is reduced due to very small terminal. In this case make sure that we do not use such column at all.] Signed-off-by: Karel Zak <kzak@redhat.com>
* | libsmartcols: set minimal column width to 1Karel Zak2018-02-151-0/+2
| | | | | | | | | | | | | | | | | | The default is to use header width or relative width setting as the minimal column width. The problem are columns where is no header or relative width. Let's set minimal width to 1 in this case. Addresses: https://github.com/karelzak/util-linux/pull/577 Signed-off-by: Karel Zak <kzak@redhat.com>
* | libsmartcols: interpret zero width for pending data as errorKarel Zak2018-02-151-1/+4
|/ | | | | | | | | | | | | The command $ column -t -W2 -c11 <<< "cat dog bird" causes finite loop, because there is no minimal column width (missing header). The print functions should be robust enough to return -EINVAL when nonsense is requested. Addresses: https://github.com/karelzak/util-linux/pull/577 Signed-off-by: Karel Zak <kzak@redhat.com>
* misc: remove %p from debug messagesKarel Zak2018-02-015-17/+13Star
| | | | | | From libs where suid program may be executed by non-root user. Signed-off-by: Karel Zak <kzak@redhat.com>
* build-sys: remove redundant EXTRA_DIST filesRuediger Meier2018-01-221-2/+1Star
| | | | | | | The sources of AC_CONFIG_FILES (*.in) are automatically distributed. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
* build-sys: avoid using prog_DEPENDENCIESRuediger Meier2018-01-221-2/+1Star
| | | | | | | Use EXTRA_prog_DEPENDENCIES to have the benefit of automake's automatic prog_DEPENDENCIES. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
* build-sys: remove unneeded dependencies on bla.h.inRuediger Meier2018-01-221-2/+1Star
| | | | | | | | | | We have already automakes's automatic dependencies like bla.h.in -> bla.h -> foo.o -> bar.la An explicit direct dependency bla.h.in -> bar.la is redundant and useless anyways. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
* build-sys: automake is able to find headers in builddir ...Ruediger Meier2018-01-221-1/+1
| | | | Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
* build-sys: remove generated headers from dist tar ballRuediger Meier2018-01-221-4/+1Star
| | | | | | | | | | | | | Headers should only be listed in either *_HEADERS or *_SOURCES, especially when we want nodist_*_HEADERS. Since all the generated headers are made by configure we don't even need to use BUILT_SOURCES or other tricks. Also see automake docs 9.4.1 Built Sources Example: case "Build bindir.h from configure" Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
* include/debug: introduce __UL_INIT_DEBUG_FROM_STRING()Karel Zak2018-01-171-1/+1
| | | | | | | Let's make it possible to use debug.h without environment variables. Suggested-by: J William Piggott <elseifthen@gmx.com> Signed-off-by: Karel Zak <kzak@redhat.com>
* include/debug: don't print pointer address for SUID programsKarel Zak2018-01-121-0/+3
| | | | | | | | | | | | | | | | * introduce new flag __UL_DEBUG_FL_NOADDR to suppress pointer address printing * use __UL_DEBUG_FL_NOADDR when SUID * move ul_debugobj() to debugobj.h, and require UL_DEBUG_CURRENT_MASK to provide access to the current mask from ul_debugobj(). It's better than modify all ul_debugobj() calls and use the global mask as argument. * remove never used UL_DEBUG_DEFINE_FLAG Reported-by: halfdog <me@halfdog.net> Signed-off-by: Karel Zak <kzak@redhat.com>
* libsmartcols: don't add blank padding after left aligned titleKarel Zak2017-12-121-4/+12
| | | | | | | | | Let's use the same semantic for the title as for the last column in the table. If aligned on left, table is not "maxout" and title padding symbol is undefined (or blank) then keep title as short as possible. Addresses: https://github.com/karelzak/util-linux/issues/549 Signed-off-by: Karel Zak <kzak@redhat.com>
* sample-scols-title: add left title without paddingKarel Zak2017-12-121-2/+14
| | | | Signed-off-by: Karel Zak <kzak@redhat.com>