From 6f75de92b55d879abeb29b5d0aede2830ffbb1aa Mon Sep 17 00:00:00 2001
From: Judd Vinet <judd@archlinux.org>
Date: Sat, 8 Oct 2005 23:40:49 +0000
Subject: added more error messages, enabled the db permission check in
 trans_commit

---
 lib/libalpm/alpm.c  |  4 ++--
 lib/libalpm/alpm.h  |  2 +-
 lib/libalpm/error.c | 42 ++++++++++++++++++++++++++++++++++++------
 3 files changed, 39 insertions(+), 9 deletions(-)

(limited to 'lib/libalpm')

diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
index f7a1ec34..d0e31e52 100644
--- a/lib/libalpm/alpm.c
+++ b/lib/libalpm/alpm.c
@@ -615,8 +615,8 @@ int alpm_trans_commit()
 	ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
 	ASSERT(trans->state == STATE_PREPARED, RET_ERR(PM_ERR_TRANS_NOT_PREPARED, -1));
 
-	/* ORE
-	ASSERT(handle->access != PM_ACCESS_RW, RET_ERR(PM_ERR_BAD_PERMS, -1));*/
+	/* Check for database R/W permission */
+	ASSERT(handle->access == PM_ACCESS_RW, RET_ERR(PM_ERR_BADPERMS, -1));
 
 	return(trans_commit(handle->trans));
 }
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 539d988a..68e8b7b0 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -310,8 +310,8 @@ extern enum __pmerrno_t {
 	PM_ERR_DB_OPEN,
 	PM_ERR_DB_CREATE,
 	PM_ERR_DB_NULL,
-	PM_ERR_DB_NOT_FOUND,
 	PM_ERR_DB_NOT_NULL,
+	PM_ERR_DB_NOT_FOUND,
 	PM_ERR_DB_WRITE,
 	PM_ERR_DB_UPTODATE,
 	/* Cache */
diff --git a/lib/libalpm/error.c b/lib/libalpm/error.c
index 3b7797c7..9f60e907 100644
--- a/lib/libalpm/error.c
+++ b/lib/libalpm/error.c
@@ -25,6 +25,14 @@ char *alpm_strerror(int err)
 {
 	switch(err) {
 		/* System */
+		case PM_ERR_MEMORY:
+			return "out of memory!";
+		case PM_ERR_SYSTEM:
+			return "unexpected error";
+		case PM_ERR_BADPERMS:
+			return "insufficient privileges";
+		case PM_ERR_WRONG_ARGS:
+			return "wrong or NULL argument passed";
 		case PM_ERR_NOT_A_FILE:
 			return "could not find or read file";
 		/* Interface */
@@ -32,8 +40,8 @@ char *alpm_strerror(int err)
 			return "library not initialized";
 		case PM_ERR_HANDLE_NOT_NULL:
 			return "library already initialized";
-		case PM_ERR_WRONG_ARGS:
-			return "wrong or NULL argument";
+		case PM_ERR_HANDLE_LOCK:
+			return "unable to lock database";
 		/* Databases */
 		case PM_ERR_DB_OPEN:
 			return "could not open database";
@@ -45,9 +53,17 @@ char *alpm_strerror(int err)
 			return "database already registered";
 		case PM_ERR_DB_NOT_FOUND:
 			return "could not find database";
+		case PM_ERR_DB_WRITE:
+			return "could not update database";
+		case PM_ERR_DB_UPTODATE:
+			return "database is up to date";
+		/* Cache */
+		case PM_ERR_CACHE_NULL:
+			return "cache not initialized";
 		/* Configuration */
 		case PM_ERR_OPT_LOGFILE:
 		case PM_ERR_OPT_DBPATH:
+		case PM_ERR_OPT_LOCALDB:
 		case PM_ERR_OPT_SYNCDB:
 		case PM_ERR_OPT_USESYSLOG:
 			return "could not set parameter";
@@ -57,22 +73,33 @@ char *alpm_strerror(int err)
 		case PM_ERR_TRANS_NOT_NULL:
 			return "transaction already initialized";
 		case PM_ERR_TRANS_DUP_TARGET:
-			return "duplicated target";
+			return "duplicate target";
 		case PM_ERR_TRANS_INITIALIZED:
 			return "transaction already initialized";
 		case PM_ERR_TRANS_NOT_INITIALIZED:
 			return "transaction not initialized";
+		case PM_ERR_TRANS_NOT_PREPARED:
+			return "transaction not prepared";
+		case PM_ERR_TRANS_ABORT:
+			return "transaction aborted";
 		/* Packages */
 		case PM_ERR_PKG_NOT_FOUND:
 			return "could not find or read package";
 		case PM_ERR_PKG_INVALID:
 			return "invalid or corrupted package";
+		case PM_ERR_PKG_OPEN:
+			return "cannot open package file";
+		case PM_ERR_PKG_LOAD:
+			return "cannot load package data";
 		case PM_ERR_PKG_INSTALLED:
 			return "package already installed";
 		case PM_ERR_PKG_CANT_FRESH:
 			return "package not installed or lesser version";
 		case PM_ERR_PKG_INVALID_NAME:
 			return "package name is not valid";
+		/* Groups */
+		case PM_ERR_GRP_NOT_FOUND:
+			return "group not found";
 		/* Dependencies */
 		case PM_ERR_UNSATISFIED_DEPS:
 			return "could not satisfy dependencies";
@@ -82,9 +109,12 @@ char *alpm_strerror(int err)
 			return "could not resolve dependencies";
 		case PM_ERR_FILE_CONFLICTS:
 			return "conflicting files";
-		/* System */
-		case PM_ERR_HANDLE_LOCK:
-			return "could not create the lock file";
+		/* Miscellaenous */
+		case PM_ERR_USER_ABORT:
+			return "user aborted";
+		case PM_ERR_INTERNAL_ERROR:
+			return "internal error";
+		case PM_ERR_XXX:
 		default:
 			return "unexpected error";
 	}
-- 
cgit v1.2.3-2-g168b