summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-09-12 20:44:15 -0400
committerDan McGee <dan@archlinux.org>2011-09-28 04:52:37 -0500
commitf682cbd43355daa7b13389d74e0ffea0370ba89b (patch)
tree229f89df15b99fe3aae788d7ae9ba401d3a393c1
parent7edeb276b63efeea7e8f266dfee792e2709ba412 (diff)
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.c26
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);