August 10, 2005
The Linux version of std.file.exists has been changed to:

####
return access(toStringz(name),0) != 0;
####

This is incorrect at least on my system. The glibc documentation says for access():

"The return value is 0 if the access is permitted, and -1 otherwise. (In other words, treated as a predicate function, access returns true if the requested access is denied.)"

A similar definition can be found on www.opengroup.org. Thus the line has to be changed to:

####
return access(toStringz(name),0) == 0;
####

This bug does also break Build from Derek, which complains about missing build.brf and similar files, because the previous existance test does not work. That's how i discovered it. I have already changed the line in my Phobos, recompiled (i had to remove recls from the build, as it produced a lot of errors, by the way) and everything works perfect.

Ciao
uwe