From f5b6d11cf226cd62af2cdd1f28c8d3da6c4dbd59 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Fri, 9 Nov 2018 00:26:10 +0000 Subject: [VFS] Add "expand tilde" argument to getRealPath. Add an optional argument to expand tildes in the path to mirror llvm's implementation of the corresponding function. llvm-svn: 346453 --- llvm/lib/Support/VirtualFileSystem.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'llvm/lib/Support/VirtualFileSystem.cpp') diff --git a/llvm/lib/Support/VirtualFileSystem.cpp b/llvm/lib/Support/VirtualFileSystem.cpp index e8b0435b9cdf..eeac88383aac 100644 --- a/llvm/lib/Support/VirtualFileSystem.cpp +++ b/llvm/lib/Support/VirtualFileSystem.cpp @@ -132,7 +132,8 @@ std::error_code FileSystem::makeAbsolute(SmallVectorImpl &Path) const { } std::error_code FileSystem::getRealPath(const Twine &Path, - SmallVectorImpl &Output) const { + SmallVectorImpl &Output, + bool ExpandTilde) const { return errc::operation_not_permitted; } @@ -238,8 +239,8 @@ public: llvm::ErrorOr getCurrentWorkingDirectory() const override; std::error_code setCurrentWorkingDirectory(const Twine &Path) override; std::error_code isLocal(const Twine &Path, bool &Result) override; - std::error_code getRealPath(const Twine &Path, - SmallVectorImpl &Output) const override; + std::error_code getRealPath(const Twine &Path, SmallVectorImpl &Output, + bool ExpandTilde = false) const override; private: mutable std::mutex CWDMutex; @@ -297,9 +298,9 @@ std::error_code RealFileSystem::isLocal(const Twine &Path, bool &Result) { return llvm::sys::fs::is_local(Path, Result); } -std::error_code -RealFileSystem::getRealPath(const Twine &Path, - SmallVectorImpl &Output) const { +std::error_code RealFileSystem::getRealPath(const Twine &Path, + SmallVectorImpl &Output, + bool ExpandTilde) const { return llvm::sys::fs::real_path(Path, Output); } @@ -393,12 +394,12 @@ std::error_code OverlayFileSystem::isLocal(const Twine &Path, bool &Result) { return errc::no_such_file_or_directory; } -std::error_code -OverlayFileSystem::getRealPath(const Twine &Path, - SmallVectorImpl &Output) const { +std::error_code OverlayFileSystem::getRealPath(const Twine &Path, + SmallVectorImpl &Output, + bool ExpandTilde) const { for (auto &FS : FSList) if (FS->exists(Path)) - return FS->getRealPath(Path, Output); + return FS->getRealPath(Path, Output, ExpandTilde); return errc::no_such_file_or_directory; } @@ -916,9 +917,9 @@ std::error_code InMemoryFileSystem::setCurrentWorkingDirectory(const Twine &P) { return {}; } -std::error_code -InMemoryFileSystem::getRealPath(const Twine &Path, - SmallVectorImpl &Output) const { +std::error_code InMemoryFileSystem::getRealPath(const Twine &Path, + SmallVectorImpl &Output, + bool ExpandTilde) const { auto CWD = getCurrentWorkingDirectory(); if (!CWD || CWD->empty()) return errc::operation_not_permitted; -- cgit v1.2.3