diff options
author | Dan McGee <dan@archlinux.org> | 2011-09-12 20:44:15 -0400 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-09-28 04:52:37 -0500 |
commit | f682cbd43355daa7b13389d74e0ffea0370ba89b (patch) | |
tree | 229f89df15b99fe3aae788d7ae9ba401d3a393c1 | |
parent | 7edeb276b63efeea7e8f266dfee792e2709ba412 (diff) | |
download | pacman-f682cbd43355daa7b13389d74e0ffea0370ba89b.tar.xz |
Show download sizes when using -S/--sync
We now label the old 'Size' column as 'Net Change' to reflect the
reality of what we are looking at. Sync operations now get an additional
'Download Size' column.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | src/pacman/util.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/pacman/util.c b/src/pacman/util.c index aa93357e..59462e86 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -744,7 +744,7 @@ void signature_display(const char *title, alpm_siglist_t *siglist) } /* creates a header row for use with table_display */ -static alpm_list_t *create_verbose_header(void) +static alpm_list_t *create_verbose_header(int dl_size) { alpm_list_t *res = NULL; char *str; @@ -755,14 +755,18 @@ static alpm_list_t *create_verbose_header(void) res = alpm_list_add(res, str); str = _("New Version"); res = alpm_list_add(res, str); - str = _("Size"); + str = _("Net Change"); res = alpm_list_add(res, str); + if(dl_size) { + str = _("Download Size"); + res = alpm_list_add(res, str); + } return res; } /* returns package info as list of strings */ -static alpm_list_t *create_verbose_row(pm_target_t *target) +static alpm_list_t *create_verbose_row(pm_target_t *target, int dl_size) { char *str; off_t size = 0; @@ -794,6 +798,17 @@ static alpm_list_t *create_verbose_row(pm_target_t *target) pm_asprintf(&str, "%.2f %s", human_size, label); ret = alpm_list_add(ret, str); + if(dl_size) { + size = target->install ? alpm_pkg_download_size(target->install) : 0; + human_size = humanize_size(size, 'M', &label); + if(size != 0) { + pm_asprintf(&str, "%.2f %s", human_size, label); + } else { + str = strdup(""); + } + ret = alpm_list_add(ret, str); + } + return ret; } @@ -805,6 +820,7 @@ static void _display_targets(alpm_list_t *targets) double size; off_t isize = 0, rsize = 0, dlsize = 0; alpm_list_t *i, *header = NULL, *rows = NULL; + int show_dl_size = config->op == PM_OP_SYNC; if(!targets) { return; @@ -824,7 +840,7 @@ static void _display_targets(alpm_list_t *targets) } if(config->verbosepkglists) { - rows = alpm_list_add(rows, create_verbose_row(target)); + rows = alpm_list_add(rows, create_verbose_row(target, show_dl_size)); } else { if(target->install) { pm_asprintf(&str, "%s-%s", alpm_pkg_get_name(target->install), @@ -842,7 +858,7 @@ static void _display_targets(alpm_list_t *targets) printf("\n"); if(config->verbosepkglists) { - header = create_verbose_header(); + header = create_verbose_header(show_dl_size); if(table_display(str, header, rows) != 0) { config->verbosepkglists = 0; _display_targets(targets); |