diff options
author | Nagy Gabor <ngaba@bibl.u-szeged.hu> | 2009-09-15 12:30:32 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-09-20 19:01:25 +0200 |
commit | ef3716877032941f7882c11c5a091abef95ef983 (patch) | |
tree | d67e75fb6c9c29a2252d44cc32b04310cdd51fa6 /src | |
parent | 481014e944731e2756e16a7283f8a10498cadba4 (diff) | |
download | pacman-ef3716877032941f7882c11c5a091abef95ef983.tar.gz pacman-ef3716877032941f7882c11c5a091abef95ef983.tar.xz |
Ask user confirmation for -R operation, too
After commit 0da96abc, pacman always asks user confirmation for -U, so it is
more coherent to doing that for -R, too.
Btw, most users use -Rs always, so they won't notice any change. In the old
code the -Ru operation was forgotten: Though it is a not "dangerous" operation,
but the target list can be changed by that, too.
Non-interactive scripts should always use --noconfirm (unexpected questions can
be asked by all transactions). [That's why we should always default to the
safest answers.]
I've also added a pkglist != NULL sanity check (because -Ru can empty target
list in trans_prepare part).
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/remove.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/pacman/remove.c b/src/pacman/remove.c index ced4e12f..6d44350b 100644 --- a/src/pacman/remove.c +++ b/src/pacman/remove.c @@ -115,23 +115,19 @@ int pacman_remove(alpm_list_t *targets) goto cleanup; } - /* Warn user in case of dangerous operation */ - if(config->flags & PM_TRANS_FLAG_RECURSE || - config->flags & PM_TRANS_FLAG_CASCADE) { - /* list transaction targets */ - alpm_list_t *pkglist = alpm_trans_get_remove(); - - display_targets(pkglist, 0); - printf("\n"); - - /* get confirmation */ - if(yesno(_("Do you want to remove these packages?")) == 0) { - retval = 1; - goto cleanup; - } + /* Step 3: actually perform the removal */ + alpm_list_t *pkglist = alpm_trans_get_remove(); + if(pkglist == NULL) { + goto cleanup; /* we are done */ + } + /* print targets and ask user confirmation */ + display_targets(pkglist, 0); + printf("\n"); + if(yesno(_("Do you want to remove these packages?")) == 0) { + retval = 1; + goto cleanup; } - /* Step 3: actually perform the removal */ if(alpm_trans_commit(NULL) == -1) { pm_fprintf(stderr, PM_LOG_ERROR, _("failed to commit transaction (%s)\n"), alpm_strerrorlast()); |