Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   ArchLinux Pacman Development (http://www.linux-archive.org/archlinux-pacman-development/)
-   -   Display optdep install status in package query output (http://www.linux-archive.org/archlinux-pacman-development/692933-display-optdep-install-status-package-query-output.html)

Allan McRae 08-11-2012 11:48 AM

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 <allan@archlinux.org>
---

Example output:

> ./src/pacman/pacman -Qi git
Name : git
...
Optional Deps : tk: gitk and git gui [installed]
perl-libwww: git svn
perl-term-readkey: git svn
perl-mime-tools: git send-email
perl-net-smtp-ssl: git send-email TLS support
perl-authen-sasl: git send-email TLS support
python2: various helper scripts [installed]
subversion: git svn [installed]
cvsps: git cvsimport


src/pacman/package.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/pacman/package.c b/src/pacman/package.c
index 77d58e1..3556a81 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -33,6 +33,7 @@
#include "package.h"
#include "util.h"
#include "conf.h"
+#include "db.h"

#define CLBUF_SIZE 4096

@@ -54,15 +55,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 +156,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);
}
--
1.7.11.4


All times are GMT. The time now is 08:26 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.