Extract populate_disks_store() from populate_disks(). Extract populate_removable_store() from populate_removable(). This enables us to reuse the GtkListStore-filling loops later. While at it, move the "iter" local variables to the tightest scopes possible. No functional changes.
This patch is easier to review with "git show -b". Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2124538 Signed-off-by: Laszlo Ersek <[email protected]> --- gui.c | 129 ++++++++++++-------- 1 file changed, 75 insertions(+), 54 deletions(-) diff --git a/gui.c b/gui.c index 2cf30943bb5e..88ea648cdca9 100644 --- a/gui.c +++ b/gui.c @@ -684,8 +684,12 @@ connection_next_clicked (GtkWidget *w, gpointer data) /*----------------------------------------------------------------------*/ /* Conversion dialog. */ +static void populate_disks_store (GtkListStore *disks_store, + const char * const *disks); static void populate_disks (GtkTreeView *disks_list_p, const char * const *disks); +static void populate_removable_store (GtkListStore *removable_store, + const char * const *removable); static void populate_removable (GtkTreeView *removable_list_p, const char * const *removable); static void populate_interfaces (GtkTreeView *interfaces_list_p); @@ -1104,52 +1108,60 @@ repopulate_output_combo (struct config *config) /** * Populate the C<Fixed hard disks> treeview. */ +static void +populate_disks_store (GtkListStore *disks_store, const char * const *disks) +{ + size_t i; + + if (disks == NULL) + return; + + for (i = 0; disks[i] != NULL; ++i) { + uint64_t size; + CLEANUP_FREE char *size_gb = NULL; + CLEANUP_FREE char *model = NULL; + CLEANUP_FREE char *serial = NULL; + CLEANUP_FREE char *device_descr = NULL; + GtkTreeIter iter; + + if (disks[i][0] != '/') { /* not using --test-disk */ + size = get_blockdev_size (disks[i]); + if (asprintf (&size_gb, "%" PRIu64 "G", size) == -1) + error (EXIT_FAILURE, errno, "asprintf"); + model = get_blockdev_model (disks[i]); + serial = get_blockdev_serial (disks[i]); + } + + if (asprintf (&device_descr, + "<b>%s</b>\n" + "<small>" + "%s %s\n" + "%s%s" + "</small>", + disks[i], + size_gb ? size_gb : "", model ? model : "", + serial ? "s/n " : "", serial ? serial : "") == -1) + error (EXIT_FAILURE, errno, "asprintf"); + + gtk_list_store_append (disks_store, &iter); + gtk_list_store_set (disks_store, &iter, + DISKS_COL_CONVERT, TRUE, + DISKS_COL_HW_NAME, disks[i], + DISKS_COL_DEVICE, device_descr, + -1); + } +} + static void populate_disks (GtkTreeView *disks_list_p, const char * const *disks) { GtkListStore *disks_store; GtkCellRenderer *disks_col_convert, *disks_col_device; - GtkTreeIter iter; - size_t i; disks_store = gtk_list_store_new (NUM_DISKS_COLS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING); - if (disks != NULL) { - for (i = 0; disks[i] != NULL; ++i) { - uint64_t size; - CLEANUP_FREE char *size_gb = NULL; - CLEANUP_FREE char *model = NULL; - CLEANUP_FREE char *serial = NULL; - CLEANUP_FREE char *device_descr = NULL; - - if (disks[i][0] != '/') { /* not using --test-disk */ - size = get_blockdev_size (disks[i]); - if (asprintf (&size_gb, "%" PRIu64 "G", size) == -1) - error (EXIT_FAILURE, errno, "asprintf"); - model = get_blockdev_model (disks[i]); - serial = get_blockdev_serial (disks[i]); - } - - if (asprintf (&device_descr, - "<b>%s</b>\n" - "<small>" - "%s %s\n" - "%s%s" - "</small>", - disks[i], - size_gb ? size_gb : "", model ? model : "", - serial ? "s/n " : "", serial ? serial : "") == -1) - error (EXIT_FAILURE, errno, "asprintf"); - - gtk_list_store_append (disks_store, &iter); - gtk_list_store_set (disks_store, &iter, - DISKS_COL_CONVERT, TRUE, - DISKS_COL_HW_NAME, disks[i], - DISKS_COL_DEVICE, device_descr, - -1); - } - } + populate_disks_store (disks_store, disks); gtk_tree_view_set_model (disks_list_p, GTK_TREE_MODEL (disks_store)); gtk_tree_view_set_headers_visible (disks_list_p, TRUE); @@ -1177,33 +1189,42 @@ populate_disks (GtkTreeView *disks_list_p, const char * const *disks) /** * Populate the C<Removable media> treeview. */ +static void +populate_removable_store (GtkListStore *removable_store, + const char * const *removable) +{ + size_t i; + + if (removable == NULL) + return; + + for (i = 0; removable[i] != NULL; ++i) { + CLEANUP_FREE char *device_descr = NULL; + GtkTreeIter iter; + + if (asprintf (&device_descr, "<b>%s</b>\n", removable[i]) == -1) + error (EXIT_FAILURE, errno, "asprintf"); + + gtk_list_store_append (removable_store, &iter); + gtk_list_store_set (removable_store, &iter, + REMOVABLE_COL_CONVERT, TRUE, + REMOVABLE_COL_HW_NAME, removable[i], + REMOVABLE_COL_DEVICE, device_descr, + -1); + } +} + static void populate_removable (GtkTreeView *removable_list_p, const char * const *removable) { GtkListStore *removable_store; GtkCellRenderer *removable_col_convert, *removable_col_device; - GtkTreeIter iter; - size_t i; removable_store = gtk_list_store_new (NUM_REMOVABLE_COLS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING); - if (removable != NULL) { - for (i = 0; removable[i] != NULL; ++i) { - CLEANUP_FREE char *device_descr = NULL; - - if (asprintf (&device_descr, "<b>%s</b>\n", removable[i]) == -1) - error (EXIT_FAILURE, errno, "asprintf"); - - gtk_list_store_append (removable_store, &iter); - gtk_list_store_set (removable_store, &iter, - REMOVABLE_COL_CONVERT, TRUE, - REMOVABLE_COL_HW_NAME, removable[i], - REMOVABLE_COL_DEVICE, device_descr, - -1); - } - } + populate_removable_store (removable_store, removable); gtk_tree_view_set_model (removable_list_p, GTK_TREE_MODEL (removable_store)); gtk_tree_view_set_headers_visible (removable_list_p, TRUE); _______________________________________________ Libguestfs mailing list [email protected] https://listman.redhat.com/mailman/listinfo/libguestfs
