This should finally fix the spurious "No such file or directory" errors

reported from our build tools under Linux. As it seems Linux does not
translate dirent::d_ino for mount points (BeOS and Haiku do), which
caused us not to find a mount point entry in its parent directory.
Thanks to Vampyre for the hint.
Fixes bugs #73 and #76.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15726 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2005-12-29 18:25:29 +00:00
parent 8f9ab4d1a3
commit 74e7fd417e
+4 -2
View File
@@ -315,9 +315,11 @@ find_dir_entry(DIR *dir, const char *path, NodeRef ref, string &name, bool skipD
if ((!skipDot && strcmp(entry->d_name, ".") == 0)
|| strcmp(entry->d_name, "..") == 0) {
// skip "." and ".."
} else if (entry->d_ino == ref.node) {
} else /*if (entry->d_ino == ref.node)*/ {
// Note: Linux doesn't seem to translate dirent::d_ino of
// mount points. Thus we always have to lstat().
// We also need to compare the device, which is generally not
// included in the direct structure. Hence we lstat().
// included in the dirent structure. Hence we lstat().
string entryPath(path);
entryPath += '/';
entryPath += entry->d_name;