diff options
| -rw-r--r-- | lib/libalpm/Makefile.am | 1 | ||||
| -rw-r--r-- | lib/libalpm/diskspace.c | 28 | ||||
| -rw-r--r-- | lib/libalpm/diskspace.h | 29 | ||||
| -rw-r--r-- | lib/libalpm/sync.c | 8 | 
4 files changed, 66 insertions, 0 deletions
diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am index bac30389..da663cb5 100644 --- a/lib/libalpm/Makefile.am +++ b/lib/libalpm/Makefile.am @@ -32,6 +32,7 @@ libalpm_la_SOURCES = \  	db.h db.c \  	delta.h delta.c \  	deps.h deps.c \ +	diskspace.h diskspace.c \  	dload.h dload.c \  	error.c \  	graph.h \ diff --git a/lib/libalpm/diskspace.c b/lib/libalpm/diskspace.c new file mode 100644 index 00000000..31a2760d --- /dev/null +++ b/lib/libalpm/diskspace.c @@ -0,0 +1,28 @@ +/* + *  diskspace.c + * + *  Copyright (c) 2010 Pacman Development Team <pacman-dev@archlinux.org> + * + *  This program is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  This program is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* libalpm */ +#include "diskspace.h" + +int _alpm_check_diskspace(pmtrans_t *trans, pmdb_t *db) +{ +	return 0; +} + +/* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/diskspace.h b/lib/libalpm/diskspace.h new file mode 100644 index 00000000..69e39d8e --- /dev/null +++ b/lib/libalpm/diskspace.h @@ -0,0 +1,29 @@ +/* + *  diskspace.h + * + *  Copyright (c) 2010 Pacman Development Team <pacman-dev@archlinux.org> + * + *  This program is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  This program is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _ALPM_DISKSPACE_H +#define _ALPM_DISKSPACE_H + +#include "alpm.h" + +int _alpm_check_diskspace(pmtrans_t *trans, pmdb_t *db); + +#endif /* _ALPM_DISKSPACE_H */ + +/* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 2f307750..23476b8d 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -48,6 +48,7 @@  #include "dload.h"  #include "delta.h"  #include "remove.h" +#include "diskspace.h"  /** Check for new version of pkg in sync repos   * (only the first occurrence is considered in sync) @@ -996,6 +997,13 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)  		EVENT(trans, PM_TRANS_EVT_FILECONFLICTS_DONE, NULL, NULL);  	} +	/* check available disk space */ +	_alpm_log(PM_LOG_DEBUG, "checking available disk space\n"); +	if(_alpm_check_diskspace(trans, handle->db_local) == -1) { +		_alpm_log(PM_LOG_ERROR, _("not enough free disk space\n")); +		goto error; +	} +  	/* remove conflicting and to-be-replaced packages */  	if(replaces) {  		_alpm_log(PM_LOG_DEBUG, "removing conflicting and to-be-replaced packages\n");  | 
