diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/System/Unix/Path.inc | 1 | ||||
-rw-r--r-- | lib/System/Win32/Path.inc | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/System/Unix/Path.inc b/lib/System/Unix/Path.inc index b155213ec6..5557282964 100644 --- a/lib/System/Unix/Path.inc +++ b/lib/System/Unix/Path.inc @@ -375,6 +375,7 @@ Path::getFileStatus(FileStatus &info, bool update, std::string *ErrStr) const { status->mode = buf.st_mode; status->user = buf.st_uid; status->group = buf.st_gid; + status->uniqueID = uint64_t(buf.st_ino); status->isDir = S_ISDIR(buf.st_mode); status->isFile = S_ISREG(buf.st_mode); } diff --git a/lib/System/Win32/Path.inc b/lib/System/Win32/Path.inc index 1f809ecfa5..f5edaa07ed 100644 --- a/lib/System/Win32/Path.inc +++ b/lib/System/Win32/Path.inc @@ -319,6 +319,13 @@ Path::getFileStatus(FileStatus &info, bool update, std::string *ErrStr) const { status->user = 9999; // Not applicable to Windows, so... status->group = 9999; // Not applicable to Windows, so... + // FIXME: this is only unique if the file is accessed by the same file path. + // How do we do this for C:\dir\file and ..\dir\file ? Unix has inode + // numbers, but the concept doesn't exist in Windows. + status->uniqueID = 0; + for (unsigned i = 0; i < path.length(); ++i) + status->uniqueID += path[i]; + __int64 ft = *reinterpret_cast<__int64*>(&fi.ftLastWriteTime); status->modTime.fromWin32Time(ft); |