summaryrefslogtreecommitdiffstats
path: root/lib/libalpm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm')
-rw-r--r--lib/libalpm/alpm.h8
-rw-r--r--lib/libalpm/be_local.c1
-rw-r--r--lib/libalpm/be_sync.c1
-rw-r--r--lib/libalpm/db.c8
-rw-r--r--lib/libalpm/db.h1
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 *);
};