Row handling is moved to its own function in preparation for verbose
package lists.

Signed-off-by: Jakob Gruber <[email protected]>
---
 src/pacman/util.c |   48 ++++++++++++++++++++++++++----------------------
 1 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/src/pacman/util.c b/src/pacman/util.c
index 23b95c9..ba64a77 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -498,11 +498,27 @@ void list_display_linebreak(const char *title, const 
alpm_list_t *list)
                }
        }
 }
+
+/* returns package info as a string */
+static char *create_list_element(pmpkg_t *pkg)
+{
+       char *ret;
+       const char *label;
+       double size;
+       const char *pkgstr = config->showsize ? "%s-%s [%.2f %s]" : "%s-%s";
+
+       size = humanize_size(alpm_pkg_get_size(pkg), 0, 1, &label);
+       pm_asprintf(&ret, pkgstr, alpm_pkg_get_name(pkg), 
alpm_pkg_get_version(pkg),
+                       size, label);
+
+       return(ret);
+}
+
 /* prepare a list of pkgs to display */
 void display_targets(const alpm_list_t *pkgs, int install)
 {
        char *str;
-       const char *label;
+       const char *title, *label;
        double size;
        const alpm_list_t *i;
        off_t isize = 0, dlsize = 0;
@@ -512,7 +528,6 @@ void display_targets(const alpm_list_t *pkgs, int install)
                return;
        }
 
-       printf("\n");
        for(i = pkgs; i; i = alpm_list_next(i)) {
                pmpkg_t *pkg = alpm_list_getdata(i);
 
@@ -521,24 +536,17 @@ void display_targets(const alpm_list_t *pkgs, int install)
                }
                isize += alpm_pkg_get_isize(pkg);
 
-               /* print the package size with the output if ShowSize option 
set */
-               if(config->showsize) {
-                       size = humanize_size(alpm_pkg_get_size(pkg), 0, 1, 
&label);
-                       pm_asprintf(&str, "%s-%s [%.2f %s]", 
alpm_pkg_get_name(pkg),
-                                       alpm_pkg_get_version(pkg), size, label);
-               } else {
-                       pm_asprintf(&str, "%s-%s", alpm_pkg_get_name(pkg),
-                                       alpm_pkg_get_version(pkg));
-               }
-               targets = alpm_list_add(targets, str);
+               targets = alpm_list_add(targets, create_list_element(pkg));
        }
 
-       if(install) {
-               pm_asprintf(&str, _("Targets (%d):"), alpm_list_count(targets));
-               list_display(str, targets);
-               free(str);
-               printf("\n");
+       title = install ? _("Targets (%d):") : _("Remove (%d):");
+       pm_asprintf(&str, title, alpm_list_count(pkgs));
+
+       printf("\n");
+       list_display(str, targets);
+       printf("\n");
 
+       if(install) {
                size = humanize_size(dlsize, 'M', 1, &label);
                printf(_("Total Download Size:    %.2f %s\n"), size, label);
                if(!(config->flags & PM_TRANS_FLAG_DOWNLOADONLY)) {
@@ -546,15 +554,11 @@ void display_targets(const alpm_list_t *pkgs, int install)
                        printf(_("Total Installed Size:   %.2f %s\n"), size, 
label);
                }
        } else {
-               pm_asprintf(&str, _("Remove (%d):"), alpm_list_count(targets));
-               list_display(str, targets);
-               free(str);
-               printf("\n");
-
                size = humanize_size(isize, 'M', 1, &label);
                printf(_("Total Removed Size:   %.2f %s\n"), size, label);
        }
 
+       free(str);
        FREELIST(targets);
 }
 
-- 
1.7.4.1


Reply via email to