index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Nagy Gabor <ngaba@bibl.u-szeged.hu> | 2009-08-05 23:31:10 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-08-08 11:22:05 -0500 |
commit | 6d00025c18e837f57a4f78ee232fe3d8f244f143 (patch) | |
tree | b7b706fc5371cfc6f4e9345ddba04c8f44ad988b /src | |
parent | ee43e75ed2e8b852f1ae140d8a619a39a90d8481 (diff) |
-rw-r--r-- | src/pacman/sync.c | 26 |
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"); } } |