From 2d69947427fac68c06ca9e659cf2ad5fbacaf19d Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Mon, 13 Mar 2000 09:37:31 +0000 Subject: zsh-workers/10103 --- Src/glob.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'Src') diff --git a/Src/glob.c b/Src/glob.c index c457e97ac..5a4add319 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -479,11 +479,26 @@ scanner(Complist q) /* Not the last path section. Just add it to the path. */ int oppos = pathpos; - if (!errflag && !(q->closure && !strcmp(str, "."))) { - addpath(str); - if (!closure || !statfullpath("", NULL, 1)) - scanner((q->closure) ? q : q->next); - pathbuf[pathpos = oppos] = '\0'; + if (!errflag) { + int add = 1; + + if (q->closure && *pathbuf) { + if (!strcmp(str, ".")) + add = 0; + else if (!strcmp(str, "..")) { + struct stat sc, sr; + + add = (stat("/", &sr) || stat(pathbuf, &sc) || + sr.st_ino != sc.st_ino || + sr.st_dev != sc.st_dev); + } + } + if (add) { + addpath(str); + if (!closure || !statfullpath("", NULL, 1)) + scanner((q->closure) ? q : q->next); + pathbuf[pathpos = oppos] = '\0'; + } } } else insert(str, 0); -- cgit 1.4.1