summaryrefslogtreecommitdiffstats
path: root/src/pacman/remove.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pacman/remove.c')
-rw-r--r--src/pacman/remove.c83
1 files changed, 43 insertions, 40 deletions
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index fb02e242..f0ac04e2 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -31,34 +31,36 @@
#include "util.h"
#include "conf.h"
-static int remove_target(char *target)
+static int remove_target(const char *target)
{
- pmpkg_t *info;
- pmdb_t *db_local = alpm_option_get_localdb();
+ alpm_pkg_t *info;
+ alpm_db_t *db_local = alpm_option_get_localdb(config->handle);
alpm_list_t *p;
if((info = alpm_db_get_pkg(db_local, target)) != NULL) {
- if(alpm_remove_pkg(info) == -1) {
- pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n", target, alpm_strerrorlast());
- return(-1);
+ if(alpm_remove_pkg(config->handle, info) == -1) {
+ pm_fprintf(stderr, ALPM_LOG_ERROR, "'%s': %s\n", target,
+ alpm_strerror(alpm_errno(config->handle)));
+ return -1;
}
- return(0);
+ return 0;
}
/* fallback to group */
- pmgrp_t *grp = alpm_db_readgrp(db_local, target);
+ alpm_group_t *grp = alpm_db_readgroup(db_local, target);
if(grp == NULL) {
- pm_fprintf(stderr, PM_LOG_ERROR, "'%s': target not found\n", target);
- return(-1);
+ pm_fprintf(stderr, ALPM_LOG_ERROR, "'%s': target not found\n", target);
+ return -1;
}
- for(p = alpm_grp_get_pkgs(grp); p; p = alpm_list_next(p)) {
- pmpkg_t *pkg = alpm_list_getdata(p);
- if(alpm_remove_pkg(pkg) == -1) {
- pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n", target, alpm_strerrorlast());
- return(-1);
+ for(p = grp->packages; p; p = alpm_list_next(p)) {
+ alpm_pkg_t *pkg = alpm_list_getdata(p);
+ if(alpm_remove_pkg(config->handle, pkg) == -1) {
+ pm_fprintf(stderr, ALPM_LOG_ERROR, "'%s': %s\n", target,
+ alpm_strerror(alpm_errno(config->handle)));
+ return -1;
}
}
- return(0);
+ return 0;
}
/**
@@ -74,13 +76,13 @@ int pacman_remove(alpm_list_t *targets)
alpm_list_t *i, *data = NULL;
if(targets == NULL) {
- pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for help)\n"));
- return(1);
+ pm_printf(ALPM_LOG_ERROR, _("no targets specified (use -h for help)\n"));
+ return 1;
}
/* Step 0: create a new transaction */
- if(trans_init(config->flags) == -1) {
- return(1);
+ if(trans_init(config->flags, 0) == -1) {
+ return 1;
}
/* Step 1: add targets to the created transaction */
@@ -99,40 +101,39 @@ int pacman_remove(alpm_list_t *targets)
}
/* Step 2: prepare the transaction based on its type, targets and flags */
- if(alpm_trans_prepare(&data) == -1) {
- pm_fprintf(stderr, PM_LOG_ERROR, _("failed to prepare transaction (%s)\n"),
- alpm_strerrorlast());
- switch(pm_errno) {
- case PM_ERR_PKG_INVALID_ARCH:
+ if(alpm_trans_prepare(config->handle, &data) == -1) {
+ enum _alpm_errno_t err = alpm_errno(config->handle);
+ pm_fprintf(stderr, ALPM_LOG_ERROR, _("failed to prepare transaction (%s)\n"),
+ alpm_strerror(err));
+ switch(err) {
+ case ALPM_ERR_PKG_INVALID_ARCH:
for(i = data; i; i = alpm_list_next(i)) {
char *pkg = alpm_list_getdata(i);
printf(_(":: package %s does not have a valid architecture\n"), pkg);
}
break;
- case PM_ERR_UNSATISFIED_DEPS:
+ case ALPM_ERR_UNSATISFIED_DEPS:
for(i = data; i; i = alpm_list_next(i)) {
- pmdepmissing_t *miss = alpm_list_getdata(i);
- pmdepend_t *dep = alpm_miss_get_dep(miss);
- char *depstring = alpm_dep_compute_string(dep);
- printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
- depstring);
+ alpm_depmissing_t *miss = alpm_list_getdata(i);
+ char *depstring = alpm_dep_compute_string(miss->depend);
+ printf(_(":: %s: requires %s\n"), miss->target, depstring);
free(depstring);
}
- FREELIST(data);
break;
default:
break;
}
+ FREELIST(data);
retval = 1;
goto cleanup;
}
/* Search for holdpkg in target list */
int holdpkg = 0;
- for(i = alpm_trans_get_remove(); i; i = alpm_list_next(i)) {
- pmpkg_t *pkg = alpm_list_getdata(i);
+ for(i = alpm_trans_get_remove(config->handle); i; i = alpm_list_next(i)) {
+ alpm_pkg_t *pkg = alpm_list_getdata(i);
if(alpm_list_find_str(config->holdpkg, alpm_pkg_get_name(pkg))) {
- pm_printf(PM_LOG_WARNING, _("%s is designated as a HoldPkg.\n"),
+ pm_printf(ALPM_LOG_WARNING, _("%s is designated as a HoldPkg.\n"),
alpm_pkg_get_name(pkg));
holdpkg = 1;
}
@@ -143,7 +144,7 @@ int pacman_remove(alpm_list_t *targets)
}
/* Step 3: actually perform the removal */
- alpm_list_t *pkglist = alpm_trans_get_remove();
+ alpm_list_t *pkglist = alpm_trans_get_remove(config->handle);
if(pkglist == NULL) {
printf(_(" there is nothing to do\n"));
goto cleanup; /* we are done */
@@ -162,18 +163,20 @@ int pacman_remove(alpm_list_t *targets)
goto cleanup;
}
- if(alpm_trans_commit(NULL) == -1) {
- pm_fprintf(stderr, PM_LOG_ERROR, _("failed to commit transaction (%s)\n"),
- alpm_strerrorlast());
+ if(alpm_trans_commit(config->handle, &data) == -1) {
+ pm_fprintf(stderr, ALPM_LOG_ERROR, _("failed to commit transaction (%s)\n"),
+ alpm_strerror(alpm_errno(config->handle)));
retval = 1;
}
+ FREELIST(data);
+
/* Step 4: release transaction resources */
cleanup:
if(trans_release() == -1) {
retval = 1;
}
- return(retval);
+ return retval;
}
/* vim: set ts=2 sw=2 noet: */