#include "fileutils.h"
#include "loopdev.h"
#include "buffer.h"
+#include "colors.h"
#include "lsblk.h"
device_to_scols(child, dev, tab, ln);
DBG(DEV, ul_debugobj(dev, "%s <- child done", dev->name));
}
+
+ if (lsblk->scols_hlighter) {
+ int status = 0;
+
+ if (scols_line_apply_filter(ln, lsblk->scols_hlighter, &status) == 0
+ && status)
+ scols_line_set_color(ln, lsblk->hlighter_seq);
+ }
+
done:
/* Let's be careful with number of open files */
ul_path_close_dirfd(dev->sysfs);
fputs(_(" -O, --output-all output all columns\n"), out);
fputs(_(" -P, --pairs use key=\"value\" output format\n"), out);
fputs(_(" -Q, --filter <query> restrict output\n"), out);
+ fputs(_(" -H, --highlight <query> colorize lines maching the query\n"), out);
fputs(_(" -S, --scsi output info about SCSI devices\n"), out);
fputs(_(" -N, --nvme output info about NVMe devices\n"), out);
fputs(_(" -v, --virtio output info about virtio devices\n"), out);
};
struct lsblk_devtree *tr = NULL;
int c, status = EXIT_FAILURE;
- char *outarg = NULL, *f_query = NULL;
+ char *outarg = NULL, *f_query = NULL, *h_query = NULL;
size_t i;
unsigned int width = 0;
int force_tree = 0, has_tree_col = 0;
{ "output", required_argument, NULL, 'o' },
{ "output-all", no_argument, NULL, 'O' },
{ "filter", required_argument, NULL, 'Q' },
+ { "highlight", required_argument, NULL, 'H' },
{ "merge", no_argument, NULL, 'M' },
{ "perms", no_argument, NULL, 'm' },
{ "noheadings", no_argument, NULL, 'n' },
lsblk_init_debug();
while((c = getopt_long(argc, argv,
- "AabdDzE:e:fhJlNnMmo:OpPQ:iI:rstVvST::w:x:y",
+ "AabdDzE:e:fH:hJlNnMmo:OpPQ:iI:rstVvST::w:x:y",
longopts, NULL)) != -1) {
err_exclusive_options(c, longopts, excl, excl_st);
case 'e':
parse_excludes(optarg);
break;
+ case 'H':
+ h_query = optarg;
+ break;
case 'J':
lsblk->flags |= LSBLK_JSON;
break;
if (f_query)
lsblk->scols_filter = init_scols_filter(lsblk->table, f_query);
+ if (h_query && 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);
+ }
+
tr = lsblk_new_devtree();
if (!tr)
err(EXIT_FAILURE, _("failed to allocate device tree"));
scols_unref_table(lsblk->table);
scols_unref_filter(lsblk->scols_filter);
+ scols_unref_filter(lsblk->scols_hlighter);
lsblk_mnt_deinit();
lsblk_properties_deinit();