This patch adds "[installed]" prefix to already installed optional dependency.

Signed-off-by: Arokux [email protected]
---
 src/pacman/util.c |   43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/src/pacman/util.c b/src/pacman/util.c
index a5242ae..d0a049e 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -1189,19 +1189,40 @@ static int depend_cmp(const void *d1, const void *d2)
        return ret;
 }

+alpm_list_t *optdeps_to_strings(alpm_list_t *optdeps)
+{
+       alpm_list_t *i, *optstrings = NULL;
+  alpm_db_t *localdb = alpm_get_localdb(config->handle);
+
+       /* turn optdepends list into a text list */
+       for(i = optdeps; i; i = alpm_list_next(i)) {
+               alpm_depend_t *optdep = i->data;
+               char *optdepstring = alpm_dep_compute_string(optdep);
+
+               if(alpm_find_satisfier(alpm_db_get_pkgcache(localdb), 
optdepstring)) {
+                       char *optdepstring_in;
+                       pm_asprintf(&optdepstring_in, _("[installed] %s"), 
optdepstring);
+                       free(optdepstring);
+
+                       optdepstring = optdepstring_in;
+                       optdepstring_in = NULL;
+               }
+
+               optstrings = alpm_list_add(optstrings, optdepstring);   
+       }
+
+       return optstrings;
+}
+
 void display_new_optdepends(alpm_pkg_t *oldpkg, alpm_pkg_t *newpkg)
 {
-       alpm_list_t *i, *old, *new, *optdeps, *optstrings = NULL;
+       alpm_list_t *old, *new, *optdeps, *optstrings = NULL;

        old = alpm_pkg_get_optdepends(oldpkg);
        new = alpm_pkg_get_optdepends(newpkg);
        optdeps = alpm_list_diff(new, old, depend_cmp);

-       /* turn optdepends list into a text list */
-       for(i = optdeps; i; i = alpm_list_next(i)) {
-               alpm_depend_t *optdep = i->data;
-               optstrings = alpm_list_add(optstrings, 
alpm_dep_compute_string(optdep));
-       }
+       optstrings = optdeps_to_strings(optdeps);

        if(optstrings) {
                printf(_("New optional dependencies for %s\n"), 
alpm_pkg_get_name(newpkg));
@@ -1214,15 +1235,9 @@ void display_new_optdepends(alpm_pkg_t *oldpkg,
alpm_pkg_t *newpkg)

 void display_optdepends(alpm_pkg_t *pkg)
 {
-       alpm_list_t *i, *optdeps, *optstrings = NULL;
+       alpm_list_t *optstrings = NULL;

-       optdeps = alpm_pkg_get_optdepends(pkg);
-
-       /* turn optdepends list into a text list */
-       for(i = optdeps; i; i = alpm_list_next(i)) {
-               alpm_depend_t *optdep = i->data;
-               optstrings = alpm_list_add(optstrings, 
alpm_dep_compute_string(optdep));
-       }
+       optstrings = optdeps_to_strings(alpm_pkg_get_optdepends(pkg));

        if(optstrings) {
                printf(_("Optional dependencies for %s\n"), 
alpm_pkg_get_name(pkg));

Reply via email to