SeafRepo* seaf_repo_manager_get_repo_ex (SeafRepoManager *manager, const gchar *id) { int len = strlen(id); gboolean db_err = FALSE, exists; SeafRepo *ret = NULL; if (len >= 37) return NULL; exists = repo_exists_in_db_ex (manager->seaf->db, id, &db_err); if (db_err) { ret = seaf_repo_new(id, NULL, NULL); ret->is_corrupted = TRUE; return ret; } if (exists) { ret = load_repo (manager, id, TRUE); return ret; } return NULL; }
static int search_single_repo(struct repovec_t *repos, char *searchstring) { struct repo_t *repo; if (!config.targetrepo) { config.targetrepo = strsep(&searchstring, "/"); config.filter.glob.glob = searchstring; config.filter.glob.globlen = strlen(searchstring); config.filterby = FILTER_EXACT; } REPOVEC_FOREACH(repo, repos) { if (strcmp(repo->name, config.targetrepo) == 0) { struct result_t *result; int r; result = load_repo(repo); r = result->size == 0; result_print(result, config.raw ? 0 : result->max_prefixlen, config.eol); result_free(result); return r; } } /* repo not found */ fprintf(stderr, "error: repo not available: %s\n", config.targetrepo); return 1; }
END_TEST START_TEST(test_two_sacks) { /* This clumsily mimics create_ut_sack() and setup_with() to * create a second HySack. */ char *tmpdir = solv_dupjoin(test_globals.tmpdir, "/tmp", NULL); HySack sack1 = hy_sack_create(tmpdir, TEST_FIXED_ARCH, NULL, NULL, HY_MAKE_CACHE_DIR); Pool *pool1 = sack_pool(sack1); const char *path = pool_tmpjoin(pool1, test_globals.repo_dir, "change.repo", NULL); fail_if(load_repo(pool1, "change", path, 0)); HyPackage pkg1 = by_name(sack1, "penny-lib"); fail_if(pkg1 == NULL); HySack sack2 = test_globals.sack; Pool *pool2 = sack_pool(sack2); HyPackage pkg2 = by_name(sack2, "penny-lib"); fail_if(pkg2 == NULL); /* "penny-lib" is in both pools but at different offsets */ Solvable *s1 = pool_id2solvable(pool1, pkg1->id); Solvable *s2 = pool_id2solvable(pool2, pkg2->id); fail_if(s1->name == s2->name); fail_if(hy_package_cmp(pkg1, pkg2) != 0); hy_package_free(pkg1); hy_package_free(pkg2); hy_sack_free(sack1); solv_free(tmpdir); }
SeafRepo* seaf_repo_manager_get_repo (SeafRepoManager *manager, const gchar *id) { SeafRepo repo; int len = strlen(id); if (len >= 37) return NULL; memcpy (repo.id, id, len + 1); if (repo_exists_in_db (manager->seaf->db, id)) { SeafRepo *ret = load_repo (manager, id); if (!ret) return NULL; /* seaf_repo_ref (ret); */ return ret; } return NULL; }