Introduce regpkgdb_foreach_reverse_pkg_cb, switch to regpkgdb_foreach_xxx.

This commit is contained in:
Juan RP
2011-12-23 08:16:25 +01:00
parent 36c79fc167
commit d7a32a7eca
6 changed files with 104 additions and 108 deletions

View File

@@ -46,35 +46,24 @@
* member, the package (or packages) will be reconfigured even if its
* state is XBPS_PKG_STATE_INSTALLED.
*/
static int
configure_pkgs_cb(prop_object_t obj, void *arg, bool *done)
{
const char *pkgname, *version;
(void)arg;
(void)done;
prop_dictionary_get_cstring_nocopy(obj, "pkgname", &pkgname);
prop_dictionary_get_cstring_nocopy(obj, "version", &version);
return xbps_configure_pkg(pkgname, version, true, false);
}
int
xbps_configure_packages(void)
{
struct xbps_handle *xhp;
prop_object_t obj;
prop_object_iterator_t iter;
const char *pkgname, *version;
int rv = 0;
xhp = xbps_handle_get();
if ((rv = xbps_regpkgdb_dictionary_init(xhp)) != 0) {
xbps_dbg_printf("%s: couldn't initialize "
"regpkgdb: %s\n", strerror(rv));
return rv;
}
iter = xbps_array_iter_from_dict(xhp->regpkgdb_dictionary, "packages");
if (iter == NULL)
return errno;
while ((obj = prop_object_iterator_next(iter)) != NULL) {
prop_dictionary_get_cstring_nocopy(obj, "pkgname", &pkgname);
prop_dictionary_get_cstring_nocopy(obj, "version", &version);
rv = xbps_configure_pkg(pkgname, version, true, false);
if (rv != 0)
break;
}
prop_object_iterator_release(iter);
return rv;
return xbps_regpkgdb_foreach_pkg_cb(configure_pkgs_cb, NULL);
}
int