From 6d00025c18e837f57a4f78ee232fe3d8f244f143 Mon Sep 17 00:00:00 2001 From: Nagy Gabor Date: Wed, 5 Aug 2009 23:31:10 +0200 Subject: Fix for FS#15810 Skip the SyncFirst dialog, if all the -S packages are SyncFirst packages. Signed-off-by: Nagy Gabor Signed-off-by: Xavier Chantry Signed-off-by: Dan McGee --- src/pacman/sync.c | 26 +++++++++++++++++--------- 1 file 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"); } } -- cgit v1.2.3-70-g09d2