[pacman-dev] [PATCH] libalpm: consistently use int as return type for option setters

Rémy Oudompheng remyoudompheng at gmail.com
Sun Apr 10 08:02:39 EDT 2011


Currently the only error case is when handle == NULL.
However several handle functions return -1 on this error,
and a uniform API makes things simpler.

Signed-off-by: Rémy Oudompheng <remy at archlinux.org>
---
This patch introduces an API change.

On branch 'master'

 lib/libalpm/alpm.h   |   34 +++++++++---------
 lib/libalpm/handle.c |   97 ++++++++++++++++++++++++++-----------------------
 src/pacman/pacman.c  |   13 ++++---
 3 files changed, 76 insertions(+), 68 deletions(-)

diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index b08191d..82eb11e 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -99,16 +99,16 @@ typedef int (*alpm_cb_fetch)(const char *url, const char *localpath,
  */
 
 alpm_cb_log alpm_option_get_logcb(void);
-void alpm_option_set_logcb(alpm_cb_log cb);
+int alpm_option_set_logcb(alpm_cb_log cb);
 
 alpm_cb_download alpm_option_get_dlcb(void);
-void alpm_option_set_dlcb(alpm_cb_download cb);
+int alpm_option_set_dlcb(alpm_cb_download cb);
 
 alpm_cb_fetch alpm_option_get_fetchcb(void);
-void alpm_option_set_fetchcb(alpm_cb_fetch cb);
+int alpm_option_set_fetchcb(alpm_cb_fetch cb);
 
 alpm_cb_totaldl alpm_option_get_totaldlcb(void);
-void alpm_option_set_totaldlcb(alpm_cb_totaldl cb);
+int alpm_option_set_totaldlcb(alpm_cb_totaldl cb);
 
 const char *alpm_option_get_root(void);
 int alpm_option_set_root(const char *root);
@@ -118,7 +118,7 @@ int alpm_option_set_dbpath(const char *dbpath);
 
 alpm_list_t *alpm_option_get_cachedirs(void);
 int alpm_option_add_cachedir(const char *cachedir);
-void alpm_option_set_cachedirs(alpm_list_t *cachedirs);
+int alpm_option_set_cachedirs(alpm_list_t *cachedirs);
 int alpm_option_remove_cachedir(const char *cachedir);
 
 const char *alpm_option_get_logfile(void);
@@ -131,36 +131,36 @@ const char *alpm_option_get_signaturedir(void);
 int alpm_option_set_signaturedir(const char *signaturedir);
 
 int alpm_option_get_usesyslog(void);
-void alpm_option_set_usesyslog(int usesyslog);
+int alpm_option_set_usesyslog(int usesyslog);
 
 alpm_list_t *alpm_option_get_noupgrades(void);
-void alpm_option_add_noupgrade(const char *pkg);
-void alpm_option_set_noupgrades(alpm_list_t *noupgrade);
+int alpm_option_add_noupgrade(const char *pkg);
+int alpm_option_set_noupgrades(alpm_list_t *noupgrade);
 int alpm_option_remove_noupgrade(const char *pkg);
 
 alpm_list_t *alpm_option_get_noextracts(void);
-void alpm_option_add_noextract(const char *pkg);
-void alpm_option_set_noextracts(alpm_list_t *noextract);
+int alpm_option_add_noextract(const char *pkg);
+int alpm_option_set_noextracts(alpm_list_t *noextract);
 int alpm_option_remove_noextract(const char *pkg);
 
 alpm_list_t *alpm_option_get_ignorepkgs(void);
-void alpm_option_add_ignorepkg(const char *pkg);
-void alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs);
+int alpm_option_add_ignorepkg(const char *pkg);
+int alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs);
 int alpm_option_remove_ignorepkg(const char *pkg);
 
 alpm_list_t *alpm_option_get_ignoregrps(void);
-void alpm_option_add_ignoregrp(const char *grp);
-void alpm_option_set_ignoregrps(alpm_list_t *ignoregrps);
+int alpm_option_add_ignoregrp(const char *grp);
+int alpm_option_set_ignoregrps(alpm_list_t *ignoregrps);
 int alpm_option_remove_ignoregrp(const char *grp);
 
 const char *alpm_option_get_arch(void);
-void alpm_option_set_arch(const char *arch);
+int alpm_option_set_arch(const char *arch);
 
 int alpm_option_get_usedelta(void);
-void alpm_option_set_usedelta(int usedelta);
+int alpm_option_set_usedelta(int usedelta);
 
 int alpm_option_get_checkspace(void);
-void alpm_option_set_checkspace(int checkspace);
+int alpm_option_set_checkspace(int checkspace);
 
 pmdb_t *alpm_option_get_localdb(void);
 alpm_list_t *alpm_option_get_syncdbs(void);
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index fd40f19..b55b02a 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -274,40 +274,32 @@ alpm_list_t SYMEXPORT *alpm_option_get_syncdbs()
 	return handle->dbs_sync;
 }
 
-void SYMEXPORT alpm_option_set_logcb(alpm_cb_log cb)
+int SYMEXPORT alpm_option_set_logcb(alpm_cb_log cb)
 {
-	if (handle == NULL) {
-		pm_errno = PM_ERR_HANDLE_NULL;
-		return;
-	}
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->logcb = cb;
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb)
+int SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb)
 {
-	if (handle == NULL) {
-		pm_errno = PM_ERR_HANDLE_NULL;
-		return;
-	}
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->dlcb = cb;
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_fetchcb(alpm_cb_fetch cb)
+int SYMEXPORT alpm_option_set_fetchcb(alpm_cb_fetch cb)
 {
-	if (handle == NULL) {
-		pm_errno = PM_ERR_HANDLE_NULL;
-		return;
-	}
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->fetchcb = cb;
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_totaldlcb(alpm_cb_totaldl cb)
+int SYMEXPORT alpm_option_set_totaldlcb(alpm_cb_totaldl cb)
 {
-	if (handle == NULL) {
-		pm_errno = PM_ERR_HANDLE_NULL;
-		return;
-	}
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->totaldlcb = cb;
+	return 0;
 }
 
 int SYMEXPORT alpm_option_set_root(const char *root)
@@ -420,11 +412,12 @@ int SYMEXPORT alpm_option_add_cachedir(const char *cachedir)
 	return 0;
 }
 
-void SYMEXPORT alpm_option_set_cachedirs(alpm_list_t *cachedirs)
+int SYMEXPORT alpm_option_set_cachedirs(alpm_list_t *cachedirs)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	if(handle->cachedirs) FREELIST(handle->cachedirs);
 	if(cachedirs) handle->cachedirs = cachedirs;
+	return 0;
 }
 
 int SYMEXPORT alpm_option_remove_cachedir(const char *cachedir)
@@ -495,23 +488,26 @@ int SYMEXPORT alpm_option_set_signaturedir(const char *signaturedir)
 	return 0;
 }
 
-void SYMEXPORT alpm_option_set_usesyslog(int usesyslog)
+int SYMEXPORT alpm_option_set_usesyslog(int usesyslog)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->usesyslog = usesyslog;
+	return 0;
 }
 
-void SYMEXPORT alpm_option_add_noupgrade(const char *pkg)
+int SYMEXPORT alpm_option_add_noupgrade(const char *pkg)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->noupgrade = alpm_list_add(handle->noupgrade, strdup(pkg));
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_noupgrades(alpm_list_t *noupgrade)
+int SYMEXPORT alpm_option_set_noupgrades(alpm_list_t *noupgrade)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	if(handle->noupgrade) FREELIST(handle->noupgrade);
 	if(noupgrade) handle->noupgrade = noupgrade;
+	return 0;
 }
 
 int SYMEXPORT alpm_option_remove_noupgrade(const char *pkg)
@@ -526,17 +522,19 @@ int SYMEXPORT alpm_option_remove_noupgrade(const char *pkg)
 	return 0;
 }
 
-void SYMEXPORT alpm_option_add_noextract(const char *pkg)
+int SYMEXPORT alpm_option_add_noextract(const char *pkg)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->noextract = alpm_list_add(handle->noextract, strdup(pkg));
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_noextracts(alpm_list_t *noextract)
+int SYMEXPORT alpm_option_set_noextracts(alpm_list_t *noextract)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	if(handle->noextract) FREELIST(handle->noextract);
 	if(noextract) handle->noextract = noextract;
+	return 0;
 }
 
 int SYMEXPORT alpm_option_remove_noextract(const char *pkg)
@@ -551,17 +549,19 @@ int SYMEXPORT alpm_option_remove_noextract(const char *pkg)
 	return 0;
 }
 
-void SYMEXPORT alpm_option_add_ignorepkg(const char *pkg)
+int SYMEXPORT alpm_option_add_ignorepkg(const char *pkg)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->ignorepkg = alpm_list_add(handle->ignorepkg, strdup(pkg));
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs)
+int SYMEXPORT alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	if(handle->ignorepkg) FREELIST(handle->ignorepkg);
 	if(ignorepkgs) handle->ignorepkg = ignorepkgs;
+	return 0;
 }
 
 int SYMEXPORT alpm_option_remove_ignorepkg(const char *pkg)
@@ -576,17 +576,19 @@ int SYMEXPORT alpm_option_remove_ignorepkg(const char *pkg)
 	return 0;
 }
 
-void SYMEXPORT alpm_option_add_ignoregrp(const char *grp)
+int SYMEXPORT alpm_option_add_ignoregrp(const char *grp)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->ignoregrp = alpm_list_add(handle->ignoregrp, strdup(grp));
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_ignoregrps(alpm_list_t *ignoregrps)
+int SYMEXPORT alpm_option_set_ignoregrps(alpm_list_t *ignoregrps)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	if(handle->ignoregrp) FREELIST(handle->ignoregrp);
 	if(ignoregrps) handle->ignoregrp = ignoregrps;
+	return 0;
 }
 
 int SYMEXPORT alpm_option_remove_ignoregrp(const char *grp)
@@ -601,23 +603,26 @@ int SYMEXPORT alpm_option_remove_ignoregrp(const char *grp)
 	return 0;
 }
 
-void SYMEXPORT alpm_option_set_arch(const char *arch)
+int SYMEXPORT alpm_option_set_arch(const char *arch)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	if(handle->arch) FREE(handle->arch);
 	if(arch) handle->arch = strdup(arch);
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_usedelta(int usedelta)
+int SYMEXPORT alpm_option_set_usedelta(int usedelta)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->usedelta = usedelta;
+	return 0;
 }
 
-void SYMEXPORT alpm_option_set_checkspace(int checkspace)
+int SYMEXPORT alpm_option_set_checkspace(int checkspace)
 {
-	ASSERT(handle != NULL, RET_ERR_VOID(PM_ERR_HANDLE_NULL));
+	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
 	handle->checkspace = checkspace;
+	return 0;
 }
 
 /* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 74659c5..c5c83d7 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -412,7 +412,7 @@ static void setlibpaths(void)
 
 #define check_optarg() if(!optarg) { return 1; }
 
-typedef void (*fn_add) (const char *s);
+typedef int (*fn_add) (const char *s);
 
 static int parsearg_util_addlist(fn_add fn)
 {
@@ -810,17 +810,19 @@ static int parseargs(int argc, char *argv[])
 }
 
 /* helper for being used with setrepeatingoption */
-static void option_add_holdpkg(const char *name) {
+static int option_add_holdpkg(const char *name) {
 	config->holdpkg = alpm_list_add(config->holdpkg, strdup(name));
+	return 0;
 }
 
 /* helper for being used with setrepeatingoption */
-static void option_add_syncfirst(const char *name) {
+static int option_add_syncfirst(const char *name) {
 	config->syncfirst = alpm_list_add(config->syncfirst, strdup(name));
+	return 0;
 }
 
 /* helper for being used with setrepeatingoption */
-static void option_add_cleanmethod(const char *value) {
+static int option_add_cleanmethod(const char *value) {
 	if (strcmp(value, "KeepInstalled") == 0) {
 		config->cleanmethod |= PM_CLEAN_KEEPINST;
 	} else if (strcmp(value, "KeepCurrent") == 0) {
@@ -829,6 +831,7 @@ static void option_add_cleanmethod(const char *value) {
 		pm_printf(PM_LOG_ERROR, _("invalid value for 'CleanMethod' : '%s'\n"),
 				value);
 	}
+	return 0;
 }
 
 /** Add repeating options such as NoExtract, NoUpgrade, etc to libalpm
@@ -839,7 +842,7 @@ static void option_add_cleanmethod(const char *value) {
  * @param optionfunc a function pointer to an alpm_option_add_* function
  */
 static void setrepeatingoption(char *ptr, const char *option,
-		void (*optionfunc)(const char*))
+		int (*optionfunc)(const char*))
 {
 	char *q;
 
-- 
1.7.4.4



More information about the pacman-dev mailing list