summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/db.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm/db.c')
-rw-r--r--lib/libalpm/db.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c
index 528b04bb..2069a7b5 100644
--- a/lib/libalpm/db.c
+++ b/lib/libalpm/db.c
@@ -46,6 +46,8 @@
alpm_db_t SYMEXPORT *alpm_register_syncdb(alpm_handle_t *handle,
const char *treename, alpm_siglevel_t level)
{
+ alpm_list_t *i;
+
/* Sanity checks */
CHECK_HANDLE(handle, return NULL);
ASSERT(treename != NULL && strlen(treename) != 0,
@@ -53,6 +55,17 @@ alpm_db_t SYMEXPORT *alpm_register_syncdb(alpm_handle_t *handle,
/* Do not register a database if a transaction is on-going */
ASSERT(handle->trans == NULL, RET_ERR(handle, ALPM_ERR_TRANS_NOT_NULL, NULL));
+ /* ensure database name is unique */
+ if(strcmp(treename, "local") == 0) {
+ RET_ERR(handle, ALPM_ERR_DB_NOT_NULL, NULL);
+ }
+ for(i = handle->dbs_sync; i; i = i->next) {
+ alpm_db_t *d = i->data;
+ if(strcmp(treename, d->treename) == 0) {
+ RET_ERR(handle, ALPM_ERR_DB_NOT_NULL, NULL);
+ }
+ }
+
return _alpm_db_register_sync(handle, treename, level);
}