summaryrefslogtreecommitdiff
path: root/unittests/Basic/FileManagerTest.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-08-01 21:42:11 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-08-01 21:42:11 +0000
commit0fda0f75f053ad9afdb2bb8d4ea72c5e6a49d657 (patch)
tree97d86b501ffa4ff6252c7f2c7bc2c4d09e623362 /unittests/Basic/FileManagerTest.cpp
parent1cf9ab8ab8cf0fc72819d8aa68ba6cc328e33d05 (diff)
downloadclang-0fda0f75f053ad9afdb2bb8d4ea72c5e6a49d657.tar.gz
clang-0fda0f75f053ad9afdb2bb8d4ea72c5e6a49d657.tar.bz2
clang-0fda0f75f053ad9afdb2bb8d4ea72c5e6a49d657.tar.xz
Use llvm::sys::fs::UniqueID for windows and unix.
This unifies the unix and windows versions of FileManager::UniqueDirContainer and FileManager::UniqueFileContainer by using UniqueID. We cannot just replace "struct stat" with llvm::sys::fs::file_status, since we want to be able to construct fake ones, and file_status has different members on unix and windows. What the patch does is: * Record only the information that clang is actually using. * Use llvm::sys::fs::status instead of stat and fstat. * Use llvm::sys::fs::UniqueID * Delete the old windows versions of UniqueDirContainer and UniqueFileContainer since the "unix" one now works on windows too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187619 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Basic/FileManagerTest.cpp')
-rw-r--r--unittests/Basic/FileManagerTest.cpp23
1 files changed, 10 insertions, 13 deletions
diff --git a/unittests/Basic/FileManagerTest.cpp b/unittests/Basic/FileManagerTest.cpp
index d86c96f5a2..f8ce50d531 100644
--- a/unittests/Basic/FileManagerTest.cpp
+++ b/unittests/Basic/FileManagerTest.cpp
@@ -24,18 +24,15 @@ class FakeStatCache : public FileSystemStatCache {
private:
// Maps a file/directory path to its desired stat result. Anything
// not in this map is considered to not exist in the file system.
- llvm::StringMap<struct stat, llvm::BumpPtrAllocator> StatCalls;
+ llvm::StringMap<FileData, llvm::BumpPtrAllocator> StatCalls;
void InjectFileOrDirectory(const char *Path, ino_t INode, bool IsFile) {
- struct stat statBuf;
- memset(&statBuf, 0, sizeof(statBuf));
- statBuf.st_dev = 1;
-#ifndef _WIN32 // struct stat has no st_ino field on Windows.
- statBuf.st_ino = INode;
-#endif
- statBuf.st_mode = IsFile ? (0777 | S_IFREG) // a regular file
- : (0777 | S_IFDIR); // a directory
- StatCalls[Path] = statBuf;
+ FileData Data;
+ memset(&Data, 0, sizeof(FileData));
+ llvm::sys::fs::UniqueID ID(1, INode);
+ Data.UniqueID = ID;
+ Data.IsDirectory = !IsFile;
+ StatCalls[Path] = Data;
}
public:
@@ -50,10 +47,10 @@ public:
}
// Implement FileSystemStatCache::getStat().
- virtual LookupResult getStat(const char *Path, struct stat &StatBuf,
- bool isFile, int *FileDescriptor) {
+ virtual LookupResult getStat(const char *Path, FileData &Data, bool isFile,
+ int *FileDescriptor) {
if (StatCalls.count(Path) != 0) {
- StatBuf = StatCalls[Path];
+ Data = StatCalls[Path];
return CacheExists;
}