diff options
author | Dan McGee <dan@archlinux.org> | 2011-06-07 23:05:21 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-06-30 16:05:20 -0500 |
commit | 68284da0d72bf27ac3dc5cfc1cd02d16f824130c (patch) | |
tree | 8835a9047bd9ebd95d4ea7f72c2fe7e054d23180 | |
parent | 6633b8e5c290dbb1b0382f3f960e1f7134247a68 (diff) |
Add an alpm_db_get_valid() public function
This allows one to check if a database is valid or invalid.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | lib/libalpm/alpm.h | 8 | ||||
-rw-r--r-- | lib/libalpm/be_local.c | 1 | ||||
-rw-r--r-- | lib/libalpm/be_sync.c | 1 | ||||
-rw-r--r-- | lib/libalpm/db.c | 8 | ||||
-rw-r--r-- | lib/libalpm/db.h | 1 |
5 files changed, 19 insertions, 0 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 33707dd3..b702c030 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -382,6 +382,14 @@ int alpm_db_unregister_all(alpm_handle_t *handle); */ const char *alpm_db_get_name(const alpm_db_t *db); +/** Check the validity of a database. + * This is most useful for sync databases and verifying signature status. + * If invalid, the handle error code will be set accordingly. + * @param db pointer to the package database + * @return 0 if valid, -1 if invalid (pm_errno is set accordingly) + */ +int alpm_db_get_valid(alpm_db_t *db); + /** @name Accessors to the list of servers for a database. * @{ */ diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index c10c9e3c..63a95bb8 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -915,6 +915,7 @@ int _alpm_local_db_remove(alpm_db_t *db, alpm_pkg_t *info) } struct db_operations local_db_ops = { + .validate = local_db_validate, .populate = local_db_populate, .unregister = _alpm_db_unregister, }; diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c index 9d3646c8..cf32257f 100644 --- a/lib/libalpm/be_sync.c +++ b/lib/libalpm/be_sync.c @@ -580,6 +580,7 @@ error: } struct db_operations sync_db_ops = { + .validate = sync_db_validate, .populate = sync_db_populate, .unregister = _alpm_db_unregister, }; diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index f6f810c0..b6a436f1 100644 --- a/lib/libalpm/db.c +++ b/lib/libalpm/db.c @@ -219,6 +219,14 @@ const char SYMEXPORT *alpm_db_get_name(const alpm_db_t *db) return db->treename; } +/** Check the validity of a database. */ +int SYMEXPORT alpm_db_get_valid(alpm_db_t *db) +{ + ASSERT(db != NULL, return -1); + db->handle->pm_errno = 0; + return db->ops->validate(db); +} + /** Get a package entry from a package database. */ alpm_pkg_t SYMEXPORT *alpm_db_get_pkg(alpm_db_t *db, const char *name) { diff --git a/lib/libalpm/db.h b/lib/libalpm/db.h index 7dce006f..0f00f683 100644 --- a/lib/libalpm/db.h +++ b/lib/libalpm/db.h @@ -51,6 +51,7 @@ enum _alpm_dbstatus_t { }; struct db_operations { + int (*validate) (alpm_db_t *); int (*populate) (alpm_db_t *); void (*unregister) (alpm_db_t *); }; |