[pacman-dev] alpm_list_remove_dups: was - [PATCH] Sort and avoid duplicates in -Sii output

Allan McRae allan at archlinux.org
Wed Mar 24 07:09:16 CET 2010


On 24/03/10 16:00, Allan McRae wrote:
> Signed-off-by: Allan McRae<allan at archlinux.org>
> ---
>   lib/libalpm/package.c |    5 ++++-
>   1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
> index f1682cb..ed6d71d 100644
> --- a/lib/libalpm/package.c
> +++ b/lib/libalpm/package.c
> @@ -565,7 +565,9 @@ static void find_requiredby(pmpkg_t *pkg, pmdb_t *db, alpm_list_t **reqs)
>   		pmpkg_t *cachepkg = i->data;
>   		if(_alpm_dep_edge(cachepkg, pkg)) {
>   			const char *cachepkgname = cachepkg->name;
> -			*reqs = alpm_list_add(*reqs, strdup(cachepkgname));
> +			if(alpm_list_find_str(*reqs, cachepkgname) == 0) {
> +				*reqs = alpm_list_add(*reqs, strdup(cachepkgname));
> +			}
>   		}
>   	}
>   }
> @@ -595,6 +597,7 @@ alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
>   			for(i = handle->dbs_sync; i; i = i->next) {
>   				db = i->data;
>   				find_requiredby(pkg, db,&reqs);
> +				reqs = alpm_list_msort(reqs, alpm_list_count(reqs), _alpm_str_cmp);
>   			}
>   		}
>   	}


I was going to use alpm_list_remove_dups instead of testing for a 
strings presence before adding it but I find that function quite 
impractical...

I wonder if any other frontend is using it and whether we could change 
it to actually removing the duplicates from a list.  i.e. return the 
same list with duplicates removed and their data freed.  Or am I missing 
some usage case where the current functionality is useful?

Allan


More information about the pacman-dev mailing list