diff options
Diffstat (limited to 'src/pacman/remove.c')
-rw-r--r-- | src/pacman/remove.c | 83 |
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: */ |