summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/remove.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm/remove.c')
-rw-r--r--lib/libalpm/remove.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c
index c6a3efcb..e998763f 100644
--- a/lib/libalpm/remove.c
+++ b/lib/libalpm/remove.c
@@ -475,7 +475,7 @@ db:
return 0;
}
-int _alpm_remove_packages(alpm_handle_t *handle)
+int _alpm_remove_packages(alpm_handle_t *handle, int run_ldconfig)
{
alpm_list_t *targ;
size_t pkg_count, targ_count;
@@ -489,23 +489,25 @@ int _alpm_remove_packages(alpm_handle_t *handle)
alpm_pkg_t *pkg = targ->data;
if(trans->state == STATE_INTERRUPTED) {
- return 0;
+ return ret;
}
if(_alpm_remove_single_package(handle, pkg, NULL,
targ_count, pkg_count) == -1) {
handle->pm_errno = ALPM_ERR_TRANS_ABORT;
+ /* running ldconfig at this point could possibly screw system */
+ run_ldconfig = 0;
ret = -1;
- goto cleanup;
}
targ_count++;
}
- /* run ldconfig if it exists */
- _alpm_ldconfig(handle);
+ if(run_ldconfig) {
+ /* run ldconfig if it exists */
+ _alpm_ldconfig(handle);
+ }
-cleanup:
return ret;
}