about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2016-07-28 09:46:40 +0100
committerPeter Stephenson <pws@zsh.org>2016-07-28 09:51:19 +0100
commit895e9beb294a9e86c8ead01ff177624848f495ff (patch)
tree55f4e2f711c27e3002b2f01ce00079633a8007c4
parent74722c7392ae95069df6966b1194d3e10320f3de (diff)
downloadzsh-895e9beb294a9e86c8ead01ff177624848f495ff.tar.gz
zsh-895e9beb294a9e86c8ead01ff177624848f495ff.tar.xz
zsh-895e9beb294a9e86c8ead01ff177624848f495ff.zip
users/21793: Remove raw integers as glob qualifiers.
There was an ancient undocumented feature that these were treated
as a file mode to "or" with that of the file under test.  The
only documented way of doing this has always been the "f" qualifier,
so removed the effect of raw integers to make errors more obvious.
-rw-r--r--ChangeLog6
-rw-r--r--README8
-rw-r--r--Src/glob.c9
3 files changed, 15 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index bf74cbe3c..88cf4cd19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-07-28  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* users/21793: README, Src/glob.c: remove ancient undocumented
+	pre-"f" glob qualifer feature that unqualified integers were
+	treated as octal file mode.
+
 2016-07-27  Daniel Shahaf  <d.s@daniel.shahaf.name>
 
 	* unposted: Functions/Misc/add-zle-hook-widget: Prefix function's
diff --git a/README b/README
index d5343db19..9de5eb4a9 100644
--- a/README
+++ b/README
@@ -79,6 +79,14 @@ Other aspects of EXIT trap handling have not changed --- there is still
 only one EXIT trap at any point in a programme, so it is not generally
 useful to combine POSIX and non-POSIX behaviour in the same script.
 
+4) There was an undocumented feature dating from the early days of zsh
+that glob qualifiers consisting only of the digits 0 to 7 were treated
+as an octal file mode to "and" with the modes of files being tested.
+This has been removed in order to be more sensitive to syntax errors.
+The "f" qualifier has for many years been the documented way of testing
+file modes; it allows the "and" test ("*(f+1)" is the documented
+equivalent of "*(1)") as well as many other forms.
+
 Incompatibilities between 5.0.8 and 5.2
 ---------------------------------------
 
diff --git a/Src/glob.c b/Src/glob.c
index 850405fd4..a845c5fbb 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -1282,14 +1282,7 @@ zglob(LinkList list, LinkNode np, int nountok)
 		*ptr = '-';
 	while (*s && !newcolonmod) {
 	    func = (int (*) _((char *, Statptr, off_t, char *)))0;
-	    if (idigit(*s)) {
-		/* Store numeric argument for qualifier */
-		func = qualflags;
-		data = 0;
-		sdata = NULL;
-		while (idigit(*s))
-		    data = data * 010 + (*s++ - '0');
-	    } else if (*s == ',') {
+	    if (*s == ',') {
 		/* A comma separates alternative sets of qualifiers */
 		s++;
 		sense = 0;