>From e63ea25813e65cbb6ad1f925d71720527cf7ea19 Mon Sep 17 00:00:00 2001
From: Nagy Gabor <[EMAIL PROTECTED]>
Date: Thu, 31 Jul 2008 15:58:25 +0200
Subject: [PATCH] Add linebreak parameter to list_display

If linebreak is not set, list_display is identical to the old one:
Targets: foo  bar  baz

If linebreak is set, list_display put every list member to its own line:
Optdepends: foo
            bar
            baz

Since optdepends are expected in "foo: feature" format, Optdepends are
listed with linebreak set.

Signed-off-by: Nagy Gabor <[EMAIL PROTECTED]>
---
 src/pacman/package.c |   16 ++++++------
 src/pacman/pacman.c  |    2 +-
 src/pacman/remove.c  |    2 +-
 src/pacman/sync.c    |    4 +-
 src/pacman/util.c    |   61 +++++++++++++++++++++++++++++++------------------
 src/pacman/util.h    |    2 +-
 6 files changed, 51 insertions(+), 36 deletions(-)

diff --git a/src/pacman/package.c b/src/pacman/package.c
index 87ffd98..17887e7 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -91,18 +91,18 @@ void dump_pkg_full(pmpkg_t *pkg, int level)
        string_display(_("Name           :"), alpm_pkg_get_name(pkg));
        string_display(_("Version        :"), alpm_pkg_get_version(pkg));
        string_display(_("URL            :"), alpm_pkg_get_url(pkg));
-       list_display(_("Licenses       :"), alpm_pkg_get_licenses(pkg));
-       list_display(_("Groups         :"), alpm_pkg_get_groups(pkg));
-       list_display(_("Provides       :"), alpm_pkg_get_provides(pkg));
-       list_display(_("Depends On     :"), depstrings);
-       list_display(_("Optional Deps  :"), alpm_pkg_get_optdepends(pkg));
+       list_display(_("Licenses       :"), alpm_pkg_get_licenses(pkg), 0);
+       list_display(_("Groups         :"), alpm_pkg_get_groups(pkg), 0);
+       list_display(_("Provides       :"), alpm_pkg_get_provides(pkg), 0);
+       list_display(_("Depends On     :"), depstrings, 0);
+       list_display(_("Optional Deps  :"), alpm_pkg_get_optdepends(pkg), 1);
        /* Only applicable if installed */
        if(level > 0) {
-               list_display(_("Required By    :"), requiredby);
+               list_display(_("Required By    :"), requiredby, 0);
                FREELIST(requiredby);
        }
-       list_display(_("Conflicts With :"), alpm_pkg_get_conflicts(pkg));
-       list_display(_("Replaces       :"), alpm_pkg_get_replaces(pkg));
+       list_display(_("Conflicts With :"), alpm_pkg_get_conflicts(pkg), 0);
+       list_display(_("Replaces       :"), alpm_pkg_get_replaces(pkg), 0);
        if(level < 0) {
                printf(_("Download Size  : %6.2f K\n"),
                        (float)alpm_pkg_get_size(pkg) / 1024.0);
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 445365e..8b8698b 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -872,7 +872,7 @@ int main(int argc, char *argv[])
                printf("\n");
                printf("Lock File : %s\n", alpm_option_get_lockfile());
                printf("Log File  : %s\n", alpm_option_get_logfile());
-               list_display("Targets   :", pm_targets);
+               list_display("Targets   :", pm_targets, 0);
        }
 
        /* Opening local database */
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index f091fa4..f56ac2e 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -74,7 +74,7 @@ int pacman_remove(alpm_list_t *targets)
                                                pkgnames = 
alpm_list_add(pkgnames, (void *)alpm_pkg_get_name(pkg));
                                        }
                                        printf(_(":: group %s:\n"), targ);
-                                       list_display("   ", pkgnames);
+                                       list_display("   ", pkgnames, 0);
                                        int all = yesno(1, _("    Remove whole 
content?"));
                                        for(p = pkgnames; p; p = 
alpm_list_next(p)) {
                                                char *pkgn = 
alpm_list_getdata(p);
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 8d0c529..ae3f523 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -603,7 +603,7 @@ static int sync_trans(alpm_list_t *targets)
                                                        pkgnames = 
alpm_list_add(pkgnames,
                                                                        
(char*)alpm_pkg_get_name(k->data));
                                                }
-                                               list_display("   ", pkgnames);
+                                               list_display("   ", pkgnames, 
0);
                                                if(yesno(1, _(":: Install whole 
content?"))) {
                                                        for(k = pkgnames; k; k 
= alpm_list_next(k)) {
                                                                targets = 
alpm_list_add(targets, strdup(alpm_list_getdata(k)));
@@ -816,7 +816,7 @@ int pacman_sync(alpm_list_t *targets)
                alpm_list_t *packages = syncfirst();
                if(packages) {
                        printf(_(":: The following packages should be upgraded 
first :\n"));
-                       list_display("   ", packages);
+                       list_display("   ", packages, 0);
                        if(yesno(1, _(":: Do you want to cancel the current 
operation\n"
                                                        ":: and upgrade these 
packages now?"))) {
                                FREELIST(targs);
diff --git a/src/pacman/util.c b/src/pacman/util.c
index ff5429e..17aaa1f 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -442,7 +442,7 @@ void string_display(const char *title, const char *string)
        printf("\n");
 }
 
-void list_display(const char *title, const alpm_list_t *list)
+void list_display(const char *title, const alpm_list_t *list, int linebreak)
 {
        const alpm_list_t *i;
        int cols, len;
@@ -453,7 +453,7 @@ void list_display(const char *title, const alpm_list_t 
*list)
                len = strlen(title) + 1;
                wcstr = calloc(len, sizeof(wchar_t));
                len = mbstowcs(wcstr, title, len);
-               len = wcswidth(wcstr, len);
+               len = wcswidth(wcstr, len) + 1;
                free(wcstr);
                printf("%s ", title);
        } else {
@@ -461,29 +461,44 @@ void list_display(const char *title, const alpm_list_t 
*list)
        }
 
        if(list) {
-               for(i = list, cols = len; i; i = alpm_list_next(i)) {
-                       char *str = alpm_list_getdata(i);
-                       /* s goes from # bytes -> # chars -> # cols */
-                       int s = strlen(str) + 1;
-                       wcstr = calloc(s, sizeof(wchar_t));
-                       s = mbstowcs(wcstr, str, s);
-                       s = wcswidth(wcstr, s);
-                       free(wcstr);
-                       /* two additional spaces are added to the length */
-                       s += 2;
-                       int maxcols = getcols();
-                       if(s + cols >= maxcols) {
-                               int i;
-                               cols = len;
-                               printf("\n");
-                               for (i = 0; i <= len; ++i) {
+               if(linebreak) {
+                       /* Print the first element */
+                       indentprint((const char *) alpm_list_getdata(list), 
len);
+                       printf("\n");
+                       /* Print the rest */
+                       for(i = alpm_list_next(list); i; i = alpm_list_next(i)) 
{
+                               int j;
+                               for(j = 1; j <= len; j++) {
                                        printf(" ");
                                }
+                               indentprint((const char *) 
alpm_list_getdata(i), len);
+                               printf("\n");
+                       }
+               } else {
+                       for(i = list, cols = len; i; i = alpm_list_next(i)) {
+                               char *str = alpm_list_getdata(i);
+                               /* s goes from # bytes -> # chars -> # cols */
+                               int s = strlen(str) + 1;
+                               wcstr = calloc(s, sizeof(wchar_t));
+                               s = mbstowcs(wcstr, str, s);
+                               s = wcswidth(wcstr, s);
+                               free(wcstr);
+                               /* two additional spaces are added to the 
length */
+                               s += 2;
+                               int maxcols = getcols();
+                               if(s + cols > maxcols) {
+                                       int j;
+                                       cols = len;
+                                       printf("\n");
+                                       for (j = 1; j <= len; j++) {
+                                               printf(" ");
+                                       }
+                               }
+                               printf("%s  ", str);
+                               cols += s;
                        }
-                       printf("%s  ", str);
-                       cols += s;
+                       printf("\n");
                }
-               printf("\n");
        } else {
                printf(_("None\n"));
        }
@@ -529,7 +544,7 @@ void display_targets(const alpm_list_t *pkgs, int install)
 
        if(install) {
                asprintf(&str, _("Targets (%d):"), alpm_list_count(targets));
-               list_display(str, targets);
+               list_display(str, targets, 0);
                free(str);
                printf("\n");
 
@@ -537,7 +552,7 @@ void display_targets(const alpm_list_t *pkgs, int install)
                printf(_("Total Installed Size:   %.2f MB\n"), mbisize);
        } else {
                asprintf(&str, _("Remove (%d):"), alpm_list_count(targets));
-               list_display(str, targets);
+               list_display(str, targets, 0);
                free(str);
                printf("\n");
 
diff --git a/src/pacman/util.h b/src/pacman/util.h
index 2ddc1b5..0a1ac2c 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -50,7 +50,7 @@ char *strtrim(char *str);
 char *strreplace(const char *str, const char *needle, const char *replace);
 alpm_list_t *strsplit(const char *str, const char splitchar);
 void string_display(const char *title, const char *string);
-void list_display(const char *title, const alpm_list_t *list);
+void list_display(const char *title, const alpm_list_t *list, int linebreak);
 void display_targets(const alpm_list_t *pkgs, int install);
 void display_synctargets(const alpm_list_t *syncpkgs);
 int yesno(short preset, char *fmt, ...);
-- 
1.5.6.4


_______________________________________________
pacman-dev mailing list
[email protected]
http://archlinux.org/mailman/listinfo/pacman-dev

Reply via email to