libxbps: cache regpkgdb just when it's needed not via xbps_init().

This commit is contained in:
Juan RP 2011-12-22 12:56:56 +01:00
parent 8fd5253e31
commit b232ca1815
6 changed files with 29 additions and 16 deletions

View File

@ -177,17 +177,6 @@ xbps_init(struct xbps_handle *xh)
xbps_dbg_printf("fetch-cacheconn=%u\n", cc);
xbps_dbg_printf("fetch-cacheconn-host=%u\n", cch);
xbps_dbg_printf("syslog=%u\n", xhp->syslog_enabled);
/*
* Initialize regpkgdb dictionary.
*/
if ((rv = xbps_regpkgdb_dictionary_init(xhp)) != 0) {
if (rv != ENOENT) {
xbps_dbg_printf("%s: couldn't initialize "
"regpkgdb: %s\n", strerror(rv));
xbps_end(xh);
return EINVAL;
}
}
return 0;
}

View File

@ -56,6 +56,11 @@ xbps_configure_packages(void)
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;

View File

@ -182,6 +182,11 @@ xbps_find_pkg_orphans(prop_array_t orphans_user)
* in which packages were installed.
*/
od.orphans_user = orphans_user;
if ((rv = xbps_regpkgdb_dictionary_init(xhp)) != 0) {
xbps_dbg_printf("%s: couldn't initialize "
"regpkgdb: %s\n", strerror(rv));
return NULL;
}
rv = xbps_callback_array_iter_reverse_in_dict(xhp->regpkgdb_dictionary,
"packages", find_orphan_pkg, &od);
if (rv != 0) {

View File

@ -108,6 +108,11 @@ xbps_purge_packages(void)
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;

View File

@ -320,12 +320,19 @@ find_pkgd_installed(const char *str, bool bypattern, bool virtual)
struct xbps_handle *xhp;
prop_dictionary_t pkgd, rpkgd = NULL;
pkg_state_t state = 0;
int rv;
assert(str != NULL);
xhp = xbps_handle_get();
if (xhp->regpkgdb_dictionary == NULL)
return NULL;
if ((rv = xbps_regpkgdb_dictionary_init(xhp)) != 0) {
if (rv != ENOENT) {
xbps_dbg_printf("%s: couldn't initialize "
"regpkgdb: %s\n", strerror(rv));
return NULL;
} else if (rv == ENOENT)
return NULL;
}
/* try normal pkg */
if (virtual == false) {

View File

@ -188,9 +188,11 @@ xbps_transaction_update_packages(void)
bool newpkg_found = false;
xhp = xbps_handle_get();
if (xhp->regpkgdb_dictionary == NULL)
return ENOENT;
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 ENOENT;