From eed7ba92e849edbd5505baa2c1d4864d0490fa80 Mon Sep 17 00:00:00 2001 From: Xavier Chantry Date: Sun, 17 Oct 2010 11:18:01 +0200 Subject: pacman/remove: switch to new alpm_remove_pkg interface Signed-off-by: Xavier Chantry --- src/pacman/remove.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src/pacman/remove.c') diff --git a/src/pacman/remove.c b/src/pacman/remove.c index 82d1c384..fb02e242 100644 --- a/src/pacman/remove.c +++ b/src/pacman/remove.c @@ -31,6 +31,36 @@ #include "util.h" #include "conf.h" +static int remove_target(char *target) +{ + pmpkg_t *info; + pmdb_t *db_local = alpm_option_get_localdb(); + 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); + } + return(0); + } + + /* fallback to group */ + pmgrp_t *grp = alpm_db_readgrp(db_local, target); + if(grp == NULL) { + pm_fprintf(stderr, PM_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); + } + } + return(0); +} + /** * @brief Remove a specified list of packages. * @@ -62,8 +92,7 @@ int pacman_remove(alpm_list_t *targets) } else { targ = target; } - if(alpm_remove_target(targ) == -1) { - pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n", targ, alpm_strerrorlast()); + if(remove_target(targ) == -1) { retval = 1; goto cleanup; } -- cgit v1.2.3-24-g4f1b