diff options
author | Kalev Lember <klember@redhat.com> | 2016-06-13 13:33:34 +0200 |
---|---|---|
committer | Kalev Lember <klember@redhat.com> | 2016-06-13 13:33:34 +0200 |
commit | 305fca956dafd0c97897e35eee908e12f7f23de2 (patch) | |
tree | 6427f7c2c80f504b8a7eefcaeb99ab8b9ced59c3 /lib | |
parent | 897e083ef0b118dba0620711855ab5dea8379a75 (diff) |
Add PreparedUpgrade DBus property
This is going to be used in gnome-shell shutdown dialog to show details
about system upgrades.
https://bugzilla.gnome.org/show_bug.cgi?id=763611
Diffstat (limited to 'lib')
-rw-r--r-- | lib/packagekit-glib2/pk-offline-private.c | 72 | ||||
-rw-r--r-- | lib/packagekit-glib2/pk-offline-private.h | 9 | ||||
-rw-r--r-- | lib/packagekit-glib2/pk-offline.c | 54 | ||||
-rw-r--r-- | lib/packagekit-glib2/pk-offline.h | 2 |
4 files changed, 103 insertions, 34 deletions
diff --git a/lib/packagekit-glib2/pk-offline-private.c b/lib/packagekit-glib2/pk-offline-private.c index 421429f87..1ae6d8bdc 100644 --- a/lib/packagekit-glib2/pk-offline-private.c +++ b/lib/packagekit-glib2/pk-offline-private.c @@ -319,29 +319,93 @@ pk_offline_auth_set_prepared_ids (gchar **package_ids, GError **error) } /** - * pk_offline_auth_set_prepared_upgrade_version: + * pk_offline_auth_set_prepared_upgrade: + * @name: Distro name to upgrade to * @release_ver: Distro version to upgrade to * @error: A #GError or %NULL * - * Saves the distro version to upgrade to a prepared transaction file. + * Saves the distro name and version to upgrade to a prepared transaction file. * * Return value: %TRUE for success, else %FALSE and @error set * - * Since: 1.0.12 + * Since: 1.1.2 **/ gboolean -pk_offline_auth_set_prepared_upgrade_version (const gchar *release_ver, GError **error) +pk_offline_auth_set_prepared_upgrade (const gchar *name, const gchar *release_ver, GError **error) { g_autoptr(GKeyFile) keyfile = NULL; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); keyfile = g_key_file_new (); + g_key_file_set_string (keyfile, "update", "name", name); g_key_file_set_string (keyfile, "update", "releasever", release_ver); return g_key_file_save_to_file (keyfile, PK_OFFLINE_PREPARED_UPGRADE_FILENAME, error); } /** + * pk_offline_get_prepared_upgrade: + * @name: (out): Return location for the distro name + * @release_ver: (out): Return location for the distro version + * @error: A #GError or %NULL + * + * Gets details about a prepared system upgrade transaction. + * + * Return value: %TRUE for success, else %FALSE and @error set + * + * Since: 1.1.2 + **/ +gboolean +pk_offline_get_prepared_upgrade (gchar **name, gchar **release_ver, GError **error) +{ + g_autoptr(GError) error_local = NULL; + g_autofree gchar *data = NULL; + g_autoptr(GKeyFile) keyfile = NULL; + + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + /* does exist? */ + if (!g_file_test (PK_OFFLINE_PREPARED_UPGRADE_FILENAME, G_FILE_TEST_EXISTS)) { + g_set_error (error, + PK_OFFLINE_ERROR, + PK_OFFLINE_ERROR_NO_DATA, + "No offline system upgrades have been prepared"); + return FALSE; + } + + /* read data file */ + if (!g_file_get_contents (PK_OFFLINE_PREPARED_UPGRADE_FILENAME, + &data, NULL, &error_local)) { + g_set_error (error, + PK_OFFLINE_ERROR, + PK_OFFLINE_ERROR_FAILED, + "Failed to read %s: %s", + PK_OFFLINE_PREPARED_UPGRADE_FILENAME, + error_local->message); + return FALSE; + } + + keyfile = g_key_file_new (); + if (!g_key_file_load_from_data (keyfile, data, -1, G_KEY_FILE_NONE, error)) { + return FALSE; + } + + if (name != NULL) { + *name = g_key_file_get_string (keyfile, "update", "name", error); + if (*name == NULL) + return FALSE; + } + + if (release_ver != NULL) { + *release_ver = g_key_file_get_string (keyfile, "update", "releasever", error); + if (*release_ver == NULL) + return FALSE; + } + + return TRUE; +} + +/** * pk_offline_auth_set_results: * @results: A #PkResults * @error: A #GError or %NULL diff --git a/lib/packagekit-glib2/pk-offline-private.h b/lib/packagekit-glib2/pk-offline-private.h index 73f88dd6a..a69441981 100644 --- a/lib/packagekit-glib2/pk-offline-private.h +++ b/lib/packagekit-glib2/pk-offline-private.h @@ -70,8 +70,13 @@ gboolean pk_offline_auth_trigger_upgrade GError **error); gboolean pk_offline_auth_set_prepared_ids(gchar **package_ids, GError **error); -gboolean pk_offline_auth_set_prepared_upgrade_version - (const gchar *release_ver, +gboolean pk_offline_auth_set_prepared_upgrade + (const gchar *name, + const gchar *release_ver, + GError **error); +gboolean pk_offline_get_prepared_upgrade + (gchar **name, + gchar **release_ver, GError **error); gboolean pk_offline_auth_invalidate (GError **error); gboolean pk_offline_auth_set_results (PkResults *results, diff --git a/lib/packagekit-glib2/pk-offline.c b/lib/packagekit-glib2/pk-offline.c index 702e9611d..8708e0fd4 100644 --- a/lib/packagekit-glib2/pk-offline.c +++ b/lib/packagekit-glib2/pk-offline.c @@ -385,6 +385,29 @@ pk_offline_get_prepared_ids (GError **error) } /** + * pk_offline_get_prepared_upgrade_name: + * @error: A #GError or %NULL + * + * Gets the name of the prepared system upgrade in the prepared transaction. + * + * Return value: the name, or %NULL if unset, free with g_free() + * + * Since: 1.1.2 + **/ +gchar * +pk_offline_get_prepared_upgrade_name (GError **error) +{ + gchar *name = NULL; + + g_return_val_if_fail (error == NULL || *error == NULL, NULL); + + if (!pk_offline_get_prepared_upgrade (&name, NULL, error)) + return NULL; + + return name; +} + +/** * pk_offline_get_prepared_upgrade_version: * @error: A #GError or %NULL * @@ -397,39 +420,14 @@ pk_offline_get_prepared_ids (GError **error) gchar * pk_offline_get_prepared_upgrade_version (GError **error) { - g_autoptr(GError) error_local = NULL; - g_autofree gchar *data = NULL; - g_autoptr(GKeyFile) keyfile = NULL; + gchar *version = NULL; g_return_val_if_fail (error == NULL || *error == NULL, NULL); - /* does exist? */ - if (!g_file_test (PK_OFFLINE_PREPARED_UPGRADE_FILENAME, G_FILE_TEST_EXISTS)) { - g_set_error (error, - PK_OFFLINE_ERROR, - PK_OFFLINE_ERROR_NO_DATA, - "No offline system upgrades have been prepared"); - return NULL; - } - - /* read data file */ - if (!g_file_get_contents (PK_OFFLINE_PREPARED_UPGRADE_FILENAME, - &data, NULL, &error_local)) { - g_set_error (error, - PK_OFFLINE_ERROR, - PK_OFFLINE_ERROR_FAILED, - "Failed to read %s: %s", - PK_OFFLINE_PREPARED_UPGRADE_FILENAME, - error_local->message); + if (!pk_offline_get_prepared_upgrade (NULL, &version, error)) return NULL; - } - - keyfile = g_key_file_new (); - if (!g_key_file_load_from_data (keyfile, data, -1, G_KEY_FILE_NONE, error)) { - return NULL; - } - return g_key_file_get_string (keyfile, "update", "releasever", error); + return version; } /** diff --git a/lib/packagekit-glib2/pk-offline.h b/lib/packagekit-glib2/pk-offline.h index 25fcc598d..e85179823 100644 --- a/lib/packagekit-glib2/pk-offline.h +++ b/lib/packagekit-glib2/pk-offline.h @@ -76,6 +76,8 @@ const gchar *pk_offline_action_to_string (PkOfflineAction action); PkOfflineAction pk_offline_action_from_string (const gchar *action); PkOfflineAction pk_offline_get_action (GError **error); gchar **pk_offline_get_prepared_ids (GError **error); +gchar *pk_offline_get_prepared_upgrade_name + (GError **error); gchar *pk_offline_get_prepared_upgrade_version (GError **error); PkPackageSack *pk_offline_get_prepared_sack (GError **error); |