libxbps: modify xbps_get_binpkg_repo_uri() to accept repository URL as 2nd arg.
This commit is contained in:
parent
6f8b2ca33a
commit
84b578b0e4
@ -120,7 +120,7 @@ again:
|
||||
prop_dictionary_get_cstring_nocopy(obj,
|
||||
"filename-sha256", &sha256);
|
||||
|
||||
binfile = xbps_get_binpkg_repo_uri(obj);
|
||||
binfile = xbps_get_binpkg_repo_uri(obj, repoloc);
|
||||
if (binfile == NULL)
|
||||
return errno;
|
||||
/*
|
||||
@ -153,7 +153,7 @@ again:
|
||||
return -1;
|
||||
}
|
||||
free(binfile);
|
||||
binfile = xbps_get_binpkg_repo_uri(obj);
|
||||
binfile = xbps_get_binpkg_repo_uri(obj, repoloc);
|
||||
if (binfile == NULL)
|
||||
return errno;
|
||||
|
||||
|
@ -71,7 +71,7 @@ static int
|
||||
find_files_in_package(struct repository_pool_index *rpi, void *arg, bool *done)
|
||||
{
|
||||
prop_dictionary_t pkg_filesd;
|
||||
prop_array_t repo_pkgs, files_keys;
|
||||
prop_array_t files_keys;
|
||||
prop_object_t obj;
|
||||
prop_object_iterator_t iter;
|
||||
const char *pkgname, *pkgver, *pattern = arg;
|
||||
@ -81,17 +81,13 @@ find_files_in_package(struct repository_pool_index *rpi, void *arg, bool *done)
|
||||
|
||||
(void)done;
|
||||
|
||||
repo_pkgs = prop_dictionary_get(rpi->rpi_repod, "packages");
|
||||
if (repo_pkgs == NULL)
|
||||
return -1;
|
||||
|
||||
iter = prop_array_iterator(repo_pkgs);
|
||||
iter = xbps_get_array_iter_from_dict(rpi->rpi_repod, "packages");
|
||||
if (iter == NULL)
|
||||
return -1;
|
||||
|
||||
printf("Looking in repository '%s', please wait...\n", rpi->rpi_uri);
|
||||
while ((obj = prop_object_iterator_next(iter))) {
|
||||
url = xbps_get_binpkg_repo_uri(obj);
|
||||
url = xbps_get_binpkg_repo_uri(obj, rpi->rpi_uri);
|
||||
if (url == NULL) {
|
||||
rv = -1;
|
||||
break;
|
||||
|
@ -250,7 +250,7 @@ show_pkg_info_from_repolist(const char *pkgname)
|
||||
return errno;
|
||||
|
||||
prop_dictionary_get_cstring_nocopy(pkgd, "repository", &repoloc);
|
||||
url = xbps_get_binpkg_repo_uri(pkgd);
|
||||
url = xbps_get_binpkg_repo_uri(pkgd, repoloc);
|
||||
if (url == NULL) {
|
||||
prop_object_release(pkgd);
|
||||
return errno;
|
||||
|
@ -942,12 +942,13 @@ bool xbps_check_is_repo_string_remote(const char *uri);
|
||||
* repository location object "repository" in its dictionary.
|
||||
*
|
||||
* @param[in] pkgd Package dictionary stored in a transaction dictionary.
|
||||
* @param[in] repoloc Repository URL location string.
|
||||
*
|
||||
* @return A pointer to a malloc(3)ed string, NULL otherwise and
|
||||
* errno is set appropiately. The pointer should be free(3)d when it's
|
||||
* no longer needed.
|
||||
*/
|
||||
char *xbps_get_binpkg_repo_uri(prop_dictionary_t pkgd);
|
||||
char *xbps_get_binpkg_repo_uri(prop_dictionary_t pkgd, const char *repoloc);
|
||||
|
||||
/**
|
||||
* Gets the full path to a repository package index plist file, as
|
||||
|
@ -409,7 +409,7 @@ out:
|
||||
int
|
||||
xbps_unpack_binary_pkg(prop_dictionary_t pkg_repod)
|
||||
{
|
||||
const char *pkgname, *version;
|
||||
const char *pkgname, *version, *repoloc;
|
||||
struct archive *ar = NULL;
|
||||
char *binfile = NULL;
|
||||
int pkg_fd, rv = 0;
|
||||
@ -418,8 +418,9 @@ xbps_unpack_binary_pkg(prop_dictionary_t pkg_repod)
|
||||
|
||||
prop_dictionary_get_cstring_nocopy(pkg_repod, "pkgname", &pkgname);
|
||||
prop_dictionary_get_cstring_nocopy(pkg_repod, "version", &version);
|
||||
prop_dictionary_get_cstring_nocopy(pkg_repod, "repository", &repoloc);
|
||||
|
||||
binfile = xbps_get_binpkg_repo_uri(pkg_repod);
|
||||
binfile = xbps_get_binpkg_repo_uri(pkg_repod, repoloc);
|
||||
if (binfile == NULL)
|
||||
return EINVAL;
|
||||
|
||||
|
@ -194,6 +194,7 @@ prop_dictionary_t
|
||||
xbps_repository_get_pkg_plist_dict(const char *pkgname, const char *plistf)
|
||||
{
|
||||
prop_dictionary_t pkgd = NULL, plistd = NULL;
|
||||
const char *repoloc;
|
||||
char *url;
|
||||
int rv = 0;
|
||||
|
||||
@ -214,7 +215,8 @@ xbps_repository_get_pkg_plist_dict(const char *pkgname, const char *plistf)
|
||||
if (pkgd == NULL)
|
||||
goto out;
|
||||
|
||||
url = xbps_get_binpkg_repo_uri(pkgd);
|
||||
prop_dictionary_get_cstring_nocopy(pkgd, "repository", &repoloc);
|
||||
url = xbps_get_binpkg_repo_uri(pkgd, repoloc);
|
||||
if (url == NULL) {
|
||||
errno = EINVAL;
|
||||
goto out;
|
||||
|
14
lib/util.c
14
lib/util.c
@ -374,14 +374,17 @@ xbps_get_pkg_index_plist(const char *uri)
|
||||
}
|
||||
|
||||
char *
|
||||
xbps_get_binpkg_repo_uri(prop_dictionary_t pkg_repod)
|
||||
xbps_get_binpkg_repo_uri(prop_dictionary_t pkg_repod, const char *repoloc)
|
||||
{
|
||||
const char *filen, *arch, *cdir, *repoloc;
|
||||
const char *filen, *arch, *cdir;
|
||||
char *lbinpkg = NULL;
|
||||
|
||||
prop_dictionary_get_cstring_nocopy(pkg_repod, "filename", &filen);
|
||||
prop_dictionary_get_cstring_nocopy(pkg_repod, "architecture", &arch);
|
||||
prop_dictionary_get_cstring_nocopy(pkg_repod, "repository", &repoloc);
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg_repod,
|
||||
"filename", &filen))
|
||||
return NULL;
|
||||
if (!prop_dictionary_get_cstring_nocopy(pkg_repod,
|
||||
"architecture", &arch))
|
||||
return NULL;
|
||||
|
||||
cdir = xbps_get_cachedir();
|
||||
if (cdir == NULL)
|
||||
@ -398,7 +401,6 @@ xbps_get_binpkg_repo_uri(prop_dictionary_t pkg_repod)
|
||||
return lbinpkg;
|
||||
|
||||
free(lbinpkg);
|
||||
|
||||
/*
|
||||
* Local and remote repositories use the same path.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user