Systemd/src/basic
Lennart Poettering 1960e73611 basic: add minimalistic table formatter
We have plenty of code in our codebase that outputs tables to the
console, and all is homegrown and awful. Let's replace it with a generic
implementation that can do automatically what the old implementations
did manually.

Features:

1. Ellipsation (for fields overly long) and alignment (for
   fields overly short)

2. Sorting of rows

3. automatically copies formatting from the same cell in the row above

4. Heavy use of varargs to make putting together tables easy

5. can expand and compress tables, with weights

6. Has a minimal understanding of unicode wide characters in order to
   match unicode strings to character cell terminals.

7. Columns can be reordered and individually turned off.

8. pretty printing for various data types

And more.
2018-04-18 12:51:15 +02:00
..
MurmurHash2.c tree-wide: adjust fall through comments so that gcc is happy 2017-11-20 13:06:25 -08:00
MurmurHash2.h
af-list.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
af-list.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
af-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
alloc-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
alloc-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
architecture.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
architecture.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
arphrd-list.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
arphrd-list.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
arphrd-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
async.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
async.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
audit-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
audit-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
barrier.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
barrier.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
bitmap.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
bitmap.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
blkid-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
blockdev-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
blockdev-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
bpf-program.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
bpf-program.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
btrfs-ctree.h btrfs: Include missing.h in btrfs-ctree.h 2017-12-18 11:19:32 +01:00
btrfs-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
btrfs-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
build.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
bus-label.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
bus-label.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
calendarspec.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
calendarspec.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
cap-list.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
cap-list.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
cap-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
capability-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
capability-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
cgroup-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
cgroup-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
chattr-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
chattr-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
clock-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
clock-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
conf-files.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
conf-files.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
copy.c basic/copy: fix awkward sentence 2018-04-17 16:58:02 +02:00
copy.h copy: rearrange flags field definition 2018-04-13 11:32:46 +02:00
cpu-set-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
cpu-set-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
crypt-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
crypt-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
def.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
device-nodes.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
device-nodes.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
dirent-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
dirent-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
env-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
env-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
errno-list.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
errno-list.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
errno-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
escape.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
escape.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ether-addr-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ether-addr-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
exec-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
exec-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
exit-status.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
exit-status.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
extract-word.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
extract-word.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fd-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fd-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fileio-label.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fileio-label.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fileio.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fileio.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
format-table.c basic: add minimalistic table formatter 2018-04-18 12:51:15 +02:00
format-table.h basic: add minimalistic table formatter 2018-04-18 12:51:15 +02:00
format-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fs-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
fs-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
gcrypt-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
gcrypt-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
generate-af-list.sh generate-af-list.sh: slightly generalize pattern, fix w/musl (#8629) 2018-03-31 12:55:45 +02:00
generate-arphrd-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
generate-cap-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
generate-errno-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
generate-gperfs.py tree-wide: adjust fall through comments so that gcc is happy 2017-11-20 13:06:25 -08:00
generate-socket-protocol-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
glob-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
glob-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
gunicode.c log: minimize includes in log.h 2018-01-11 14:44:31 +01:00
gunicode.h tree-wide: place #pragma once at the same place everywhere 2016-02-20 22:42:29 +01:00
hash-funcs.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hash-funcs.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hashmap.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hashmap.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hexdecoct.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hexdecoct.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hostname-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
hostname-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
in-addr-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
in-addr-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
io-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
io-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ioprio.h Restore naming of IOPRIO_PRIO defines from linux/ioprio.h 2018-03-21 00:46:22 +01:00
journal-importer.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
journal-importer.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
khash.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
khash.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
label.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
label.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
list.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
locale-util.c locale: add ellipsis as special glyph 2018-04-18 12:35:45 +02:00
locale-util.h locale: add ellipsis as special glyph 2018-04-18 12:35:45 +02:00
lockfile-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
lockfile-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
log.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
log.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
login-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
login-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
macro.h macro: don't rely on C's downgrade-to-bool feature for numeric comparisons 2018-04-12 11:02:47 +02:00
memfd-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
memfd-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mempool.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mempool.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
meson.build basic: add minimalistic table formatter 2018-04-18 12:51:15 +02:00
missing.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
missing_syscall.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mkdir-label.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mkdir.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mkdir.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
module-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mount-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
mount-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
nss-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ordered-set.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ordered-set.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
pager.c pager: move pager.[ch] src/shared/ → src/basic/ 2018-04-18 12:35:45 +02:00
pager.h pager: move pager.[ch] src/shared/ → src/basic/ 2018-04-18 12:35:45 +02:00
parse-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
parse-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
path-util.c path-util: document a few other special cases for last_path_component() 2018-04-12 11:02:47 +02:00
path-util.h path-util: Finish DEFAULT_PATH_NULSTR with an extra NUL (#8745) 2018-04-18 07:46:03 +02:00
prioq.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
prioq.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
proc-cmdline.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
proc-cmdline.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
process-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
process-util.h process-util: add TAKE_PID(), similar to TAKE_PTR/TAKE_FD, but for child process PIDs 2018-04-11 22:30:04 +02:00
procfs-util.c procfs-util: drop unnecessary zero initializations (#8321) 2018-03-01 11:27:06 +01:00
procfs-util.h procfs-util: add APIs to get consumed CPU time and used memory from /proc 2018-02-09 17:32:26 +01:00
random-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
random-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ratelimit.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
ratelimit.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
raw-clone.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
raw-reboot.h basic: add a common syscall wrapper around reboot() 2018-02-22 10:42:06 +01:00
reboot-util.c reboot-util: unify reboot with parameter in a single implementation 2018-02-22 10:46:26 +01:00
reboot-util.h reboot-util: unify reboot with parameter in a single implementation 2018-02-22 10:46:26 +01:00
refcnt.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
replace-var.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
replace-var.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
rlimit-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
rlimit-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
rm-rf.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
rm-rf.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
securebits-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
securebits-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
securebits.h
selinux-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
selinux-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
set.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
set.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
sigbus.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
sigbus.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
signal-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
signal-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
siphash24.c tree-wide: adjust fall through comments so that gcc is happy 2017-11-20 13:06:25 -08:00
siphash24.h shared: make sure foo.bar and foobar result in different domain name hashes 2016-01-11 19:39:59 +01:00
smack-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
smack-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
socket-label.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
socket-protocol-list.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
socket-protocol-list.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
socket-protocol-to-name.awk basic: introduce socket_protocol_{from,to}_name() 2017-12-23 19:32:04 +09:00
socket-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
socket-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
sparse-endian.h Add SPDX license headers to various assorted files 2017-11-19 19:08:15 +01:00
special.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
stat-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
stat-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
stdio-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
strbuf.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
strbuf.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
string-table.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
string-table.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
string-util.c string-util: tweak ellipsation a bit 2018-04-18 12:35:45 +02:00
string-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
strv.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
strv.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
strxcpyx.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
strxcpyx.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
syslog-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
syslog-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
terminal-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
terminal-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
time-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
time-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
umask-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
unaligned.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
unit-def.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
unit-def.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
unit-name.c basic/unit-name: remove duplicate check 2018-04-17 16:57:17 +02:00
unit-name.h unit-name: add new unit_name_build_from_type() helper 2018-04-13 11:34:48 +02:00
user-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
user-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
utf8.c utf8: add helper call for counting display width of strings 2018-04-18 12:35:45 +02:00
utf8.h utf8: add helper call for counting display width of strings 2018-04-18 12:35:45 +02:00
util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
util.h util: add qsort_r_safe(), similar to qsort_safe() 2018-04-18 12:35:45 +02:00
verbs.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
verbs.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
virt.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
virt.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
web-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
web-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
xattr-util.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
xattr-util.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
xml.c tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
xml.h tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00