diff options
author | Nagy Gabor <ngaba@bibl.u-szeged.hu> | 2008-07-31 13:38:30 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-08-23 15:38:11 +0200 |
commit | 9451b2e4f23a3c566fcfe3420c379b3cb3eb1f90 (patch) | |
tree | fa47f6756811bd9f85b259199964a6b1e5169cd0 /src | |
parent | 901e4aa5c203f605e9d527e474821426a40e5cea (diff) | |
download | pacman-9451b2e4f23a3c566fcfe3420c379b3cb3eb1f90.tar.gz pacman-9451b2e4f23a3c566fcfe3420c379b3cb3eb1f90.tar.xz |
Move the the description parsing logic to string_display()
So dump_pkg_full will indent all strings correctly.
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
[Xav: add string_length function]
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/package.c | 18 | ||||
-rw-r--r-- | src/pacman/util.c | 31 |
2 files changed, 30 insertions, 19 deletions
diff --git a/src/pacman/package.c b/src/pacman/package.c index 06800378..87ffd985 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 82c460b7..43835047 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -423,14 +423,39 @@ alpm_list_t *strsplit(const char *str, const char splitchar) return(list); } +static int string_length(const char *s) +{ + int len; + wchar_t *wcstr; + + if(!s) { + return(0); + } + /* len goes from # bytes -> # chars -> # cols */ + len = strlen(s) + 1; + wcstr = calloc(len, sizeof(wchar_t)); + len = mbstowcs(wcstr, s, len); + len = wcswidth(wcstr, len); + free(wcstr); + + return(len); +} + void string_display(const char *title, const char *string) { - printf("%s ", title); + int len = 0; + + if(title) { + /* compute the length of title + a space */ + len = string_length(title) + 1; + printf("%s ", title); + } if(string == NULL || string[0] == '\0') { - printf(_("None\n")); + printf(_("None")); } else { - printf("%s\n", string); + indentprint(string, len); } + printf("\n"); } void list_display(const char *title, const alpm_list_t *list) |