From 6946d7d1b77a550c3f4de48e4cc6ad1094ac6b10 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Mon, 14 Sep 2015 18:37:40 -0400 Subject: check fileconflicts and diskspace outside commit This is necessary in order to be able to run PreTransaction hooks as close to the actual commit as possible so that we don't prematurely run hooks for a transaction that ultimately never happens. Signed-off-by: Andrew Gregory Signed-off-by: Allan McRae --- lib/libalpm/sync.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'lib/libalpm/sync.c') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index e843b07a..c5607bc8 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -1338,7 +1338,7 @@ int _alpm_sync_load(alpm_handle_t *handle, alpm_list_t **data) return 0; } -int _alpm_sync_commit(alpm_handle_t *handle, alpm_list_t **data) +int _alpm_sync_check(alpm_handle_t *handle, alpm_list_t **data) { alpm_trans_t *trans = handle->trans; alpm_event_t event; @@ -1355,7 +1355,8 @@ int _alpm_sync_commit(alpm_handle_t *handle, alpm_list_t **data) if(data) { *data = conflict; } else { - alpm_list_free_inner(conflict, (alpm_list_fn_free)alpm_fileconflict_free); + alpm_list_free_inner(conflict, + (alpm_list_fn_free)alpm_fileconflict_free); alpm_list_free(conflict); } RET_ERR(handle, ALPM_ERR_FILE_CONFLICTS, -1); @@ -1380,12 +1381,21 @@ int _alpm_sync_commit(alpm_handle_t *handle, alpm_list_t **data) EVENT(handle, &event); } + return 0; +} + +int _alpm_sync_commit(alpm_handle_t *handle) +{ + alpm_trans_t *trans = handle->trans; + /* remove conflicting and to-be-replaced packages */ if(trans->remove) { - _alpm_log(handle, ALPM_LOG_DEBUG, "removing conflicting and to-be-replaced packages\n"); + _alpm_log(handle, ALPM_LOG_DEBUG, + "removing conflicting and to-be-replaced packages\n"); /* we want the frontend to be aware of commit details */ if(_alpm_remove_packages(handle, 0) == -1) { - _alpm_log(handle, ALPM_LOG_ERROR, _("could not commit removal transaction\n")); + _alpm_log(handle, ALPM_LOG_ERROR, + _("could not commit removal transaction\n")); return -1; } } -- cgit v1.2.3-70-g09d2