[pacman-dev] [PATCH 09/14] Show list of optrequires with -Qtdn

Benedikt Morbach benedikt.morbach at googlemail.com
Wed Nov 23 10:51:23 EST 2011


Signed-off-by: Benedikt Morbach <benedikt.morbach at googlemail.com>
---
 src/pacman/query.c            |   11 ++++++++++-
 src/pacman/util.c             |   27 ++++++++++++++++++++-------
 src/pacman/util.h             |    1 +
 test/pacman/tests/query022.py |   14 ++++++++++++++
 4 files changed, 45 insertions(+), 8 deletions(-)
 create mode 100644 test/pacman/tests/query022.py

diff --git a/src/pacman/query.c b/src/pacman/query.c
index fbff341..0017918 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -488,7 +488,16 @@ static int display(alpm_pkg_t *pkg)
 	if(!config->op_q_info && !config->op_q_list
 			&& !config->op_q_changelog && !config->op_q_check) {
 		if(!config->quiet) {
-			printf("%s %s\n", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+			printf("%s %s", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
+
+			alpm_list_t *optrequires;
+			if(config->op_q_unrequired && config->op_q_optdeps &&
+				(optrequires = alpm_pkg_compute_requiredby(pkg, 1)) != NULL) {
+				list_display_extra(_(" (optdepend for:"), optrequires, ", ", ")");
+				FREELIST(optrequires);
+			} else {
+				printf("\n");
+			}
 		} else {
 			printf("%s\n", alpm_pkg_get_name(pkg));
 		}
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 1f89663..c54975e 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -657,16 +657,24 @@ int table_display(const char *title, const alpm_list_t *header,
 
 void list_display(const char *title, const alpm_list_t *list)
 {
+	list_display_extra(title, list, NULL, NULL);
+}
+
+void list_display_extra(const char *title, const alpm_list_t *list,
+                        const char *delim, const char *after)
+{
 	const alpm_list_t *i;
 	size_t len = 0;
 
+	delim = delim ? delim : "  ";
+
 	if(title) {
 		len = string_length(title) + 1;
 		printf("%s ", title);
 	}
 
 	if(!list) {
-		printf("%s\n", _("None"));
+		printf("%s", _("None"));
 	} else {
 		const unsigned short maxcols = getcols();
 		size_t cols = len;
@@ -680,20 +688,25 @@ void list_display(const char *title, const alpm_list_t *list)
 			if(maxcols > len && cols + s + 2 >= maxcols) {
 				size_t j;
 				cols = len;
-				printf("\n");
+				putchar('\n');
 				for (j = 1; j <= len; j++) {
-					printf(" ");
+					putchar(' ');
 				}
 			} else if(cols != len) {
-				/* 2 spaces are added if this is not the first element on a line. */
-				printf("  ");
-				cols += 2;
+				/* delimiter is added if this is not the first element on a line. */
+				fputs(delim, stdout);
+				cols += strlen(delim);
 			}
 			fputs(str, stdout);
 			cols += s;
 		}
-		putchar('\n');
 	}
+
+	if(after) {
+		fputs(after, stdout);
+	}
+
+	putchar('\n');
 }
 
 void list_display_linebreak(const char *title, const alpm_list_t *list)
diff --git a/src/pacman/util.h b/src/pacman/util.h
index ca33752..ffff4b5 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -63,6 +63,7 @@ void string_display(const char *title, const char *string);
 double humanize_size(off_t bytes, const char target_unit, const char **label);
 int table_display(const char *title, const alpm_list_t *header, const alpm_list_t *rows);
 void list_display(const char *title, const alpm_list_t *list);
+void list_display_extra(const char *title, const alpm_list_t *list, const char *delim, const char *after);
 void list_display_linebreak(const char *title, const alpm_list_t *list);
 void signature_display(const char *title, alpm_siglist_t *siglist);
 void display_targets(void);
diff --git a/test/pacman/tests/query022.py b/test/pacman/tests/query022.py
new file mode 100644
index 0000000..f5e3458
--- /dev/null
+++ b/test/pacman/tests/query022.py
@@ -0,0 +1,14 @@
+self.description = "Query unneeded deps (installed optdeps not required)"
+
+pkg = pmpkg("dummy")
+pkg.optdepends = ["dep: for foobar"]
+self.addpkg2db("local", pkg)
+
+dep = pmpkg("dep")
+self.addpkg2db("local", dep)
+dep.reason = 1
+
+self.args = "-Qtdn"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=^dep.*dummy")
-- 
1.7.7.3



More information about the pacman-dev mailing list