From 76082d4bfabe537d3e49201b124f4311a17e28b6 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 22 Aug 2024 12:31:41 +0200 Subject: [PATCH] findmnt: improve -Q to output tree MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit $ findmnt -Q 'FSTYPE=="ext4"' TARGET SOURCE FSTYPE OPTIONS / /dev/sda4 ext4 rw,relatime ├─/var /dev/sda3 ext4 rw,relatime │ └─/var/cache /dev/sda5 ext4 rw,relatime ├─/mnt/virt /dev/sdb1 ext4 rw,relatime └─/boot /dev/sda2 ext4 rw,relatime Addresses: https://github.com/util-linux/util-linux/pull/3090 Signed-off-by: Karel Zak --- misc-utils/findmnt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c index 05ed951bf..7bbc3a2ac 100644 --- a/misc-utils/findmnt.c +++ b/misc-utils/findmnt.c @@ -962,8 +962,12 @@ static int create_treenode(struct libscols_table *table, struct libmnt_table *tb if ((findmnt->flags & FL_SUBMOUNTS) || match_func(fs, findmnt)) { bool filtered = false; + if (has_line(table, fs)) + goto leave; line = add_line(table, fs, parent_line, findmnt, &filtered); - if (!line || filtered) + if (filtered) + line = parent_line; + else if (!line) goto leave; } else line = parent_line; @@ -1848,7 +1852,6 @@ int main(int argc, char *argv[]) break; case 'Q': findmnt.filter = new_filter(optarg); - findmnt.flags &= ~FL_TREE; break; case 'm': /* mtab */ tabtype = TABTYPE_MTAB; -- 2.47.3