From 63a2874fe4db43ab1b0299163b1ceb82c4d8e00b Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Sat, 11 Aug 2012 21:42:37 +1000 Subject: Display optdep install status in package query output Indicate which optional dependencies are installed when viewing local package information (-Qi). Signed-off-by: Allan McRae --- src/pacman/package.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/pacman/package.c') diff --git a/src/pacman/package.c b/src/pacman/package.c index 77d58e19..ce7de7f3 100644 --- a/src/pacman/package.c +++ b/src/pacman/package.c @@ -54,15 +54,22 @@ static void deplist_display(const char *title, /** Turn a optdepends list into a text list. * @param optdeps a list with items of type alpm_depend_t */ -static void optdeplist_display(const char *title, - alpm_list_t *optdeps, unsigned short cols) +static void optdeplist_display(alpm_pkg_t *pkg, unsigned short cols) { alpm_list_t *i, *text = NULL; - for(i = optdeps; i; i = alpm_list_next(i)) { + for(i = alpm_pkg_get_optdepends(pkg); i; i = alpm_list_next(i)) { alpm_depend_t *optdep = i->data; - text = alpm_list_add(text, alpm_dep_compute_string(optdep)); + char *depstring = alpm_dep_compute_string(optdep); + if(alpm_pkg_get_origin(pkg) == ALPM_PKG_FROM_LOCALDB) { + if(alpm_db_get_pkg(alpm_get_localdb(config->handle), optdep->name)) { + const char *installed = _(" [installed]"); + depstring = realloc(depstring, strlen(depstring) + strlen(installed) + 1); + strcpy(depstring + strlen(depstring), installed); + } + } + text = alpm_list_add(text, depstring); } - list_display_linebreak(title, text, cols); + list_display_linebreak(_("Optional Deps :"), text, cols); FREELIST(text); } @@ -148,7 +155,8 @@ void dump_pkg_full(alpm_pkg_t *pkg, int extra) list_display(_("Groups :"), alpm_pkg_get_groups(pkg), cols); deplist_display(_("Provides :"), alpm_pkg_get_provides(pkg), cols); deplist_display(_("Depends On :"), alpm_pkg_get_depends(pkg), cols); - optdeplist_display(_("Optional Deps :"), alpm_pkg_get_optdepends(pkg), cols); + optdeplist_display(pkg, cols); + if(extra || from == ALPM_PKG_FROM_LOCALDB) { list_display(_("Required By :"), requiredby, cols); } -- cgit v1.2.3-24-g4f1b