uint32_t TDNFQueryTermsHelper( HyPackageList hAccumPkgList, HyQuery hQuery, int nKeyId, const char* pszMatch ) { HyPackageList hPkgList = NULL; HyPackage hPkg = NULL; uint32_t unError = 0; int nIndex = 0; if(!hAccumPkgList || !hQuery || !pszMatch) { unError = ERROR_TDNF_INVALID_PARAMETER; goto error; } unError = hy_query_filter( hQuery, nKeyId, HY_GLOB | HY_ICASE, pszMatch); BAIL_ON_TDNF_HAWKEY_ERROR(unError); hPkgList = hy_query_run(hQuery); if(!hPkgList) { unError = HY_E_IO; BAIL_ON_TDNF_HAWKEY_ERROR(unError); } FOR_PACKAGELIST(hPkg, hPkgList, nIndex) { if (!hy_packagelist_has(hAccumPkgList, hPkg)) { hy_packagelist_push(hAccumPkgList, hy_package_link(hPkg)); } } cleanup: if (hPkgList != NULL) { hy_packagelist_free(hPkgList); } if (hQuery != NULL) { hy_query_clear(hQuery); } return unError; error: goto cleanup; }
END_TEST START_TEST(test_query_clear) { HyQuery q; q = hy_query_create(test_globals.sack); hy_query_filter(q, HY_PKG_NAME, HY_NEQ, "fool"); hy_query_clear(q); hy_query_filter(q, HY_PKG_NAME, HY_EQ, "fool"); fail_unless(query_count_results(q) == 1); hy_query_free(q); }
static void search_and_print(HifSack *sack, const char *name) { HyQuery q = hy_query_create(sack); printf("found packages by name:\n"); hy_query_filter(q, HY_PKG_NAME, HY_EQ, name); execute_print(sack, q, 0); hy_query_clear(q); printf("\nfound packages by substring of summary:\n"); hy_query_filter(q, HY_PKG_SUMMARY, HY_SUBSTR, name); execute_print(sack, q, 0); hy_query_free(q); }
END_TEST START_TEST(test_filter_obsoletes) { HySack sack = test_globals.sack; HyQuery q = hy_query_create(sack); HyPackageSet pset = hy_packageset_create(sack); // empty fail_if(hy_query_filter_package_in(q, HY_PKG_OBSOLETES, HY_EQ, pset)); fail_unless(query_count_results(q) == 0); hy_query_clear(q); hy_packageset_add(pset, by_name(sack, "penny")); hy_query_filter_package_in(q, HY_PKG_OBSOLETES, HY_EQ, pset); fail_unless(query_count_results(q) == 1); hy_query_free(q); hy_packageset_free(pset); }