summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/diskspace.c
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-01-12 02:49:27 +0100
committerDan McGee <dan@archlinux.org>2011-01-12 04:15:24 +0100
commit6942bba75db596a70d5ba408785bf461e691bc9c (patch)
treeedef3b13941b7865dcc23868a1c1e14e0013fd3f /lib/libalpm/diskspace.c
parent55bff19b7692e01a0bf276c742c77f03fb445160 (diff)
downloadpacman-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/diskspace.c')
-rw-r--r--lib/libalpm/diskspace.c17
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;
}
}