summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);