summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pacman/upgrade.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/pacman/upgrade.c b/src/pacman/upgrade.c
index 0ca6fec8..650af6b0 100644
--- a/src/pacman/upgrade.c
+++ b/src/pacman/upgrade.c
@@ -41,6 +41,7 @@
*/
int pacman_upgrade(alpm_list_t *targets)
{
+ int retval = 0;
alpm_list_t *i;
alpm_siglevel_t level = alpm_option_get_default_siglevel(config->handle);
@@ -57,7 +58,7 @@ int pacman_upgrade(alpm_list_t *targets)
if(str == NULL) {
pm_printf(ALPM_LOG_ERROR, "'%s': %s\n",
(char *)i->data, alpm_strerror(alpm_errno(config->handle)));
- return 1;
+ retval = 1;
} else {
free(i->data);
i->data = str;
@@ -65,6 +66,10 @@ int pacman_upgrade(alpm_list_t *targets)
}
}
+ if(retval) {
+ return retval;
+ }
+
/* Step 1: create a new transaction */
if(trans_init(config->flags, 1) == -1) {
return 1;
@@ -79,19 +84,24 @@ int pacman_upgrade(alpm_list_t *targets)
if(alpm_pkg_load(config->handle, targ, 1, level, &pkg) != 0) {
pm_printf(ALPM_LOG_ERROR, "'%s': %s\n",
targ, alpm_strerror(alpm_errno(config->handle)));
- trans_release();
- return 1;
+ retval = 1;
+ continue;
}
if(alpm_add_pkg(config->handle, pkg) == -1) {
pm_printf(ALPM_LOG_ERROR, "'%s': %s\n",
targ, alpm_strerror(alpm_errno(config->handle)));
alpm_pkg_free(pkg);
- trans_release();
- return 1;
+ retval = 1;
+ continue;
}
config->explicit_adds = alpm_list_add(config->explicit_adds, pkg);
}
+ if(retval) {
+ trans_release();
+ return retval;
+ }
+
/* now that targets are resolved, we can hand it all off to the sync code */
return sync_prepare_execute();
}