diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-04-10 13:36:38 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2018-04-10 13:36:38 +0000 |
commit | 148c8cb4bf0ce5f328a5bfac822e1b16353bbe8c (patch) | |
tree | 732829aa7be754e335525336195e10c177c6fd99 /clang/lib/Basic/FileManager.cpp | |
parent | b1cb0b7957ecb048955bda8f088e34c477938f7f (diff) | |
download | llvm-148c8cb4bf0ce5f328a5bfac822e1b16353bbe8c.zip llvm-148c8cb4bf0ce5f328a5bfac822e1b16353bbe8c.tar.gz llvm-148c8cb4bf0ce5f328a5bfac822e1b16353bbe8c.tar.bz2 |
Use llvm::sys::fs::real_path() in clang.
No expected behavior change.
https://reviews.llvm.org/D45165
llvm-svn: 329698
Diffstat (limited to 'clang/lib/Basic/FileManager.cpp')
-rw-r--r-- | clang/lib/Basic/FileManager.cpp | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index a3e226d..54cd0b0 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -534,23 +534,9 @@ StringRef FileManager::getCanonicalName(const DirectoryEntry *Dir) { StringRef CanonicalName(Dir->getName()); -#ifdef LLVM_ON_UNIX - char CanonicalNameBuf[PATH_MAX]; - if (realpath(Dir->getName().str().c_str(), CanonicalNameBuf)) + SmallString<PATH_MAX> CanonicalNameBuf; + if (!llvm::sys::fs::real_path(Dir->getName(), CanonicalNameBuf)) CanonicalName = StringRef(CanonicalNameBuf).copy(CanonicalNameStorage); -#else - SmallString<256> CanonicalNameBuf(CanonicalName); - llvm::sys::fs::make_absolute(CanonicalNameBuf); - llvm::sys::path::native(CanonicalNameBuf); - // We've run into needing to remove '..' here in the wild though, so - // remove it. - // On Windows, symlinks are significantly less prevalent, so removing - // '..' is pretty safe. - // Ideally we'd have an equivalent of `realpath` and could implement - // sys::fs::canonical across all the platforms. - llvm::sys::path::remove_dots(CanonicalNameBuf, /* remove_dot_dot */ true); - CanonicalName = StringRef(CanonicalNameBuf).copy(CanonicalNameStorage); -#endif CanonicalDirNames.insert(std::make_pair(Dir, CanonicalName)); return CanonicalName; |