From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21758 invoked by alias); 1 Jan 2016 20:39:43 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 37473 Received: (qmail 9192 invoked from network); 1 Jan 2016 20:39:42 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 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== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:date:in-reply-to:comments :references:to:subject:mime-version:content-type; bh=0pQ1/2rXkuzsD8o9GuS+rQFAI/0noOEd+BvEWcfG6sI=; b=cQwll4oniodhEcTCPIOVrsihC9A/I8Dnc4itAYcisbmvixb34RhZueH/8l0osZh98S kb5AoUHaM0NwkX5WkAiuIbssRVzWKT0MM4nM0dqUUrejeTWENOkGSr5fyvgLxlz9mF88 fzF2x/i/DoJct6ebU7Dgbq00hlqY4ljCJhvN6piOeroBIoF/EWyXw7xI6qq2zHwmkJp1 eXgd+lKYAZh05KQ81anUhFD4Kkpnd8wjrdmENWpnFUTsMuIcdSODzIUxKPNPDz5Hvnvh ZTmBppLHy1TAtfejfXd+TxBbBBywq+viyFNkjPSF9Hd7RV1HoykBCLosZUHVvV3wkSB+ Ynrg== X-Gm-Message-State: ALoCoQnVVj7QxsoO3eK9Tgid8lEZNSsLBMR+ljdyZzZC15X1bfTgifS8JRE3s3k6mmVqh/R48RWMhs7i9bHjk1UADwuOR6usFQ== X-Received: by 10.66.221.42 with SMTP id qb10mr109723670pac.51.1451680778254; Fri, 01 Jan 2016 12:39:38 -0800 (PST) From: Bart Schaefer Message-Id: <160101123940.ZM10365@torch.brasslantern.com> Date: Fri, 1 Jan 2016 12:39:40 -0800 In-Reply-To: <20160101040052.GA1808@zira.vinc17.org> Comments: In reply to Vincent Lefevre "buggy CSH_NULL_GLOB when a pattern is at the command position" (Jan 1, 5:00am) References: <20160101040052.GA1808@zira.vinc17.org> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh-workers@zsh.org Subject: Re: buggy CSH_NULL_GLOB when a pattern is at the command position MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii 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 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);