/** * pk_package_sack_sort_compare_summary_func: **/ static gint pk_package_sack_sort_compare_summary_func (PkPackage **a, PkPackage **b) { const gchar *summary1; const gchar *summary2; summary1 = pk_package_get_summary (*a); summary2 = pk_package_get_summary (*b); return g_strcmp0 (summary1, summary2); }
/** * pk_package_sack_add_packages_from_file: * @sack: a valid #PkPackageSack instance * @file: a valid package-list file * @error: a %GError to put the error code and message in, or %NULL * * Write the contents of a PkPackageSack to a package-list file. * * Return value: %TRUE if there were no errors. * * Since: 0.8.6 **/ gboolean pk_package_sack_to_file (PkPackageSack *sack, GFile *file, GError **error) { gboolean ret; GString *string; guint i; PkPackage *pkg; string = g_string_new (""); for (i = 0; i < sack->priv->array->len; i++) { pkg = g_ptr_array_index (sack->priv->array, i); g_string_append_printf (string, "%s\t%s\t%s\n", pk_info_enum_to_string (pk_package_get_info (pkg)), pk_package_get_id (pkg), pk_package_get_summary (pkg)); } ret = g_file_replace_contents (file, string->str, string->len, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, error); if (!ret) goto out; out: g_string_free (string, FALSE); return ret; }
/** * pk_package_sack_resolve_cb: **/ static void pk_package_sack_resolve_cb (GObject *source_object, GAsyncResult *res, PkPackageSackState *state) { PkClient *client = PK_CLIENT (source_object); PkPackage *item; guint i; PkPackage *package; const gchar *package_id; g_autoptr(GError) error = NULL; g_autoptr(PkResults) results = NULL; g_autoptr(GPtrArray) packages = NULL; /* get the results */ results = pk_client_generic_finish (client, res, &error); if (results == NULL) { g_warning ("failed to resolve: %s", error->message); pk_package_sack_merge_bool_state_finish (state, error); return; } /* get the packages */ packages = pk_results_get_package_array (results); if (packages->len == 0) { g_warning ("%i", state->ret); error = g_error_new (1, 0, "no packages found!"); pk_package_sack_merge_bool_state_finish (state, error); return; } /* set data on each item */ for (i = 0; i < packages->len; i++) { item = g_ptr_array_index (packages, i); package_id = pk_package_get_id (item); package = pk_package_sack_find_by_id (state->sack, package_id); if (package == NULL) { g_warning ("failed to find %s", package_id); continue; } /* set data */ g_object_set (package, "info", pk_package_get_info (item), "summary", pk_package_get_summary (item), NULL); g_object_unref (package); } /* all okay */ state->ret = TRUE; /* we're done */ pk_package_sack_merge_bool_state_finish (state, error); }