dev->is_printed = 1;
/* filter lines, smartcols filter can ask for data */
- if (lsblk->scols_filter) {
+ if (lsblk->filter) {
int status = 0;
struct filler_data fid = {
.dev = dev,
.parent = parent
};
- scols_filter_set_filler_cb(lsblk->scols_filter,
+ scols_filter_set_filler_cb(lsblk->filter,
filter_filler_cb, (void *) &fid);
- if (scols_line_apply_filter(ln, lsblk->scols_filter, &status))
+ if (scols_line_apply_filter(ln, lsblk->filter, &status))
err(EXIT_FAILURE, _("failed to apply filter"));
if (status == 0) {
struct libscols_line *x = scols_line_get_parent(ln);
DBG(DEV, ul_debugobj(dev, "%s <- child done", dev->name));
}
- if (lsblk->scols_hlighter) {
+ if (lsblk->hlighter) {
int status = 0;
- if (scols_line_apply_filter(ln, lsblk->scols_hlighter, &status) == 0
+ if (scols_line_apply_filter(ln, lsblk->hlighter, &status) == 0
&& status)
scols_line_set_color(ln, lsblk->hlighter_seq);
}
device_set_dedupkey(dev, NULL, id);
}
-
-static struct libscols_filter *init_scols_filter(
- struct libscols_table *tb,
- const char *query)
+static struct libscols_filter *new_filter(const char *query)
{
struct libscols_filter *f;
- struct libscols_iter *itr;
- const char *name = NULL;
f = scols_new_filter(NULL);
if (!f)
if (scols_filter_parse_string(f, query) != 0)
errx(EXIT_FAILURE, _("failed to parse \"%s\": %s"), query,
scols_filter_get_errmsg(f));
+ return f;
+}
+
+static void init_scols_filter(struct libscols_table *tb, struct libscols_filter *f)
+{
+ struct libscols_iter *itr;
+ const char *name = NULL;
itr = scols_new_iter(SCOLS_ITER_FORWARD);
if (!itr)
}
scols_free_iter(itr);
- return f;
+ return;
fail:
errx(EXIT_FAILURE, _("failed to initialize filter"));
}
};
struct lsblk_devtree *tr = NULL;
int c, status = EXIT_FAILURE;
- char *outarg = NULL, *f_query = NULL, *h_query = NULL;
+ char *outarg = NULL;
size_t i;
unsigned int width = 0;
int force_tree = 0, has_tree_col = 0;
parse_excludes(optarg);
break;
case 'H':
- h_query = optarg;
+ lsblk->hlighter = new_filter(optarg);
break;
case 'J':
lsblk->flags |= LSBLK_JSON;
lsblk->flags &= ~LSBLK_TREE; /* disable the default */
break;
case 'Q':
- f_query = optarg;
+ lsblk->filter = new_filter(optarg);
lsblk->flags &= ~LSBLK_TREE; /* disable the default */
break;
case 'y':
}
}
- if (f_query)
- lsblk->scols_filter = init_scols_filter(lsblk->table, f_query);
+ if (lsblk->filter)
+ init_scols_filter(lsblk->table, lsblk->filter);
- if (h_query && colors_init(UL_COLORMODE_AUTO, "lsblk") > 0) {
+ if (lsblk->hlighter && colors_init(UL_COLORMODE_AUTO, "lsblk") > 0) {
lsblk->hlighter_seq = color_scheme_get_sequence("highlight-line", UL_COLOR_RED);
scols_table_enable_colors(lsblk->table, 1);
- lsblk->scols_hlighter = init_scols_filter(lsblk->table, h_query);
+ init_scols_filter(lsblk->table, lsblk->hlighter);
}
tr = lsblk_new_devtree();
unref_sortdata(lsblk->table);
scols_unref_table(lsblk->table);
- scols_unref_filter(lsblk->scols_filter);
- scols_unref_filter(lsblk->scols_hlighter);
+ scols_unref_filter(lsblk->filter);
+ scols_unref_filter(lsblk->hlighter);
lsblk_mnt_deinit();
lsblk_properties_deinit();