/** * @brief Remove packages in the current transaction. * * @param handle the context handle * @param run_ldconfig whether to run ld_config after removing the packages * * @return 0 on success, -1 if errors occurred while removing files */ int _alpm_remove_packages(alpm_handle_t *handle, int run_ldconfig) { alpm_list_t *targ; size_t pkg_count, targ_count; alpm_trans_t *trans = handle->trans; int ret = 0; pkg_count = alpm_list_count(trans->remove); targ_count = 1; for(targ = trans->remove; targ; targ = targ->next) { alpm_pkg_t *pkg = targ->data; if(trans->state == STATE_INTERRUPTED) { 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; } targ_count++; } if(run_ldconfig) { /* run ldconfig if it exists */ _alpm_ldconfig(handle); } return ret; }
int _alpm_upgrade_packages(alpm_handle_t *handle) { size_t pkg_count, pkg_current; #ifndef __MSYS__ int skip_ldconfig = 0; #endif int ret = 0; alpm_list_t *targ; alpm_trans_t *trans = handle->trans; if(trans->add == NULL) { return 0; } pkg_count = alpm_list_count(trans->add); pkg_current = 1; /* loop through our package list adding/upgrading one at a time */ for(targ = trans->add; targ; targ = targ->next) { alpm_pkg_t *newpkg = targ->data; if(handle->trans->state == STATE_INTERRUPTED) { return ret; } if(commit_single_pkg(handle, newpkg, pkg_current, pkg_count)) { /* something screwed up on the commit, abort the trans */ trans->state = STATE_INTERRUPTED; handle->pm_errno = ALPM_ERR_TRANS_ABORT; #ifndef __MSYS__ /* running ldconfig at this point could possibly screw system */ skip_ldconfig = 1; #endif ret = -1; } pkg_current++; } #ifndef __MSYS__ if(!skip_ldconfig) { /* run ldconfig if it exists */ _alpm_ldconfig(handle); } #endif return ret; }