summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKalev Lember <klember@redhat.com>2016-06-13 13:33:34 +0200
committerKalev Lember <klember@redhat.com>2016-06-13 13:33:34 +0200
commit305fca956dafd0c97897e35eee908e12f7f23de2 (patch)
tree6427f7c2c80f504b8a7eefcaeb99ab8b9ced59c3 /lib
parent897e083ef0b118dba0620711855ab5dea8379a75 (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.c72
-rw-r--r--lib/packagekit-glib2/pk-offline-private.h9
-rw-r--r--lib/packagekit-glib2/pk-offline.c54
-rw-r--r--lib/packagekit-glib2/pk-offline.h2
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);