diff options
author | Karel Zak | 2018-10-15 16:12:33 +0200 |
---|---|---|
committer | Karel Zak | 2018-12-07 12:32:57 +0100 |
commit | 291606faf999560738e4c47abc79084045181933 (patch) | |
tree | 7cb07a367407512766ec31a03b448dc4c73b4a4f /misc-utils | |
parent | lsblk: add devtree_get_device_or_new() (diff) | |
download | kernel-qcow2-util-linux-291606faf999560738e4c47abc79084045181933.tar.gz kernel-qcow2-util-linux-291606faf999560738e4c47abc79084045181933.tar.xz kernel-qcow2-util-linux-291606faf999560738e4c47abc79084045181933.zip |
lsblk: process_one_device() refactoring
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils')
-rw-r--r-- | misc-utils/lsblk.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index bb16c23c1..e5312701e 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -1263,7 +1263,7 @@ static int process_dependencies(struct lsblk_device *dev, struct lsblk_device *p { #ifdef SUCK if (do_partitions && dev->npartitions) - list_partitions(dev, parent, part_name); /* partitions + whole-disk */ + process_partitions(dev, parent, part_name); /* partitions + whole-disk */ return list_deps(dev); #endif @@ -1318,9 +1318,9 @@ done: return 0; } -static int process_one_device(char *devname) +static int process_one_device(struct lsblk_devtree *tr, char *devname) { - struct lsblk_device parent = { .parent = NULL }, dev = { .parent = NULL }; + struct lsblk_device *dev = NULL; struct stat st; char buf[PATH_MAX + 1], *name = NULL, *diskname = NULL; dev_t disk = 0; @@ -1358,22 +1358,35 @@ static int process_one_device(char *devname) /* * Device is not a partition. */ - if (set_device(&dev, NULL, NULL, name)) + dev = devtree_get_device_or_new(tr, NULL, NULL, name); + if (!dev) goto leave; - process_dependencies(&dev, NULL, !lsblk->inverse, NULL); + + if (process_dependencies(dev, NULL, !lsblk->inverse, NULL) == 0) + lsblk_devtree_add_root(tr, dev); } else { /* - * Partition, read sysfs name of the device. + * Partition, read sysfs name of the disk device */ - if (set_device(&parent, NULL, NULL, diskname)) + struct lsblk_device *parent; + + parent = devtree_get_device_or_new(tr, NULL, NULL, diskname); + if (!parent) goto leave; - if (set_device(&dev, &parent, &parent, name)) + + dev = devtree_get_device_or_new(tr, parent, parent, name); + if (!dev) goto leave; + if (process_dependencies(dev, NULL, 1, NULL) == 0) + lsblk_devtree_add_root(tr, dev); + +/* if (lsblk->inverse) - process_dependencies(&parent, &dev, 1, dev.name); + process_dependencies(parent, dev, 1, dev->name); else - process_dependencies(&dev, &parent, 1, NULL); + process_dependencies(dev, parent, 1, NULL); +*/ } rc = 0; @@ -1811,7 +1824,7 @@ int main(int argc, char *argv[]) int cnt = 0, cnt_err = 0; while (optind < argc) { - if (process_one_device(argv[optind++]) != 0) + if (process_one_device(tr, argv[optind++]) != 0) cnt_err++; cnt++; } |