[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