zsh-workers
 help / color / mirror / code / Atom feed
* 'rm foo * bar' and answering 'n' runs 'rm foo bar'
@ 2017-11-29 17:19 ` Daniel Shahaf
  2017-11-30  9:41   ` Peter Stephenson
  0 siblings, 1 reply; 2+ messages in thread
From: Daniel Shahaf @ 2017-11-29 17:19 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 688 bytes --]

As the subject says:

$ zsh -f
% cd $(mktemp -d)
% touch foo bar baz
% rm foo * bar 
zsh: sure you want to delete all 3 files in /tmp/tmp.e9ZNT40K4y [yn]? n
% ls
baz
%

This is counter-intuitive: users expect 'n' to abort the command
entirely.

It was brought up nine years ago:

Thread starts: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13141
Stéphane's patch: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13148
Review: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13149
Review: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13150

So...  Shall we commit users/13148?

Mikael had a rebased version available, I've attached it (with
permission).

Cheers,

Daniel

[-- Attachment #2: 13148-rebased.patch --]
[-- Type: text/x-diff, Size: 795 bytes --]

diff --git a/Src/exec.c b/Src/exec.c
index bd64a2d28..3ac488a81 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -3249,19 +3249,24 @@ execcmd_exec(Estate state, Execcmd_params eparams,
 
 	    next = nextnode(node);
 	    if (s[0] == Star && !s[1]) {
-		if (!checkrmall(pwd))
-		    uremnode(args, node);
+		if (!checkrmall(pwd)) {
+		    errflag |= ERRFLAG_ERROR;
+		    break;
+		}
 	    } else if (l >= 2 && s[l - 2] == '/' && s[l - 1] == Star) {
 		char t = s[l - 2];
+		int rmall;
 
 		s[l - 2] = 0;
-		if (!checkrmall(*s ? s : "/"))
-		    uremnode(args, node);
+		rmall = checkrmall(s);
 		s[l - 2] = t;
+
+		if (!rmall) {
+		    errflag |= ERRFLAG_ERROR;
+		    break;
+		}
 	    }
 	}
-	if (!nextnode(firstnode(args)))
-	    errflag |= ERRFLAG_ERROR;
     }
 
     if (type == WC_FUNCDEF) {

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: 'rm foo * bar' and answering 'n' runs 'rm foo bar'
  2017-11-29 17:19 ` 'rm foo * bar' and answering 'n' runs 'rm foo bar' Daniel Shahaf
@ 2017-11-30  9:41   ` Peter Stephenson
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2017-11-30  9:41 UTC (permalink / raw)
  To: zsh-workers

On Wed, 29 Nov 2017 17:19:33 +0000
Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
> As the subject says:
> 
> $ zsh -f
> % cd $(mktemp -d)
> % touch foo bar baz
> % rm foo * bar 
> zsh: sure you want to delete all 3 files in /tmp/tmp.e9ZNT40K4y [yn]? n
> % ls
> baz
> %
> 
> This is counter-intuitive: users expect 'n' to abort the command
> entirely.
> 
> It was brought up nine years ago:
> 
> Thread starts: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13141
> Stéphane's patch: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13148
> Review: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13149
> Review: http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=13150
> 
> So...  Shall we commit users/13148?
> 
> Mikael had a rebased version available, I've attached it (with
> permission).

That seems reasonable --- it's hard to think of a negative consequence.

pws


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-11-30 14:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20171129172023epcas2p2ad06101e98ecb0ffc5f52b45b8dd8af0@epcas2p2.samsung.com>
2017-11-29 17:19 ` 'rm foo * bar' and answering 'n' runs 'rm foo bar' Daniel Shahaf
2017-11-30  9:41   ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).