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;
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;
}
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);
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;