After commit 0da96abc, pacman always asks user confirmation for -U, so it is
more coherent for 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 not "dangerous", but the
target list can be changed by that operation too.

Non-interactive scripts should use --noconfirm always (unexpected questions
can be asked by all transactions). [That's we should always default to the
safest answers.]

I also added a pkglist != NULL sanity check (because -Ru can empty target
list in trans_prepare part).

Signed-off-by: Nagy Gabor <[email protected]>
---
 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 ced4e12..6d44350 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());
-- 
1.6.4.3


Reply via email to