summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Chantry <chantry.xavier@gmail.com>2010-10-17 11:14:43 +0200
committerXavier Chantry <chantry.xavier@gmail.com>2011-01-29 19:33:16 +0100
commit953e0d48d7e6e3703bdaccef4ec2a8bbdbe460ed (patch)
tree88ff25aa997b701f95dcebc4e2bf2af2b2d4131b
parentf2fcf7eeb10dafec06d5d7d853b681f2e9fde45a (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.h1
-rw-r--r--lib/libalpm/remove.c26
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;