Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: buggy CSH_NULL_GLOB when a pattern is at the command position
- X-seq: zsh-workers 37473
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: buggy CSH_NULL_GLOB when a pattern is at the command position
- Date: Fri, 1 Jan 2016 12:39:40 -0800
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:date:in-reply-to:comments:references:to:subject :mime-version:content-type; bh=0pQ1/2rXkuzsD8o9GuS+rQFAI/0noOEd+BvEWcfG6sI=; b=szkbhZri9RAlG86sgCrvrFUBHS+wKjb5p73nb70JGrCt3/cZw16uIueJtyC21V/bfW GDeIo4QNnnU7iPHY/cwwZmt5f1gdRYJTEDh+OMbZr0w8LWftq9mERhOqjwoMuw5U3KCb iYv2A+tKuY6fA2nfqx0VpRP7p/r0Xzaxe9PWOYNLWHfNzocSp/Zgfw80Xx7DWeCmGIqD D1akm476loRKBvcXjBrFTbVXT7EVYeUtGQkPrqmfsyIhwRk4M2UaZQaVM4OkkPXRiXXL 0ZtzxzweQh+zmMP/NCxKV8yVpuhSFffV20vnbMCvQomNRsbQASDvvhlYn/pNEjl7Ocsb ZowA==
- In-reply-to: <20160101040052.GA1808@zira.vinc17.org>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <20160101040052.GA1808@zira.vinc17.org>
On Jan 1, 5:00am, Vincent Lefevre wrote:
}
} When CSH_NULL_GLOB is set and the command line contains only patterns,
} a "no match" error is not reported.
Hm. So what's happening here is that the error is suppressed in zglob()
because it should only be reported if all globbing fails; but because
the command position is globbed separately from the rest of the line,
the caller is not expecting to handle this condition and glob failure
is interpreted as an empty command line.
You can see how this happens better if written this way:
torch% [] echo foo
foo
The [] is discarded because of cshnullglob, so "echo" is actually the
command.
The patch below fixes the case where all command-position globs fail,
although the error message is not the same as when cshnullglob is not set
(which has always been true in other cases, so probably not a big deal).
} Moreover, I wonder whether when a no-match pattern is at the
} command position, one should always get an error (if possible).
It's conceivable that somebody might actually *intend* the behavior in
my example above, though I don't know why.
} BTW, with older zsh versions, such as 5.0.7, [] was regarded
} as a bad pattern (instead of a pattern that doesn't match).
} Has this changed on purpose?
Seems so:
commit e86720190efc6550086e6a733394cb393cd0da4d
Author: Peter Stephenson <pws@xxxxxxx>
Date: Fri May 15 09:35:24 2015 +0100
35131: allow "[]" to match empty character set.
diff --git a/Src/exec.c b/Src/exec.c
index 18d19b6..352615c 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -2785,6 +2785,11 @@ execcmd(Estate state, int input, int output, int how, int last1)
* arguments before and no command substitution
* has provided a status.
*/
+ if (badcshglob == 1) {
+ zerr("no match");
+ lastval = 1;
+ return;
+ }
cmdoutval = use_cmdoutval ? lastval : 0;
if (varspc)
addvars(state, varspc, 0);
Messages sorted by:
Reverse Date,
Date,
Thread,
Author