diff options
author | Dan McGee <dan@archlinux.org> | 2011-01-12 02:49:27 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-01-12 04:15:24 +0100 |
commit | 6942bba75db596a70d5ba408785bf461e691bc9c (patch) | |
tree | edef3b13941b7865dcc23868a1c1e14e0013fd3f /lib/libalpm | |
parent | 55bff19b7692e01a0bf276c742c77f03fb445160 (diff) | |
download | pacman-6942bba75db596a70d5ba408785bf461e691bc9c.tar.gz pacman-6942bba75db596a70d5ba408785bf461e691bc9c.tar.xz |
Add error message stating which partition is full
This is helpful anyway to the user, and should also be helpful to us if we
see problems cropping up in the check during development.
Also add a missing ->used = 0 initialization in the code path less taken.
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm')
-rw-r--r-- | lib/libalpm/diskspace.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/libalpm/diskspace.c b/lib/libalpm/diskspace.c index bc5f5127..b3c340af 100644 --- a/lib/libalpm/diskspace.c +++ b/lib/libalpm/diskspace.c @@ -84,8 +84,8 @@ static alpm_list_t *mount_point_list(void) mp->mount_dir = strdup(mnt->mnt_dir); memcpy(&(mp->fsp), &fsp, sizeof(FSSTATSTYPE)); - mp->blocks_needed = 0; - mp->max_blocks_needed = 0; + mp->blocks_needed = 0l; + mp->max_blocks_needed = 0l; mp->used = 0; mount_points = alpm_list_add(mount_points, mp); @@ -107,8 +107,9 @@ static alpm_list_t *mount_point_list(void) mp->mount_dir = strdup(fsp->f_mntonname); memcpy(&(mp->fsp), fsp, sizeof(FSSTATSTYPE)); - mp->blocks_needed = 0; - mp->max_blocks_needed = 0; + mp->blocks_needed = 0l; + mp->max_blocks_needed = 0l; + mp->used = 0; mount_points = alpm_list_add(mount_points, mp); } @@ -178,8 +179,7 @@ static int calculate_removed_size(const alpm_list_t *mount_points, data = mp->data; /* the addition of (divisor - 1) performs ceil() with integer division */ data->blocks_needed -= - (st.st_size + data->fsp.f_bsize - 1) / data->fsp.f_bsize; - data->used = 1; + (st.st_size + data->fsp.f_bsize - 1l) / data->fsp.f_bsize; } return(0); @@ -230,7 +230,7 @@ static int calculate_installed_size(const alpm_list_t *mount_points, data = mp->data; /* the addition of (divisor - 1) performs ceil() with integer division */ data->blocks_needed += - (archive_entry_size(entry) + data->fsp.f_bsize - 1) / data->fsp.f_bsize; + (archive_entry_size(entry) + data->fsp.f_bsize - 1l) / data->fsp.f_bsize; data->used = 1; } @@ -306,6 +306,9 @@ int _alpm_check_diskspace(pmtrans_t *trans, pmdb_t *db_local) (unsigned long)data->fsp.f_bfree); if(data->max_blocks_needed + cushion >= 0 && (unsigned long)(data->max_blocks_needed + cushion) > data->fsp.f_bfree) { + _alpm_log(PM_LOG_ERROR, _("Partition %s too full: %ld blocks needed, %ld blocks free)\n"), + data->mount_dir, data->max_blocks_needed + cushion, + (unsigned long)data->fsp.f_bfree); abort = 1; } } |