/** * hif_package_get_pkgid: * @pkg: a #HifPackage *instance. * * Gets the pkgid, which is the SHA hash of the package header. * * Returns: pkgid string, or NULL * * Since: 0.1.0 **/ const gchar * hif_package_get_pkgid(HifPackage *pkg) { const unsigned char *checksum; HifPackagePrivate *priv; int checksum_type; priv = hif_package_get_priv(pkg); if (priv == NULL) return NULL; if (priv->checksum_str != NULL) goto out; /* calculate and cache */ checksum = hif_package_get_hdr_chksum(pkg, &checksum_type); if (checksum == NULL) goto out; priv->checksum_str = hy_chksum_str(checksum, checksum_type); out: return priv->checksum_str; }
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); }