[pacman-dev] [PATCH 4/6] Refactor display_targets for readability

Dan McGee dpmcgee at gmail.com
Fri Feb 25 09:57:05 EST 2011


On Mon, Feb 21, 2011 at 1:02 PM, Jakob Gruber <jakob.gruber at gmail.com> wrote:
> Row handling is moved to its own function in preparation for verbose
> package lists.
>
> Signed-off-by: Jakob Gruber <jakob.gruber at gmail.com>
> ---
>  src/pacman/util.c |   53 ++++++++++++++++++++++++++++-------------------------
>  1 files changed, 28 insertions(+), 25 deletions(-)
>
> diff --git a/src/pacman/util.c b/src/pacman/util.c
> index 8903d61..85d2d8c 100644
> --- a/src/pacman/util.c
> +++ b/src/pacman/util.c
> @@ -498,10 +498,26 @@ 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, *size;
> +       const char *pkgstr = config->showsize ? "%s-%s [%s]" : "%s-%s";
> +
> +       size = size_to_human_string_mb(alpm_pkg_get_size(pkg));
> +       pm_asprintf(&ret, pkgstr, alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg),
> +                       size);
> +       free(size);
> +
> +       return ret;
return()
> +}
> +
>  /* prepare a list of pkgs to display */
>  void display_targets(const alpm_list_t *pkgs, int install)
>  {
>        char *str, *size;
> +       const char *title;
>        const alpm_list_t *i;
>        off_t isize = 0, dlsize = 0;
>        alpm_list_t *targets = NULL;
> @@ -510,34 +526,24 @@ void display_targets(const alpm_list_t *pkgs, int install)
>                return;
>        }
>
> -       printf("\n");
> +       title = install ? _("Targets (%d):") : _("Remove (%d):");
> +
>        for(i = pkgs; i; i = alpm_list_next(i)) {
>                pmpkg_t *pkg = alpm_list_getdata(i);
>
> -               if(install) {
> -                       dlsize += alpm_pkg_download_size(pkg);
> -               }
> +               dlsize += alpm_pkg_download_size(pkg);
So we're now adding this up for both install and remove? We should
probably keep it conditional.

>                isize += alpm_pkg_get_isize(pkg);
>
> -               /* print the package size with the output if ShowSize option set */
> -               if(config->showsize) {
> -                       size = size_to_human_string_mb(alpm_pkg_get_size(pkg));
> -                       pm_asprintf(&str, "%s-%s [%s]", alpm_pkg_get_name(pkg),
> -                                       alpm_pkg_get_version(pkg), size);
> -                       free(size);
> -               } 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");
> +       pm_asprintf(&str, title, alpm_list_count(targets));
> +
> +       printf("\n");
> +       list_display(str, targets);
> +       printf("\n");
>
> +       if(install) {
>                size = size_to_human_string_mb(dlsize);
>                printf(_("Total Download Size:    %s\n"), size);
>                free(size);
> @@ -547,16 +553,13 @@ void display_targets(const alpm_list_t *pkgs, int install)
>                        free(size);
>                }
>        } else {
> -               pm_asprintf(&str, _("Remove (%d):"), alpm_list_count(targets));
> -               list_display(str, targets);
> -               free(str);
> -               printf("\n");
> -
>                size = size_to_human_string_mb(isize);
>                printf(_("Total Removed Size:   %s\n"), size);
>                free(size);
>        }
>
> +out:
> +       free(str);
>        FREELIST(targets);
>  }
>
> --
> 1.7.4.1
>
>
>


More information about the pacman-dev mailing list