Implemented plist caching, that gives >30% performance.
--HG-- extra : convert_revision : 6302893f967be96f99a86d499ca62a8c005e56f7
This commit is contained in:
parent
55f2f51b40
commit
38e6679ff5
7 changed files with 100 additions and 93 deletions
|
@ -100,8 +100,6 @@ int
|
|||
main(int argc, char **argv)
|
||||
{
|
||||
prop_dictionary_t dict;
|
||||
const char *rootdir;
|
||||
char *plist;
|
||||
int c, flags = 0, rv = 0;
|
||||
bool chkhash = false, force = false, verbose = false;
|
||||
|
||||
|
@ -136,32 +134,30 @@ main(int argc, char **argv)
|
|||
if (flags != 0)
|
||||
xbps_set_flags(flags);
|
||||
|
||||
if ((dict = xbps_prepare_regpkgdb_dict()) == NULL) {
|
||||
if (errno != ENOENT) {
|
||||
rv = errno;
|
||||
printf("Couldn't initialized regpkgdb dict: %s\n",
|
||||
strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (strcasecmp(argv[0], "list") == 0) {
|
||||
/* Lists packages currently registered in database. */
|
||||
if (argc != 1)
|
||||
usage();
|
||||
|
||||
rootdir = xbps_get_rootdir();
|
||||
plist = xbps_xasprintf("%s/%s/%s", rootdir,
|
||||
XBPS_META_PATH, XBPS_REGPKGDB);
|
||||
if (plist == NULL)
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
dict = prop_dictionary_internalize_from_file(plist);
|
||||
if (dict == NULL) {
|
||||
printf("No packages currently registered.\n");
|
||||
free(plist);
|
||||
exit(EXIT_SUCCESS);
|
||||
printf("No packages currently installed.\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!xbps_callback_array_iter_in_dict(dict, "packages",
|
||||
list_pkgs_in_dict, NULL)) {
|
||||
prop_object_release(dict);
|
||||
free(plist);
|
||||
exit(EXIT_FAILURE);
|
||||
rv = errno;
|
||||
goto out;
|
||||
}
|
||||
prop_object_release(dict);
|
||||
free(plist);
|
||||
|
||||
} else if (strcasecmp(argv[0], "install") == 0) {
|
||||
/* Installs a binary package and required deps. */
|
||||
|
@ -230,5 +226,10 @@ main(int argc, char **argv)
|
|||
usage();
|
||||
}
|
||||
|
||||
out:
|
||||
xbps_release_regpkgdb_dict();
|
||||
if (rv != 0)
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue