summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormorganamilo <morganamilo@gmail.com>2018-10-20 15:58:52 +0200
committerAndrew Gregory <andrew.gregory.8@gmail.com>2018-10-20 21:07:48 +0200
commit8c9046e6042fd23bf6a1bb204062fc644c322689 (patch)
treec13d107f10244d5579293dbf4e70d4a704f4f48b
parentafb9c0140fd6949ede64cc1a304e9349772fca04 (diff)
downloadpacman-8c9046e6042fd23bf6a1bb204062fc644c322689.tar.gz
pacman-8c9046e6042fd23bf6a1bb204062fc644c322689.tar.xz
pacman: don't error when a group exists but all packages are ignored
Currently when attempting to sync a group where all packages are ignored, either by ignorepkg, ignoregroup or --needed, pacman will error with "target not found". Instead, if a group has no packages check if the group exists before throwing an error. Signed-off-by: morganamilo <morganamilo@gmail.com>
-rw-r--r--src/pacman/sync.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index ef8faedf..57677a42 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -535,6 +535,20 @@ static int process_pkg(alpm_pkg_t *pkg)
return 0;
}
+static int group_exists(alpm_list_t *dbs, const char *name)
+{
+ alpm_list_t *i;
+ for(i = dbs; i; i = i->next) {
+ alpm_db_t *db = i->data;
+
+ if(alpm_db_get_group(db, name)) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
static int process_group(alpm_list_t *dbs, const char *group, int error)
{
int ret = 0;
@@ -543,6 +557,10 @@ static int process_group(alpm_list_t *dbs, const char *group, int error)
int count = alpm_list_count(pkgs);
if(!count) {
+ if(group_exists(dbs, group)) {
+ return 0;
+ }
+
pm_printf(ALPM_LOG_ERROR, _("target not found: %s\n"), group);
return 1;
}