D-Programming-Language/phobos — pull request #931 by epi (2012-11-06 16:21:00+00:00)
Title: Less problems with dirEntries.

0ee90d8 solves a problem with code such as `dirEntries("somedir", SpanMode.whatever).filter!(de => de.isFile)()`, when broken symlinks are encountered. A broken symlink is simply neither a file nor a directory (but it is still a symlink), and no exception is thrown.

0ac4055 solves an issue with recursive iteration - when a directory was encountered to which the current user had insufficient rights to list its contents, an exception was thrown. Now such a directory is simply omitted from the iteration.

Both changes are Posix-only. They don't break any contracts ensured by previously existing unit tests, although the semantics of `bool exists(in char[])` and possibly some other functions may need to be revised and defined more strictly for symlinks in the near future.
`bool isDir(in char[])` and `bool isFile(in char[])` still assume that the symlinked object exists, and throw if it doesn't.