diff options
Diffstat (limited to 'lib/libalpm')
| -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;  | 
