This happens e.g. if the path is for an invalid symlink.
{
*absolute = this->full;
}
- if (st)
+ if (st && stat(this->full, st))
{
- if (stat(this->full, st))
+ /* try lstat() e.g. if a symlink is not valid anymore */
+ if ((errno != ENOENT && errno != ENOTDIR) || lstat(this->full, st))
{
DBG1(DBG_LIB, "stat() on '%s' failed: %s", this->full,
strerror(errno));
return 0;
}
+/**
+ * stat(2) behaves like lstat(2) for symbolic links on Windows
+ */
+#define lstat stat
+
/**
* Lazy binding, ignored on Windows
*/