/** * hif_package_get_package_id: * @pkg: a #HifPackage *instance. * * Gets the package-id as used by PackageKit. * * Returns: the package_id string, or %NULL, e.g. "hal;2:0.3.4;i386;installed:fedora" * * Since: 0.1.0 **/ const gchar * hif_package_get_package_id(HifPackage *pkg) { HifPackagePrivate *priv; const gchar *reponame; g_autofree gchar *reponame_tmp = NULL; priv = hif_package_get_priv(pkg); if (priv == NULL) return NULL; if (priv->package_id != NULL) goto out; /* calculate and cache */ reponame = hif_package_get_reponame(pkg); if (g_strcmp0(reponame, HY_SYSTEM_REPO_NAME) == 0) { /* origin data to munge into the package_id data field */ if (priv->origin != NULL) { reponame_tmp = g_strdup_printf("installed:%s", priv->origin); reponame = reponame_tmp; } else { reponame = "installed"; } } else if (g_strcmp0(reponame, HY_CMDLINE_REPO_NAME) == 0) { reponame = "local"; } priv->package_id = hif_package_id_build(hif_package_get_name(pkg), hif_package_get_evr(pkg), hif_package_get_arch(pkg), reponame); out: return priv->package_id; }
static void execute_print(HifSack *sack, HyQuery q, int show_obsoletes) { GPtrArray *plist; plist = hy_query_run(q); const int count = plist->len; for (int i = 0; i < count; ++i) { HifPackage *pkg = g_ptr_array_index(plist, i); const char *nvra = hif_package_get_nevra(pkg); const char *reponame = hif_package_get_reponame(pkg); printf("found package: %s [%s]\n", nvra, reponame); if (strcmp(reponame, HY_SYSTEM_REPO_NAME) == 0) { int type; const unsigned char * hdrid = hif_package_get_hdr_chksum(pkg, &type); char *str = hy_chksum_str(hdrid, type); printf("\tsha1 header id: %s\n", str); g_free(str); } if (show_obsoletes) { HifReldepList *obsoletes = hif_package_get_obsoletes(pkg); HyQuery qobs = hy_query_create(sack); hy_query_filter(qobs, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); hy_query_filter_reldep_in(qobs, HY_PKG_PROVIDES, obsoletes); GPtrArray *olist = hy_query_run(qobs); const int ocount = olist->len; for (int j = 0; j < ocount; ++j) { HifPackage *opkg = g_ptr_array_index(olist, j); const char *onvra = hif_package_get_nevra(opkg); printf("obsoleting: %s\n", onvra); } g_ptr_array_unref(olist); hy_query_free(qobs); g_object_unref(obsoletes); } } g_ptr_array_unref(plist); }