[pacman-dev] [PATCH] query_group: allow package filters

Andrew Gregory andrew.gregory.8 at gmail.com
Wed Jun 19 01:23:18 EDT 2013


Relocated query_group() to allow calling filter().

Fixes FS#19716

Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---

The only actual changes are the two added:
 if(!filter(...)) {
 	continue;
 }

 src/pacman/query.c | 88 +++++++++++++++++++++++++++++-------------------------
 1 file changed, 47 insertions(+), 41 deletions(-)

diff --git a/src/pacman/query.c b/src/pacman/query.c
index f5862a2..4f5d80e 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -257,47 +257,6 @@ static int query_search(alpm_list_t *targets)
 	return dump_pkg_search(db_local, targets, 0);
 }
 
-static int query_group(alpm_list_t *targets)
-{
-	alpm_list_t *i, *j;
-	const char *grpname = NULL;
-	int ret = 0;
-	alpm_db_t *db_local = alpm_get_localdb(config->handle);
-
-	if(targets == NULL) {
-		for(j = alpm_db_get_groupcache(db_local); j; j = alpm_list_next(j)) {
-			alpm_group_t *grp = j->data;
-			const alpm_list_t *p;
-
-			for(p = grp->packages; p; p = alpm_list_next(p)) {
-				alpm_pkg_t *pkg = p->data;
-				printf("%s %s\n", grp->name, alpm_pkg_get_name(pkg));
-			}
-		}
-	} else {
-		for(i = targets; i; i = alpm_list_next(i)) {
-			alpm_group_t *grp;
-			grpname = i->data;
-			grp = alpm_db_get_group(db_local, grpname);
-			if(grp) {
-				const alpm_list_t *p;
-				for(p = grp->packages; p; p = alpm_list_next(p)) {
-					if(!config->quiet) {
-						printf("%s %s\n", grpname,
-								alpm_pkg_get_name(p->data));
-					} else {
-						printf("%s\n", alpm_pkg_get_name(p->data));
-					}
-				}
-			} else {
-				pm_printf(ALPM_LOG_ERROR, _("group '%s' was not found\n"), grpname);
-				ret++;
-			}
-		}
-	}
-	return ret;
-}
-
 static unsigned short pkg_get_locality(alpm_pkg_t *pkg)
 {
 	const char *pkgname = alpm_pkg_get_name(pkg);
@@ -387,6 +346,53 @@ static int display(alpm_pkg_t *pkg)
 	return ret;
 }
 
+static int query_group(alpm_list_t *targets)
+{
+	alpm_list_t *i, *j;
+	const char *grpname = NULL;
+	int ret = 0;
+	alpm_db_t *db_local = alpm_get_localdb(config->handle);
+
+	if(targets == NULL) {
+		for(j = alpm_db_get_groupcache(db_local); j; j = alpm_list_next(j)) {
+			alpm_group_t *grp = j->data;
+			const alpm_list_t *p;
+
+			for(p = grp->packages; p; p = alpm_list_next(p)) {
+				alpm_pkg_t *pkg = p->data;
+				if(!filter(pkg)) {
+					continue;
+				}
+				printf("%s %s\n", grp->name, alpm_pkg_get_name(pkg));
+			}
+		}
+	} else {
+		for(i = targets; i; i = alpm_list_next(i)) {
+			alpm_group_t *grp;
+			grpname = i->data;
+			grp = alpm_db_get_group(db_local, grpname);
+			if(grp) {
+				const alpm_list_t *p;
+				for(p = grp->packages; p; p = alpm_list_next(p)) {
+					if(!filter(p->data)) {
+						continue;
+					}
+					if(!config->quiet) {
+						printf("%s %s\n", grpname,
+								alpm_pkg_get_name(p->data));
+					} else {
+						printf("%s\n", alpm_pkg_get_name(p->data));
+					}
+				}
+			} else {
+				pm_printf(ALPM_LOG_ERROR, _("group '%s' was not found\n"), grpname);
+				ret++;
+			}
+		}
+	}
+	return ret;
+}
+
 int pacman_query(alpm_list_t *targets)
 {
 	int ret = 0;
-- 
1.8.3.1



More information about the pacman-dev mailing list