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@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