[pacman-dev] [PATCH] Display optdep install status in package query output
Allan McRae
allan at archlinux.org
Sat Aug 11 07:52:08 EDT 2012
On 11/08/12 21:48, Allan McRae wrote:
> Indicate which optional dependencies are installed when viewing
> local package information (-Qi).
>
> Signed-off-by: Allan McRae <allan at 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"
Obviously no need for that include. Removed on my working branch.
> #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);
> }
>
More information about the pacman-dev
mailing list