/** * pk_offline_get_prepared_sack: * @error: A #GError or %NULL * * Gets a package sack of the packages in the prepared transaction. * * Return value: (transfer full): A new #PkPackageSack, or %NULL * * Since: 0.9.6 **/ PkPackageSack * pk_offline_get_prepared_sack (GError **error) { guint i; g_autoptr(PkPackageSack) sack = NULL; g_auto(GStrv) package_ids = NULL; /* get the list of packages */ package_ids = pk_offline_get_prepared_ids (error); if (package_ids == NULL) return NULL; /* add them to the new array */ sack = pk_package_sack_new (); for (i = 0; package_ids[i] != NULL; i++) { if (!pk_package_sack_add_package_by_id (sack, package_ids[i], error)) return NULL; } return g_object_ref (sack); }
/** * pk_plugin_get_existing_prepared_updates: **/ static PkPackageSack * pk_plugin_get_existing_prepared_updates (const gchar *filename) { gboolean ret; gchar **package_ids = NULL; gchar *packages_data = NULL; GError *error = NULL; PkPackageSack *sack; guint i; /* always return a valid sack, even for failure */ sack = pk_package_sack_new (); /* does the file exist ? */ if (!g_file_test (filename, G_FILE_TEST_EXISTS)) goto out; /* get the list of packages to update */ ret = g_file_get_contents (filename, &packages_data, NULL, &error); if (!ret) { g_warning ("failed to read: %s", error->message); g_error_free (error); goto out; } /* add them to the new array */ package_ids = g_strsplit (packages_data, "\n", -1); for (i = 0; package_ids[i] != NULL; i++) pk_package_sack_add_package_by_id (sack, package_ids[i], NULL); out: g_free (packages_data); g_strfreev (package_ids); return sack; }