Improve dependency matching via repos and use the "pkgver" object

in pkg dictionary to improve performance in some cases.

Bumped XBPS_RELVER to 20091121.

--HG--
extra : convert_revision : xtraeme%40gmail.com-20091122041547-oywx4db75j8uttl3
This commit is contained in:
Juan RP
2009-11-22 05:15:47 +01:00
parent 71ea9d2d1f
commit 3d24672e58
8 changed files with 79 additions and 73 deletions

View File

@@ -153,27 +153,19 @@ xbps_requiredby_pkg_add(prop_array_t regar, prop_dictionary_t pkg)
prop_array_t rdeps;
prop_object_t obj, obj2;
prop_object_iterator_t iter, iter2;
const char *reqname, *pkgname, *version, *str;
char *rdepname, *fpkgn;
const char *reqname, *pkgver, *str;
char *rdepname;
int rv = 0;
prop_dictionary_get_cstring_nocopy(pkg, "pkgname", &pkgname);
prop_dictionary_get_cstring_nocopy(pkg, "version", &version);
fpkgn = xbps_xasprintf("%s-%s", pkgname, version);
if (fpkgn == NULL)
return ENOMEM;
prop_dictionary_get_cstring_nocopy(pkg, "pkgver", &pkgver);
rdeps = prop_dictionary_get(pkg, "run_depends");
if (rdeps == NULL || prop_array_count(rdeps) == 0) {
free(fpkgn);
if (rdeps == NULL || prop_array_count(rdeps) == 0)
return EINVAL;
}
iter = prop_array_iterator(rdeps);
if (iter == NULL) {
free(fpkgn);
if (iter == NULL)
return ENOMEM;
}
while ((obj = prop_object_iterator_next(iter)) != NULL) {
str = prop_string_cstring_nocopy(obj);
@@ -193,7 +185,7 @@ xbps_requiredby_pkg_add(prop_array_t regar, prop_dictionary_t pkg)
prop_dictionary_get_cstring_nocopy(obj2, "pkgname",
&reqname);
if (strcmp(rdepname, reqname) == 0) {
rv = add_pkg_into_reqby(obj2, fpkgn);
rv = add_pkg_into_reqby(obj2, pkgver);
if (rv == EEXIST)
continue;
else if (rv != 0) {
@@ -209,7 +201,6 @@ xbps_requiredby_pkg_add(prop_array_t regar, prop_dictionary_t pkg)
}
out:
free(fpkgn);
prop_object_iterator_release(iter);
return rv;