Show net upgrade size on -U/-S operations

If it is different than the raw installed size metric we already show,
compute the net upgrade size. For some sync operations, this can even be
negative if newer packages are smaller than the ones they replace
locally. Implements FS#12566.

Example:

    Targets (1): telepathy-glib-0.14.7-1

    Total Download Size:    1.07 MiB
    Total Installed Size:   15.72 MiB
    Net Upgrade Size:       -0.29 MiB

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-06-01 17:11:45 -05:00
parent 142c2132cf
commit 8f30e1b110
2 changed files with 13 additions and 2 deletions

View File

@ -31,7 +31,7 @@
#include "util.h"
#include "conf.h"
static int remove_target(char *target)
static int remove_target(const char *target)
{
pmpkg_t *info;
pmdb_t *db_local = alpm_option_get_localdb();

View File

@ -688,8 +688,9 @@ void display_targets(const alpm_list_t *pkgs, int install)
const char *title, *label;
double size;
const alpm_list_t *i;
off_t isize = 0, dlsize = 0;
off_t isize = 0, rsize = 0, dlsize = 0;
alpm_list_t *j, *lp, *header = NULL, *targets = NULL;
pmdb_t *db_local = alpm_option_get_localdb();
if(!pkgs) {
return;
@ -700,7 +701,12 @@ void display_targets(const alpm_list_t *pkgs, int install)
pmpkg_t *pkg = alpm_list_getdata(i);
if(install) {
pmpkg_t *lpkg = alpm_db_get_pkg(db_local, alpm_pkg_get_name(pkg));
dlsize += alpm_pkg_download_size(pkg);
if(lpkg) {
/* add up size of all removed packages */
rsize += alpm_pkg_get_isize(lpkg);
}
}
isize += alpm_pkg_get_isize(pkg);
@ -736,6 +742,11 @@ void display_targets(const alpm_list_t *pkgs, int install)
if(!(config->flags & PM_TRANS_FLAG_DOWNLOADONLY)) {
size = humanize_size(isize, 'M', 1, &label);
printf(_("Total Installed Size: %.2f %s\n"), size, label);
/* only show this net value if different from raw installed size */
if(rsize > 0) {
size = humanize_size(isize - rsize, 'M', 1, &label);
printf(_("Net Upgrade Size: %.2f %s\n"), size, label);
}
}
} else {
size = humanize_size(isize, 'M', 1, &label);