diff options
author | Xavier Chantry <chantry.xavier@gmail.com> | 2010-10-17 11:14:43 +0200 |
---|---|---|
committer | Xavier Chantry <chantry.xavier@gmail.com> | 2011-01-29 19:33:16 +0100 |
commit | 953e0d48d7e6e3703bdaccef4ec2a8bbdbe460ed (patch) | |
tree | 88ff25aa997b701f95dcebc4e2bf2af2b2d4131b | |
parent | f2fcf7eeb10dafec06d5d7d853b681f2e9fde45a (diff) |
alpm: new alpm_remove_pkg interface
For consistency with alpm_add_pkg.
The new recommended interface is alpm_add_pkg / alpm_remove_pkg, all
others interfaces are deprecated.
Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
-rw-r--r-- | lib/libalpm/alpm.h | 1 | ||||
-rw-r--r-- | lib/libalpm/remove.c | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 606610e7..c76cd0f8 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -425,6 +425,7 @@ int alpm_add_target(const char *target); int alpm_remove_target(const char *target); int alpm_add_pkg(pmpkg_t *pkg); +int alpm_remove_pkg(pmpkg_t *pkg); /* * Dependencies and conflicts diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index 5fba0b07..b2ed220a 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -46,6 +46,32 @@ #include "handle.h" #include "alpm.h" +int SYMEXPORT alpm_remove_pkg(pmpkg_t *pkg) +{ + pmtrans_t *trans; + const char *pkgname; + + ALPM_LOG_FUNC; + + /* Sanity checks */ + ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1)); + ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1)); + trans = handle->trans; + ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); + ASSERT(trans->state == STATE_INITIALIZED, + RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1)); + + pkgname = alpm_pkg_get_name(pkg); + + if(_alpm_pkg_find(trans->remove, pkgname)) { + RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1); + } + + _alpm_log(PM_LOG_DEBUG, "adding %s in the target list\n", pkgname); + trans->remove = alpm_list_add(trans->remove, _alpm_pkg_dup(pkg)); + return(0); +} + int SYMEXPORT alpm_remove_target(const char *target) { pmpkg_t *info; |