summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pacman/remove.c33
-rw-r--r--src/pacman/sync.c3
2 files changed, 32 insertions, 4 deletions
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;
}
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index deda77d4..63e5766e 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -636,8 +636,7 @@ static int process_group(alpm_list_t *dbs, char *group)
printf(_(":: There are %d members in group %s:\n"), count,
group);
select_display(pkgs);
- select_question(count,
- _("Which ones do you want to install?"));
+ select_question(count);
char *array = malloc(count);
memset(array, 1, count);
int n = 0;