void slapt_free_transaction(slapt_transaction_t *tran) { unsigned int i; if (tran->install_pkgs->free_pkgs == SLAPT_TRUE) { for (i = 0;i < tran->install_pkgs->pkg_count; ++i) { slapt_free_pkg(tran->install_pkgs->pkgs[i]); } } free(tran->install_pkgs->pkgs); free(tran->install_pkgs); if (tran->remove_pkgs->free_pkgs == SLAPT_TRUE) { for (i = 0;i < tran->remove_pkgs->pkg_count; ++i) { slapt_free_pkg(tran->remove_pkgs->pkgs[i]); } } free(tran->remove_pkgs->pkgs); free(tran->remove_pkgs); for (i = 0;i < tran->upgrade_pkgs->pkg_count; ++i) { slapt_free_pkg(tran->upgrade_pkgs->pkgs[i]->upgrade); slapt_free_pkg(tran->upgrade_pkgs->pkgs[i]->installed); free(tran->upgrade_pkgs->pkgs[i]); } free(tran->upgrade_pkgs->pkgs); free(tran->upgrade_pkgs); if (tran->exclude_pkgs->free_pkgs == SLAPT_TRUE) { for (i = 0; i < tran->exclude_pkgs->pkg_count; ++i) { slapt_free_pkg(tran->exclude_pkgs->pkgs[i]); } } free(tran->exclude_pkgs->pkgs); free(tran->exclude_pkgs); slapt_free_list(tran->suggests); queue_free(tran->queue); slapt_free_pkg_err_list(tran->conflict_err); slapt_free_pkg_err_list(tran->missing_err); free(tran); }
END_TEST START_TEST (test_error) { slapt_pkg_err_list_t *list = slapt_init_pkg_err_list(); slapt_add_pkg_err_to_list(list, "gslapt", "Server returned 404"); fail_unless ( slapt_search_pkg_err_list(list, "gslapt", "Server returned 404") == 1); slapt_free_pkg_err_list(list); }
/** * backend_get_depends: */ static void backend_get_depends (PkBackend *backend, PkBitfield filters, gchar **package_ids, gboolean recursive) { guint i; guint len; const gchar *package_id; gchar *pi; slapt_pkg_info_t *pkg; int ret; slapt_pkg_list_t *installed; slapt_pkg_list_t *available; slapt_pkg_list_t *depends; slapt_pkg_err_list_t *conflicts; slapt_pkg_err_list_t *missing; PkInfoEnum state; const char *summary; installed = slapt_get_installed_pkgs(); available = slapt_get_available_pkgs(); conflicts = slapt_init_pkg_err_list(); missing = slapt_init_pkg_err_list(); pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY); len = g_strv_length (package_ids); for (i=0; i<len; i++) { pi = package_ids[i]; if (pi == NULL) { pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id"); pk_backend_finished (backend); return; } pkg = _get_pkg_from_id(pi, available, installed); if (pkg == NULL) { pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "package not found"); continue; } depends = slapt_init_pkg_list(); ret = slapt_get_pkg_dependencies(_config, available, installed, pkg, depends, conflicts, missing); for (i = 0; i < depends->pkg_count; i++) { pkg = depends->pkgs[i]; state = pkg->installed ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE; package_id = _get_string_from_pkg(pkg); summary = _get_pkg_summary(pkg); pk_backend_package (backend, state, package_id, summary); g_free((gpointer) summary); g_free((gpointer) package_id); } slapt_free_pkg_list(depends); } slapt_free_pkg_err_list(missing); slapt_free_pkg_err_list(conflicts); slapt_free_pkg_list(available); slapt_free_pkg_list(installed); pk_backend_finished (backend); }