From 7ad97ffa631af6ad678c79b38341ac995f347ce9 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 23 Nov 2010 07:51:02 +0000 Subject: give FileManager a 'FileSystemOptions' ivar, which will be used to simplify a bunch of code in it. It should ultimately get inlined into FileManager. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120007 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/FileManager.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'lib/Basic/FileManager.cpp') diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index c8515a356b..6b356b87d5 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -142,8 +142,9 @@ public: // Common logic. //===----------------------------------------------------------------------===// -FileManager::FileManager() - : UniqueDirs(*new UniqueDirContainer), +FileManager::FileManager(const FileSystemOptions &FSO) + : FileSystemOpts(FSO), + UniqueDirs(*new UniqueDirContainer), UniqueFiles(*new UniqueFileContainer), DirEntries(64), FileEntries(64), NextFileUID(0) { NumDirLookups = NumFileLookups = 0; @@ -250,7 +251,7 @@ const DirectoryEntry *FileManager::getDirectory(llvm::StringRef Filename, // Check to see if the directory exists. struct stat StatBuf; - if (stat_cached(InterndDirName, &StatBuf, FileSystemOpts) || // Error stat'ing. + if (stat_cached(InterndDirName, &StatBuf) || // Error stat'ing. !S_ISDIR(StatBuf.st_mode)) // Not a directory? return 0; @@ -309,7 +310,7 @@ const FileEntry *FileManager::getFile(llvm::StringRef Filename, // Nope, there isn't. Check to see if the file exists. struct stat StatBuf; //llvm::errs() << "STATING: " << Filename; - if (stat_cached(InterndFileName, &StatBuf, FileSystemOpts) || // Error stat'ing. + if (stat_cached(InterndFileName, &StatBuf) || // Error stat'ing. S_ISDIR(StatBuf.st_mode)) { // A directory? // If this file doesn't exist, we leave a null in FileEntries for this path. //llvm::errs() << ": Not existing\n"; @@ -375,7 +376,7 @@ FileManager::getVirtualFile(llvm::StringRef Filename, off_t Size, // newly-created file entry. const char *InterndFileName = NamedFileEnt.getKeyData(); struct stat StatBuf; - if (!stat_cached(InterndFileName, &StatBuf, FileSystemOpts) && + if (!stat_cached(InterndFileName, &StatBuf) && !S_ISDIR(StatBuf.st_mode)) { llvm::sys::Path FilePath(InterndFileName); FilePath.makeAbsolute(); @@ -408,8 +409,7 @@ getBufferForFile(llvm::StringRef Filename, return llvm::MemoryBuffer::getFile(FilePath.c_str(), ErrorStr, FileSize); } -int FileManager::stat_cached(const char *path, struct stat *buf, - const FileSystemOptions &FileSystemOpts) { +int FileManager::stat_cached(const char *path, struct stat *buf) { if (FileSystemOpts.WorkingDir.empty()) return StatCache.get() ? StatCache->stat(path, buf) : stat(path, buf); -- cgit v1.2.3-18-g5258