diff options
| author | Karel Zak <kzak@redhat.com> | 2023-09-26 14:45:13 +0200 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2023-11-20 22:25:46 +0100 |
| commit | 30edd8e1eb20fa8a2e16e371ad48ed866b0e5458 (patch) | |
| tree | 99ca44f7d0811fa50708b0ef0ffcee8edc5304e1 /misc-utils/lsblk.c | |
| parent | 8aeb57b1d85be29a0ae00870cab6074526d8d83f (diff) | |
| download | util-linux-30edd8e1eb20fa8a2e16e371ad48ed866b0e5458.tar.gz | |
lsblk: support normalized column names on command line
For example column name "LOG-SEC" is possible to use as LOG_SEC in
some output formats and in filter expressions.
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils/lsblk.c')
| -rw-r--r-- | misc-utils/lsblk.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index 7d207b5de1..47b73fee2c 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -345,12 +345,30 @@ static int column_name_to_id(const char *name, size_t namesz) { size_t i; + /* name as diplayed for users */ for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } + + /* name as used in expressions, JSON output etc. */ + if (strnchr(name, namesz, '_')) { + char *buf = NULL; + size_t bufsz = 0; + + for (i = 0; i < ARRAY_SIZE(infos); i++) { + if (scols_shellvar_name(infos[i].name, &buf, &bufsz) != 0) + continue; + if (!strncasecmp(name, buf, namesz) && !*(buf + namesz)) { + free(buf); + return i; + } + } + free(buf); + } + warnx(_("unknown column: %s"), name); return -1; } |
