zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.w.stephenson@ntlworld.com>
To: zsh-workers@zsh.org
Subject: Re: zpc_special [was Re: question about glob qualifier format (#qx)]
Date: Mon, 23 Sep 2013 20:47:32 +0100	[thread overview]
Message-ID: <20130923204732.28ca20f2@pws-pc.ntlworld.com> (raw)
In-Reply-To: <130921163531.ZM18698@torch.brasslantern.com>

On Sat, 21 Sep 2013 16:35:31 -0700
Bart Schaefer <schaefer@brasslantern.com> wrote:
> On Sep 21,  1:30am, Bart Schaefer wrote:
> }
> } I accidentally encountered some odd behavior while confirming this.
> } With NO_EXTENDED_GLOB, #q is not supposed to be available to introduce
> } qualifiers.  However
> } 
> }     % setopt NO_EXTENDED_GLOB
> }     % echo *(#q@)
> }     <list of symlinks>
> } 
> } Whereas
> } 
> }     % echo *(#q/)
> }     zsh: unknown file attribute
> } 
> } This is inconsistent, that is, sometimes (#q@) will also give "unknown"
> } and (#q/) will work.
> 
> I believe this has to do with the new zpc_special[] array in pattern.c.

I'm aware of unfinished business for actually disabling hashes, but the
problem here is I'm using the array that's only initialised when you set
up a pattern too early in the glob process, which is why it sometimes
does the right thing after you've used a pattern.

See if this fixes everything you found...

diff --git a/Src/glob.c b/Src/glob.c
index 9299b95..0c7d22d 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -1112,7 +1112,8 @@ zglob(LinkList list, LinkNode np, int nountok)
     gf_pre_words = NULL;
 
     /* Check for qualifiers */
-    while (!nobareglob || zpc_special[ZPC_HASH] != Marker) {
+    while (!nobareglob ||
+	   (isset(EXTENDEDGLOB) && !zpc_disables[ZPC_HASH])) {
 	struct qual *newquals;
 	char *s;
 	int sense, paren;
@@ -1158,11 +1159,11 @@ zglob(LinkList list, LinkNode np, int nountok)
 	    case Outpar:
 		paren++; /*FALLTHROUGH*/
 	    case Bar:
-		if (zpc_special[ZPC_BAR] != Marker)
+		if (!zpc_disables[ZPC_BAR])
 		    nobareglob = 1;
 		break;
 	    case Tilde:
-		if (zpc_special[ZPC_TILDE] != Marker)
+		if (!isset(EXTENDEDGLOB) || !zpc_disables[ZPC_TILDE])
 		    nobareglob = 1;
 		break;
 	    case Inpar:
@@ -1172,7 +1173,7 @@ zglob(LinkList list, LinkNode np, int nountok)
 	}
 	if (*s != Inpar)
 	    break;
-	if (s[1] == zpc_special[ZPC_HASH]) {
+	if (isset(EXTENDEDGLOB) && !zpc_disables[ZPC_HASH] && s[1] == Pound) {
 	    if (s[2] == 'q') {
 		*s = 0;
 		s += 2;
diff --git a/Src/pattern.c b/Src/pattern.c
index b7897e7..4f0166b 100644
--- a/Src/pattern.c
+++ b/Src/pattern.c
@@ -245,7 +245,8 @@ static const char *zpc_strings[ZPC_COUNT] = {
  * Corresponding array of pattern disables as set by the user
  * using "disable -p".
  */
-static char zpc_disables[ZPC_COUNT];
+/**/
+char zpc_disables[ZPC_COUNT];
 
 /*
  * Stack of saved (compressed) zpc_disables for function scope.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


  parent reply	other threads:[~2013-09-23 19:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20130920111110.GA4501@localhost.localdomain>
     [not found] ` <20130920123830.30111071@pwslap01u.europe.root.pri>
     [not found]   ` <20130920233930.GB4501@localhost.localdomain>
     [not found]     ` <130921013028.ZM17637@torch.brasslantern.com>
2013-09-21 23:35       ` Bart Schaefer
2013-09-21 23:52         ` Bart Schaefer
2013-09-23 19:47         ` Peter Stephenson [this message]
2013-09-24  6:27           ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130923204732.28ca20f2@pws-pc.ntlworld.com \
    --to=p.w.stephenson@ntlworld.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).