summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNagy Gabor <ngaba@bibl.u-szeged.hu>2009-08-05 23:31:10 +0200
committerDan McGee <dan@archlinux.org>2009-08-08 11:22:05 -0500
commit6d00025c18e837f57a4f78ee232fe3d8f244f143 (patch)
treeb7b706fc5371cfc6f4e9345ddba04c8f44ad988b /src
parentee43e75ed2e8b852f1ae140d8a619a39a90d8481 (diff)
downloadpacman-6d00025c18e837f57a4f78ee232fe3d8f244f143.tar.xz
Fix for FS#15810
Skip the SyncFirst dialog, if all the -S packages are SyncFirst packages. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r--src/pacman/sync.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 4da65400..7bfe454b 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -837,18 +837,26 @@ int pacman_sync(alpm_list_t *targets)
/* check for newer versions of packages to be upgraded first */
alpm_list_t *packages = syncfirst();
if(packages) {
- printf(_(":: The following packages should be upgraded first :\n"));
- list_display(" ", packages);
- if(yesno(_(":: Do you want to cancel the current operation\n"
- ":: and upgrade these packages now?"))) {
- FREELIST(targs);
- targs = packages;
- config->flags = 0;
- config->op_s_upgrade = 0;
+ /* Do not ask user if all the -S targets are SyncFirst packages, see FS#15810 */
+ alpm_list_t *tmp = NULL;
+ if(config->op_s_upgrade || (tmp = alpm_list_diff(targets, packages, (alpm_list_fn_cmp)strcmp))) {
+ alpm_list_free(tmp);
+ printf(_(":: The following packages should be upgraded first :\n"));
+ list_display(" ", packages);
+ if(yesno(_(":: Do you want to cancel the current operation\n"
+ ":: and upgrade these packages now?"))) {
+ FREELIST(targs);
+ targs = packages;
+ config->flags = 0;
+ config->op_s_upgrade = 0;
+ } else {
+ FREELIST(packages);
+ }
+ printf("\n");
} else {
+ pm_printf(PM_LOG_DEBUG, "skipping SyncFirst dialog\n");
FREELIST(packages);
}
- printf("\n");
}
}