diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-09-03 15:56:04 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-09-03 15:56:04 +0000 |
commit | cef45cd543c1c8ac2da327803ac878a87435329f (patch) | |
tree | 6d1a8fa46efe6ab9e4f5876a79f13e5e4998f6c7 | |
parent | 051884d7fd21e87ee1f3d5305ac76c81102853ab (diff) | |
download | zsh-cef45cd543c1c8ac2da327803ac878a87435329f.tar.gz zsh-cef45cd543c1c8ac2da327803ac878a87435329f.tar.xz zsh-cef45cd543c1c8ac2da327803ac878a87435329f.zip |
zsh-workers/7639
-rw-r--r-- | Doc/Zsh/expn.yo | 8 | ||||
-rw-r--r-- | Src/glob.c | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo index 7baa42b8c..b548770a2 100644 --- a/Doc/Zsh/expn.yo +++ b/Doc/Zsh/expn.yo @@ -1107,9 +1107,13 @@ If the tt(KSH_GLOB) option is set, then a the `tt(LPAR())' is treated specially, as detailed below. The option tt(SH_GLOB) prevents bare parentheses from being used in this way, though the tt(KSH_GLOB) option is still available. + Note that grouping cannot extend over multiple directories: it is an error -to have a `tt(/)' within a group (this only applies for patterns which -match filenames). +to have a `tt(/)' within a group (this only applies for patterns used in +filename generation). There is one exception: a group of the form +tt(LPAR())var(pat)tt(/RPAR()#) appearing as a complete path segment can +match a sequence of directories. For example, tt(foo/(a*/)#bar) matches +tt(foo/bar), tt(foo/any/bar), tt(foo/any/anyother/bar), and so on). ) item(var(x)tt(|)var(y))( Matches either var(x) or var(y). diff --git a/Src/glob.c b/Src/glob.c index 68cd81b01..cbfd699c2 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -243,7 +243,11 @@ statfullpath(const char *s, struct stat *st, int l) "BUG: statfullpath(): pathname too long"); strcpy(buf, pathbuf + pathbufcwd); strcpy(buf + pathpos - pathbufcwd, s); - if (!*s) { + if (!*s && *buf) { + /* + * Don't add the '.' if the path so far is empty, since + * then we get bogus empty strings inserted as files. + */ buf[pathpos - pathbufcwd] = '.'; buf[pathpos - pathbufcwd + 1] = '\0'; l = 0; |