[pacman-dev] [PATCH 4/6] Refactor display_targets for readability
Jakob Gruber
jakob.gruber at gmail.com
Mon Feb 28 11:31:06 EST 2011
On 02/25/2011 03:57 PM, Dan McGee wrote:
> 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()
Done, sorry bout that.
>> +}
>> +
>> /* 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.
>
Done.
>> 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