Only displays groups that haven't appeared yet..
Previously 'pacman -Sg' iterated over syncs, printed every group.

This change does not affect '-Sgg' which still orders by sync first.

To reproduce, on a current Arch Linux with [extra] and [community]:
$ pacman -Sg|sort|uniq -c|sort -n
[...]
      1 xorg-fonts
      2 vim-plugins
      2 xfce4-goodies

Signed-off-by: Pierre <[email protected]>
---
 src/pacman/sync.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index d782a94..7d73cc4 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -418,7 +418,7 @@ static int sync_search(alpm_list_t *syncs, alpm_list_t 
*targets)
 
 static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
 {
-       alpm_list_t *i, *j, *k;
+       alpm_list_t *i, *j, *k, *s = NULL;
 
        if(targets) {
                for(i = targets; i; i = alpm_list_next(i)) {
@@ -454,10 +454,14 @@ static int sync_group(int level, alpm_list_t *syncs, 
alpm_list_t *targets)
                                        }
                                } else {
                                        /* print grp names only, no package 
names */
-                                       printf("%s\n", grp->name);
+                                       if(!alpm_list_find_str (s, grp->name)) {
+                                               s = alpm_list_add (s, 
grp->name);
+                                               printf("%s\n", grp->name);
+                                       }
                                }
                        }
                }
+               alpm_list_free(s);
        }
 
        return 0;
-- 
1.7.9.5


Reply via email to