diff options
author | Eric Liu <ioeric@google.com> | 2018-05-24 11:17:00 +0000 |
---|---|---|
committer | Eric Liu <ioeric@google.com> | 2018-05-24 11:17:00 +0000 |
commit | 33dd619c804d65c40a07f769da06b7462bdb073a (patch) | |
tree | 6e60a95ec779a5516cae5f2f4d11f3adf46e3225 /clang/lib | |
parent | 34391f097d9350d59d3050bf149c0f536dd460da (diff) | |
download | bcm5719-llvm-33dd619c804d65c40a07f769da06b7462bdb073a.tar.gz bcm5719-llvm-33dd619c804d65c40a07f769da06b7462bdb073a.zip |
[VFS] Implement getRealPath in InMemoryFileSystem.
Reviewers: bkramer
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D47262
llvm-svn: 333172
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/VirtualFileSystem.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Basic/VirtualFileSystem.cpp b/clang/lib/Basic/VirtualFileSystem.cpp index b2eb5b9abfa..234adcd9aa0 100644 --- a/clang/lib/Basic/VirtualFileSystem.cpp +++ b/clang/lib/Basic/VirtualFileSystem.cpp @@ -788,6 +788,19 @@ std::error_code InMemoryFileSystem::setCurrentWorkingDirectory(const Twine &P) { return {}; } +std::error_code +InMemoryFileSystem::getRealPath(const Twine &Path, + SmallVectorImpl<char> &Output) const { + auto CWD = getCurrentWorkingDirectory(); + if (!CWD || CWD->empty()) + return errc::operation_not_permitted; + Path.toVector(Output); + if (auto EC = makeAbsolute(Output)) + return EC; + llvm::sys::path::remove_dots(Output, /*remove_dot_dot=*/true); + return {}; +} + } // namespace vfs } // namespace clang |