From: Karel Zak Date: Thu, 22 Aug 2024 10:31:41 +0000 (+0200) Subject: findmnt: improve -Q to output tree X-Git-Tag: v2.42-start~225^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=76082d4bfabe537d3e49201b124f4311a17e28b6;p=thirdparty%2Futil-linux.git findmnt: improve -Q to output tree $ 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 --- 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;