[pacman-dev] [PATCH 1/2] print installed packages

Xavier Chantry shiningxc at gmail.com
Mon Sep 7 18:43:04 EDT 2009


Signed-off-by: Xavier Chantry <shiningxc at gmail.com>
---
 src/pacman/sync.c |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 4f101f9..896d028 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -274,6 +274,21 @@ static int sync_synctree(int level, alpm_list_t *syncs)
 	return(success > 0);
 }
 
+static void print_installed(pmpkg_t *pkg)
+{
+	const char *pkgname = alpm_pkg_get_name(pkg);
+	const char *pkgver = alpm_pkg_get_version(pkg);
+	pmpkg_t *lpkg = alpm_db_get_pkg(db_local, pkgname);
+	if(lpkg) {
+		const char *lpkgver = alpm_pkg_get_version(lpkg);
+		if(strcmp(lpkgver,pkgver) == 0) {
+			printf(" [%s]", _("installed"));
+		} else {
+			printf(_(" [%s: %s]"), _("installed"), lpkgver);
+		}
+	}
+}
+
 /* search the sync dbs for a matching package */
 static int sync_search(alpm_list_t *syncs, alpm_list_t *targets)
 {
@@ -330,6 +345,8 @@ static int sync_search(alpm_list_t *syncs, alpm_list_t *targets)
 					printf(")");
 				}
 
+				print_installed(pkg);
+
 				/* we need a newline and initial indent first */
 				printf("\n    ");
 				indentprint(alpm_pkg_get_desc(pkg), 4);
@@ -514,9 +531,12 @@ static int sync_list(alpm_list_t *syncs, alpm_list_t *targets)
 
 		for(j = alpm_db_get_pkgcache(db); j; j = alpm_list_next(j)) {
 			pmpkg_t *pkg = alpm_list_getdata(j);
+
 			if (!config->quiet) {
-				printf("%s %s %s\n", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
-							 alpm_pkg_get_version(pkg));
+				printf("%s %s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
+						alpm_pkg_get_version(pkg));
+				print_installed(pkg);
+				printf("\n");
 			} else {
 				printf("%s\n", alpm_pkg_get_name(pkg));
 			}
-- 
1.6.4.2



More information about the pacman-dev mailing list