From 106d0fc541ad21306f5722e0178171eef6a222e9 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sat, 9 Mar 2013 18:28:28 -0500 Subject: 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 Signed-off-by: Allan McRae --- lib/libalpm/db.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib/libalpm/db.c') 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)); -- cgit v1.2.3-24-g4f1b