Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: 3.1.5: ``***'' symlink follow broken
- X-seq: zsh-workers 4617
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxx>
- To: Zsh Hackers <zsh-workers@xxxxxxxxxxxxxxx>
- Subject: Re: PATCH: 3.1.5: ``***'' symlink follow broken
- Date: Thu, 12 Nov 1998 09:21:46 -0800
- In-reply-to: <9811121410.AA34177@xxxxxxxxxxxxxxxxx>
- References: <9811121410.AA34177@xxxxxxxxxxxxxxxxx>
On Nov 12, 3:10pm, Peter Stephenson wrote:
} Subject: Re: PATCH: 3.1.5: ``***'' symlink follow broken
}
} Geoff Wing wrote:
} > ``***'' recursive globbing with symlink follow has been broken
}
} It's amazing how the shell can totally break down without anyone
} noticing.
I must sheepishly admit that I only really use 3.1.x when I'm playing
with it or changing its code. The machine I use most of the day at
work has 3.0.5-extended installed.
} > This patch is probably suboptimal (possibly wrong)
}
} It works fine, but there's one minor tweak: you can still reject
} things that aren't directories (the test correctly uses stat(), not
} lstat(), so it may be a link to a directory), but the link count test
} doesn't apply when the directory could contain only symbolic links.
Yes, that's exactly the problem ... but ...
} The following patch is a replacement which does that. I can't imagine
} the difference is that important -- in fact, since the opendir() will
} fail if the thing isn't a directory, it's hard to see that the stat()
} at this point gains much at all. Unless someone knows something
} sinister about opendir()?
I *think* what's going on here is that `dirs' means the *next* level of
comparison needs to match directories inside which the final files may
reside. The stat() is intended to short-circuit the search when there
are no such subdirectories, before iterating through the entries in the
`while (zreaddir())' loop that follows. It's only a bonus that it also
avoids calling opendir() on a non-directory, and it's useless if the
link count test is invalid.
So *unless* somebody knows of a reason not to do opendir() on something
that isn't a directory, I think Geoff's patch is actually better [on the
assumption that a failed opendir() is faster than a successful stat()].
Late last night I was of the opinion that `closure' mattered more than
did `q->follow', but I've since revised that opinion.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author