From 6942bba75db596a70d5ba408785bf461e691bc9c Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Tue, 11 Jan 2011 19:49:27 -0600 Subject: 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 --- lib/libalpm/diskspace.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'lib') 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; } } -- cgit v1.2.3-70-g09d2