lsblk: process_one_device() refactoring

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2018-10-15 16:12:33 +02:00
parent 583b6489f6
commit 291606faf9
1 changed files with 29 additions and 16 deletions

View File

@ -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))
goto leave;
process_dependencies(&dev, NULL, !lsblk->inverse, NULL);
} else {
/*
* Partition, read sysfs name of the device.
*/
if (set_device(&parent, NULL, NULL, diskname))
goto leave;
if (set_device(&dev, &parent, &parent, name))
dev = devtree_get_device_or_new(tr, NULL, NULL, name);
if (!dev)
goto leave;
if (process_dependencies(dev, NULL, !lsblk->inverse, NULL) == 0)
lsblk_devtree_add_root(tr, dev);
} else {
/*
* Partition, read sysfs name of the disk device
*/
struct lsblk_device *parent;
parent = devtree_get_device_or_new(tr, NULL, NULL, diskname);
if (!parent)
goto leave;
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++;
}