diff options
author | Dave Reisner <dreisner@archlinux.org> | 2013-03-10 00:28:28 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2013-09-04 01:51:20 +0200 |
commit | 106d0fc541ad21306f5722e0178171eef6a222e9 (patch) | |
tree | 6529a3b3573179ad9355e008181e724fe98ce853 /lib/libalpm/db.c | |
parent | 5f80d7afbd45100f5b5d28e43a9d9a80dde4b559 (diff) | |
download | pacman-106d0fc541ad21306f5722e0178171eef6a222e9.tar.gz pacman-106d0fc541ad21306f5722e0178171eef6a222e9.tar.xz |
libalpm: introduce a usage level for repos
This defines a level of interest a user has in a repository. These are
described by the bitmask flags in the alpm_db_usage_t enum:
ALPM_DB_USAGE_SEARCH: repo is valid for searching
ALPM_DB_USAGE_INSTALL: repo is valid for installs (e.g. -S pkg)
ALPM_DB_USAGE_UPGRADE: repo is valid for sysupgrades
ALPM_DB_USAGE_ALL: all of the above are valid
Explicitly listing the contents of a repo will always be valid, and the
repo will always be refreshed appropriately on sync operations.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'lib/libalpm/db.c')
-rw-r--r-- | lib/libalpm/db.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index 3a04a87b..3245d64f 100644 --- a/lib/libalpm/db.c +++ b/lib/libalpm/db.c @@ -292,6 +292,23 @@ alpm_list_t SYMEXPORT *alpm_db_search(alpm_db_t *db, const alpm_list_t *needles) return _alpm_db_search(db, needles); } +/** Sets the usage bitmask for a repo */ +int SYMEXPORT alpm_db_set_usage(alpm_db_t *db, alpm_db_usage_t usage) +{ + ASSERT(db != NULL, return -1); + db->usage = usage; + return 0; +} + +/** Gets the usage bitmask for a repo */ +int SYMEXPORT alpm_db_get_usage(alpm_db_t *db, alpm_db_usage_t *usage) +{ + ASSERT(db != NULL, return -1); + ASSERT(usage != NULL, return -1); + *usage = db->usage; + return 0; +} + /** @} */ @@ -365,6 +382,11 @@ alpm_list_t *_alpm_db_search(alpm_db_t *db, const alpm_list_t *needles) { const alpm_list_t *i, *j, *k; alpm_list_t *ret = NULL; + + if(!(db->usage & ALPM_DB_USAGE_SEARCH)) { + return NULL; + } + /* copy the pkgcache- we will free the list var after each needle */ alpm_list_t *list = alpm_list_copy(_alpm_db_get_pkgcache(db)); |