From: Karel Zak Date: Tue, 26 Sep 2023 12:51:34 +0000 (+0200) Subject: lsblk: always set column type X-Git-Tag: v2.40-rc1~151^2~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f7c9b28ad5e836368f1f035dbfafcd8f48b1ae5e;p=thirdparty%2Futil-linux.git lsblk: always set column type Signed-off-by: Karel Zak --- diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index 47b73fee2c..f6cc7b3662 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -2184,6 +2184,28 @@ static void print_counters(void) scols_free_iter(itr); } +static void set_column_type(const struct colinfo *ci, struct libscols_column *cl, int fl) +{ + switch (ci->type) { + case COLTYPE_SIZE: + if (!lsblk->bytes) + break; + /* fallthrough */ + case COLTYPE_NUM: + scols_column_set_json_type(cl, SCOLS_JSON_NUMBER); + break; + case COLTYPE_BOOL: + scols_column_set_json_type(cl, SCOLS_JSON_BOOLEAN); + break; + default: + if (fl & SCOLS_FL_WRAP) + scols_column_set_json_type(cl, SCOLS_JSON_ARRAY_STRING); + else + scols_column_set_json_type(cl, SCOLS_JSON_STRING); + break; + } +} + static void init_scols_filter(struct libscols_table *tb, struct libscols_filter *f) { struct libscols_iter *itr; @@ -2207,6 +2229,8 @@ static void init_scols_filter(struct libscols_table *tb, struct libscols_filter ci->whint, SCOLS_FL_HIDDEN); if (!col) err(EXIT_FAILURE,_("failed to allocate output column")); + + set_column_type(ci, col, ci->flags); } scols_filter_assign_column(f, itr, name, col); } @@ -2677,26 +2701,7 @@ int main(int argc, char *argv[]) if (fl & SCOLS_FL_WRAP) scols_column_set_wrapfunc(cl, NULL, scols_wrapzero_nextchunk, NULL); - if (lsblk->flags & LSBLK_JSON) { - switch (ci->type) { - case COLTYPE_SIZE: - if (!lsblk->bytes) - break; - /* fallthrough */ - case COLTYPE_NUM: - scols_column_set_json_type(cl, SCOLS_JSON_NUMBER); - break; - case COLTYPE_BOOL: - scols_column_set_json_type(cl, SCOLS_JSON_BOOLEAN); - break; - default: - if (fl & SCOLS_FL_WRAP) - scols_column_set_json_type(cl, SCOLS_JSON_ARRAY_STRING); - else - scols_column_set_json_type(cl, SCOLS_JSON_STRING); - break; - } - } + set_column_type(ci, cl, fl); } if (lsblk->filter)