diff options
author | Pierre <pierre@spotify.com> | 2012-04-02 04:16:28 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-04-07 18:16:58 +0200 |
commit | 0145604728360acaf56e6d50bc03e78bfab7585c (patch) | |
tree | 339770a8e0430086c48a13cd40358c567b1ed4d3 | |
parent | b5b9860a2e7f73b0445131a51006c8c95f1f1b91 (diff) | |
download | pacman-0145604728360acaf56e6d50bc03e78bfab7585c.tar.gz pacman-0145604728360acaf56e6d50bc03e78bfab7585c.tar.xz |
pacman: show groups once with -Sg
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 <pierre@spotify.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | src/pacman/sync.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 74e417c4..5165dca1 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -420,7 +420,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)) { @@ -456,10 +456,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; |