diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2002-04-17 17:17:17 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2002-04-17 17:17:17 +0000 |
commit | 377938212a3a4a5e78b466d57b1b7e2233ebe231 (patch) | |
tree | f47acbaad7c25aeb283e1b394a3391b5bc2cc3a4 | |
parent | d7c53a6a3a17470a0b283983eb730dbc393a7be5 (diff) | |
download | zsh-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-- | ChangeLog | 6 | ||||
-rw-r--r-- | Src/cond.c | 6 | ||||
-rw-r--r-- | Test/C02cond.ztst | 7 |
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 ]] |