2008/9/5 Stefan Bodewig <[EMAIL PROTECTED]>: > On Fri, 5 Sep 2008, Gilles Scokart <[EMAIL PROTECTED]> wrote: > >> 2008/9/5 Stefan Bodewig <[EMAIL PROTECTED]>: >>> On Thu, 4 Sep 2008, Peter Reilly <[EMAIL PROTECTED]> wrote: >>> >>>> Is it not costly (as in very costly) to get the canonical path ? >>> >>> That's what I've been told but I've never measured it. >>> >>> Currently DirectoryScanner avoids looking at the canonical path >>> unless followSymlinks is false. The problem with infinite loops >>> caused by symlinks only happens if followSymlinks is true - so any >>> solution to the problem will make DirectoryScanner look up >>> canonical paths more often and thus probably make scanning slower. >>> >> >> Instead of checking the canonical path, we could maybe check to path >> in which we want to recurse. > > I don't think I understand what you mean here. > > The directory listing of base will show a single child directory A > with no indication that this is a link (the only way to find out is to > get the canonical path). > >> The only case where we need to check for symlink is when we are in >> A/base and want to recurse in a directory name A. > > How do we know this would be a recursion without checking the > canonical path? > > Stefan
Instead of checking for every directory if it is a symlink, we first scan the path name. If we want to go into a directory A, we check if we have already traversed a directory A. We don't need any file system acces for that. And its only when we detect that out recusive path will contains two A that we check if those two A have the same canonical path. But the more I think to it, the more I am in favor of a solution that simply fail the build properly by indiciating that an infinite recursive pattern has been used. It is much simpler to implement, and probably more intuitive. -- Gilles Scokart --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]