From ee00d203d169709e01c9b53f1782a70ca128cd5e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 21 Aug 2014 16:57:02 +0200 Subject: [PATCH] installer: Omit source drive by name --- src/installer/hw.c | 12 ++++++------ src/installer/hw.h | 2 +- src/installer/main.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/installer/hw.c b/src/installer/hw.c index 212deef89e..ca3b430958 100644 --- a/src/installer/hw.c +++ b/src/installer/hw.c @@ -165,7 +165,7 @@ static unsigned long long hw_block_device_get_size(const char* dev) { return size; } -struct hw_disk** hw_find_disks(struct hw* hw) { +struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive) { struct hw_disk** ret = hw_create_disks(); struct hw_disk** disks = ret; @@ -192,15 +192,15 @@ struct hw_disk** hw_find_disks(struct hw* hw) { continue; } - // DEVTYPE must be disk (otherwise we will see all sorts of partitions here) - const char* devtype = udev_device_get_property_value(dev, "DEVTYPE"); - if (devtype && (strcmp(devtype, "disk") != 0)) { + // Skip sourcedrive if we need to + if (sourcedrive && (strcmp(dev_path, sourcedrive) == 0)) { udev_device_unref(dev); continue; } - // Skip all source mediums - if (hw_test_source_medium(dev_path) == 0) { + // DEVTYPE must be disk (otherwise we will see all sorts of partitions here) + const char* devtype = udev_device_get_property_value(dev, "DEVTYPE"); + if (devtype && (strcmp(devtype, "disk") != 0)) { udev_device_unref(dev); continue; } diff --git a/src/installer/hw.h b/src/installer/hw.h index 123d89f7ca..e4bb18b920 100644 --- a/src/installer/hw.h +++ b/src/installer/hw.h @@ -105,7 +105,7 @@ int hw_umount(const char* target); char* hw_find_source_medium(struct hw* hw); -struct hw_disk** hw_find_disks(struct hw* hw); +struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive); void hw_free_disks(struct hw_disk** disks); unsigned int hw_count_disks(struct hw_disk** disks); struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection); diff --git a/src/installer/main.c b/src/installer/main.c index 45420e13e4..4a550105db 100644 --- a/src/installer/main.c +++ b/src/installer/main.c @@ -384,7 +384,7 @@ int main(int argc, char *argv[]) { int part_type = HW_PART_TYPE_NORMAL; // Scan for disks to install on. - struct hw_disk** disks = hw_find_disks(hw); + struct hw_disk** disks = hw_find_disks(hw, sourcedrive); struct hw_disk** selected_disks = NULL; unsigned int num_selected_disks = 0; -- 2.39.2