[pacman-dev] [PATCH] Move the the description parsing logic to string_display()

Nagy Gabor ngaba at bibl.u-szeged.hu
Thu Jul 31 07:45:20 EDT 2008


From 0c25a17fb3ecabe397e9acb6bc7818395ed17756 Mon Sep 17 00:00:00 2001
From: Nagy Gabor <ngaba at bibl.u-szeged.hu>
Date: Thu, 31 Jul 2008 13:38:30 +0200
Subject: [PATCH] Move the the description parsing logic to string_display()

So dump_pkg_full will indent all strings correctly.

Signed-off-by: Nagy Gabor <ngaba at bibl.u-szeged.hu>
---
 src/pacman/package.c |   18 ++----------------
 src/pacman/util.c    |   13 +++++++++++--
 2 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/src/pacman/package.c b/src/pacman/package.c
index 0680037..87ffd98 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -44,13 +44,11 @@
  */
 void dump_pkg_full(pmpkg_t *pkg, int level)
 {
-	const char *reason, *descheader;
+	const char *reason;
 	time_t bdate, idate;
 	char bdatestr[50] = "", idatestr[50] = "";
 	const alpm_list_t *i;
 	alpm_list_t *requiredby = NULL, *depstrings = NULL;
-	wchar_t *wcstr;
-	int len;
 
 	if(pkg == NULL) {
 		return;
@@ -132,19 +130,7 @@ void dump_pkg_full(pmpkg_t *pkg, int level)
 	if(level < 0) {
 		string_display(_("MD5 Sum        :"), alpm_pkg_get_md5sum(pkg));
 	}
-
-	/* printed using a variable to make i18n safe */
-	descheader = _("Description    : ");
-	/* len goes from # bytes -> # chars -> # cols */
-	len = strlen(descheader) + 1;
-	wcstr = calloc(len, sizeof(wchar_t));
-	len = mbstowcs(wcstr, descheader, len);
-	len = wcswidth(wcstr, len);
-	free(wcstr);
-	/* we can finally print the darn thing */
-	printf("%s", descheader);
-	indentprint(alpm_pkg_get_desc(pkg), len);
-	printf("\n\n");
+	string_display(_("Description    :"), alpm_pkg_get_desc(pkg));
 
 	/* Print additional package info if info flag passed more than once */
 	if(level > 1) {
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 82c460b..c7cdb78 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -425,12 +425,21 @@ alpm_list_t *strsplit(const char *str, const char splitchar)
 
 void string_display(const char *title, const char *string)
 {
+	wchar_t *wcstr;
+	int len;
+	/* compute the length of title */
+	len = strlen(title) + 1;
+	wcstr = calloc(len, sizeof(wchar_t));
+	len = mbstowcs(wcstr, title, len);
+	len = wcswidth(wcstr, len);
+	free(wcstr);
 	printf("%s ", title);
 	if(string == NULL || string[0] == '\0') {
-		printf(_("None\n"));
+		printf(_("None"));
 	} else {
-		printf("%s\n", string);
+		indentprint(string, len + 1);
 	}
+	putchar('\n');
 }
 
 void list_display(const char *title, const alpm_list_t *list)
-- 
1.5.6.4





More information about the pacman-dev mailing list