about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2002-04-17 17:17:17 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2002-04-17 17:17:17 +0000
commit377938212a3a4a5e78b466d57b1b7e2233ebe231 (patch)
treef47acbaad7c25aeb283e1b394a3391b5bc2cc3a4
parentd7c53a6a3a17470a0b283983eb730dbc393a7be5 (diff)
downloadzsh-377938212a3a4a5e78b466d57b1b7e2233ebe231.tar.gz
zsh-377938212a3a4a5e78b466d57b1b7e2233ebe231.tar.xz
zsh-377938212a3a4a5e78b466d57b1b7e2233ebe231.zip
Alexandre Duret-Lutz: 16930: Src/cond.c, Test/C02cond.ztst:
Careful with long filenames in internal condition test; fix block
file test for `-f'.
-rw-r--r--ChangeLog6
-rw-r--r--Src/cond.c6
-rw-r--r--Test/C02cond.ztst7
3 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 40aa5fe13..61fa873b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-04-17  Peter Stephenson  <pws@csr.com>
+
+	* Alexandre Duret-Lutz: 16930: Src/cond.c, Test/C02cond.ztst:
+	Careful with long filenames in internal condition test; fix block
+	file test for `-f'.
+
 2002-04-17  Wayne Davison  <wayned@users.sourceforge.net>
 
 	* unposted: Src/params.c: HISTSIZE can now get set to 1 line
diff --git a/Src/cond.c b/Src/cond.c
index b34a14be1..4a4dc24ed 100644
--- a/Src/cond.c
+++ b/Src/cond.c
@@ -324,6 +324,8 @@ static struct stat st;
 static struct stat *
 getstat(char *s)
 {
+    char *us;
+
 /* /dev/fd/n refers to the open file descriptor n.  We always use fstat *
  * in this case since on Solaris /dev/fd/n is a device special file     */
     if (!strncmp(s, "/dev/fd/", 8)) {
@@ -332,7 +334,9 @@ getstat(char *s)
         return &st;
     }
 
-    if (stat(unmeta(s), &st))
+    if (!(us = unmeta(s)))
+        return NULL;
+    if (stat(us, &st))
 	return NULL;
     return &st;
 }
diff --git a/Test/C02cond.ztst b/Test/C02cond.ztst
index b320634d5..14c54d842 100644
--- a/Test/C02cond.ztst
+++ b/Test/C02cond.ztst
@@ -51,7 +51,12 @@
   [[ -e zerolength && ! -e nonexistent ]]
 0:-e cond
 
-  [[ -f zerolength && ! -f cond && ! -f $char && ! -f $block && ! -f . ]]
+  if [[ -n $block ]]; then
+    [[ -f zerolength && ! -f cond && ! -f $char && ! -f $block[(f)1] && ! -f . ]]
+  else
+    print -u8 'Warning: Not testing [[ -f blockdevice ]] (no devices found)'
+    [[ -f zerolength && ! -f cond && ! -f $char && ! -f . ]]
+  fi
 0:-f cond
 
   [[ -g modish && ! -g zerolength ]]