From de7ccedbe7477ec520bb035b71e9fb97ebd028c4 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Wed, 19 Jun 2013 01:23:18 -0400 Subject: query_group: allow package filters Relocated query_group() to allow calling filter(). Fixes FS#19716 Signed-off-by: Andrew Gregory Signed-off-by: Allan McRae --- src/pacman/query.c | 88 +++++++++++++++++++++++++++++------------------------- 1 file changed, 47 insertions(+), 41 deletions(-) (limited to 'src/pacman/query.c') diff --git a/src/pacman/query.c b/src/pacman/query.c index e88b393b..25a3c5d2 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); @@ -392,6 +351,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; -- cgit v1.2.3-54-g00ecf