On 16/07/12 08:33, Clemens Buchacher wrote:
If an upgraded package version contains new optdeps, the user is notified of that. If the new optdep is already installed, that information is redundant.
Instead, do not output new optdeps if they are already installed.
Signed-off-by: Clemens Buchacher <drizzd@aon.at> ---
FYI - there is a large patchset fo optdepends that needs tidied up with includes this functionality: https://github.com/moben/pacman/commit/bd6c1294 I would also like to see this filter out things that are about to be installed...
src/pacman/util.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/src/pacman/util.c b/src/pacman/util.c index 7f7f6a7..e774fa8 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -1192,6 +1192,20 @@ static int depend_cmp(const void *d1, const void *d2) return ret; }
+static alpm_list_t *filter_out_installed(alpm_list_t *list) +{ + alpm_list_t *i, *not_installed = NULL; + alpm_db_t *db_local = alpm_get_localdb(config->handle); + + for(i = list; i; i = alpm_list_next(i)) { + if(!alpm_db_get_pkg(db_local, i->data)) + not_installed = alpm_list_add(not_installed, i->data); + } + alpm_list_free(list); + + return not_installed; +} + void display_new_optdepends(alpm_pkg_t *oldpkg, alpm_pkg_t *newpkg) { alpm_list_t *i, *old, *new, *optdeps, *optstrings = NULL; @@ -1206,6 +1220,8 @@ void display_new_optdepends(alpm_pkg_t *oldpkg, alpm_pkg_t *newpkg) optstrings = alpm_list_add(optstrings, alpm_dep_compute_string(optdep)); }
+ optstrings = filter_out_installed(optstrings); + if(optstrings) { printf(_("New optional dependencies for %s\n"), alpm_pkg_get_name(newpkg)); unsigned short cols = getcols(fileno(stdout));