diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-02-03 04:35:45 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-02-03 04:35:45 +0000 |
commit | 50ae3e3f10ccbb8c04c9ea941d930973ccf231bd (patch) | |
tree | 79b2e5aff93905d1fdda1efaf608082d2659f484 | |
parent | f704c61b3c88659a0c9946ea26d1bbff99803792 (diff) |
Revert 124754 and 124760 as they made clang unusable in the presence of symbolic
links.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124776 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Basic/FileManager.cpp | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 53d7c9a6bd..cbe90bfdc1 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -271,91 +271,10 @@ const DirectoryEntry *FileManager::getDirectory(llvm::StringRef Filename) { return &UDE; } -/// \brief Canonicalize a file or path name by eliminating redundant -/// "foo/.." and "./" path components. -/// -/// Uses the given scratch space to store the resulting string, if needed. -static llvm::StringRef CanonicalizeFileName(llvm::StringRef Filename, - llvm::SmallVectorImpl<char> &Scratch) { - size_t Start = 0; - bool Changed = false; - size_t FirstSlash = Filename.find('/', Start); - do { - if (FirstSlash == llvm::StringRef::npos) { - // No more components. Just copy the rest of the file name, if - // we need to. - if (Changed) - Scratch.append(Filename.begin() + Start, Filename.end()); - break; - } - - if (Start + 1 == FirstSlash && Filename[Start] == '.') { - // We have './'; remove it. - - // If we haven't changed anything previously, copy the - // starting bits here. - if (!Changed) { - Scratch.clear(); - Scratch.append(Filename.begin(), Filename.begin() + Start); - Changed = true; - } - - // Skip over the './'. - Start = FirstSlash + 1; - FirstSlash = Filename.find('/', Start); - continue; - } - - size_t SecondSlash = Filename.find('/', FirstSlash + 1); - if (SecondSlash != llvm::StringRef::npos && - SecondSlash - FirstSlash == 3 && - Filename[FirstSlash + 1] == '.' && - Filename[FirstSlash + 2] == '.') { - // We have 'foo/../'; remove it. - - // If we haven't changed anything previously, copy the - // starting bits here. - if (!Changed) { - Scratch.clear(); - Scratch.append(Filename.begin(), Filename.begin() + Start); - Changed = true; - } - - // Skip over the 'foo/..'. - Start = SecondSlash + 1; - FirstSlash = Filename.find('/', Start); - continue; - } - - if (Changed) - Scratch.append(Filename.begin() + Start, - Filename.begin() + FirstSlash + 1); - Start = FirstSlash + 1; - - if (SecondSlash == llvm::StringRef::npos) - FirstSlash = Filename.find('/', Start); - else - FirstSlash = SecondSlash; - } while (true); - - if (Changed) { -#if 0 - llvm::errs() << "Canonicalized \"" << Filename << "\" to \"" - << llvm::StringRef(Scratch.data(), Scratch.size()) << "\"\n"; -#endif - return llvm::StringRef(Scratch.data(), Scratch.size()); - } - - return Filename; -} - /// getFile - Lookup, cache, and verify the specified file. This returns null /// if the file doesn't exist. /// const FileEntry *FileManager::getFile(llvm::StringRef Filename) { - llvm::SmallString<128> FilenameScratch; - Filename = CanonicalizeFileName(Filename, FilenameScratch); - ++NumFileLookups; // See if there is already an entry in the map. @@ -424,9 +343,6 @@ const FileEntry *FileManager::getFile(llvm::StringRef Filename) { const FileEntry * FileManager::getVirtualFile(llvm::StringRef Filename, off_t Size, time_t ModificationTime) { - llvm::SmallString<128> FilenameScratch; - Filename = CanonicalizeFileName(Filename, FilenameScratch); - ++NumFileLookups; // See if there is already an entry in the map. |