diff options
Diffstat (limited to 'client/pk-offline-update.c')
-rw-r--r-- | client/pk-offline-update.c | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/client/pk-offline-update.c b/client/pk-offline-update.c index fee526128..d4d14f6e9 100644 --- a/client/pk-offline-update.c +++ b/client/pk-offline-update.c @@ -359,6 +359,38 @@ pk_offline_update_get_action (void) return action; } +static gboolean +pk_offline_update_do_update (PkTask *task, PkProgressBar *progressbar, GError **error) +{ + _cleanup_object_unref_ PkResults *results = NULL; + _cleanup_strv_free_ gchar **package_ids = NULL; + + /* get the list of packages to update */ + package_ids = pk_offline_get_prepared_ids (error); + if (package_ids == NULL) { + g_prefix_error (error, "failed to read %s: ", PK_OFFLINE_PREPARED_FILENAME); + return FALSE; + } + + /* TRANSLATORS: we've started doing offline updates */ + pk_offline_update_set_plymouth_msg (_("Installing updates; this could take a while...")); + pk_offline_update_write_dummy_results (package_ids); + results = pk_client_update_packages (PK_CLIENT (task), + 0, + package_ids, + NULL, /* GCancellable */ + pk_offline_update_progress_cb, + progressbar, /* user_data */ + error); + if (results == NULL) { + return FALSE; + } + + pk_offline_update_write_results (results); + + return TRUE; +} + /** * main: **/ @@ -372,9 +404,7 @@ main (int argc, char *argv[]) _cleanup_main_loop_unref_ GMainLoop *loop = NULL; _cleanup_object_unref_ GFile *file = NULL; _cleanup_object_unref_ PkProgressBar *progressbar = NULL; - _cleanup_object_unref_ PkResults *results = NULL; _cleanup_object_unref_ PkTask *task = NULL; - _cleanup_strv_free_ gchar **package_ids = NULL; #if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 35) g_type_init (); @@ -416,17 +446,6 @@ main (int argc, char *argv[]) NULL, NULL); - /* get the list of packages to update */ - package_ids = pk_offline_get_prepared_ids (&error); - if (package_ids == NULL) { - retval = EXIT_FAILURE; - sd_journal_print (LOG_WARNING, - "failed to read %s: %s", - PK_OFFLINE_PREPARED_FILENAME, - error->message); - goto out; - } - /* use a progress bar when the user presses <esc> in plymouth */ progressbar = pk_progress_bar_new (); pk_progress_bar_set_size (progressbar, 25); @@ -436,17 +455,7 @@ main (int argc, char *argv[]) task = pk_task_new (); pk_client_set_interactive (PK_CLIENT (task), FALSE); pk_offline_update_set_plymouth_mode ("updates"); - /* TRANSLATORS: we've started doing offline updates */ - pk_offline_update_set_plymouth_msg (_("Installing updates; this could take a while...")); - pk_offline_update_write_dummy_results (package_ids); - results = pk_client_update_packages (PK_CLIENT (task), - 0, - package_ids, - NULL, /* GCancellable */ - pk_offline_update_progress_cb, - progressbar, /* user_data */ - &error); - if (results == NULL) { + if (!pk_offline_update_do_update (task, progressbar, &error)) { retval = EXIT_FAILURE; pk_offline_update_write_error (error); sd_journal_print (LOG_WARNING, @@ -455,7 +464,6 @@ main (int argc, char *argv[]) goto out; } pk_progress_bar_end (progressbar); - pk_offline_update_write_results (results); /* delete prepared-update file if it's not already been done by the * pk-plugin-systemd-update daemon plugin */ |