forked from OSchip/llvm-project
[ModuleDependencyCollector] Use llvm::sys::fs::real_path (NFC)
Use the real_path implementation from llvm::sys::fs::real_path instead of having a custom implementation in the ModuleDependencyCollector. Differential revision: https://reviews.llvm.org/D57411 llvm-svn: 352605
This commit is contained in:
parent
5c0751ec3e
commit
77bc735516
|
@ -98,24 +98,6 @@ struct ModuleDependencyMMCallbacks : public ModuleMapCallbacks {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: move this to Support/Path.h and check for HAVE_REALPATH?
|
|
||||||
static bool real_path(StringRef SrcPath, SmallVectorImpl<char> &RealPath) {
|
|
||||||
#ifdef LLVM_ON_UNIX
|
|
||||||
char CanonicalPath[PATH_MAX];
|
|
||||||
|
|
||||||
// TODO: emit a warning in case this fails...?
|
|
||||||
if (!realpath(SrcPath.str().c_str(), CanonicalPath))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SmallString<256> RPath(CanonicalPath);
|
|
||||||
RealPath.swap(RPath);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
// FIXME: Add support for systems without realpath.
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModuleDependencyCollector::attachToASTReader(ASTReader &R) {
|
void ModuleDependencyCollector::attachToASTReader(ASTReader &R) {
|
||||||
R.addListener(llvm::make_unique<ModuleDependencyListener>(*this));
|
R.addListener(llvm::make_unique<ModuleDependencyListener>(*this));
|
||||||
}
|
}
|
||||||
|
@ -130,7 +112,7 @@ void ModuleDependencyCollector::attachToPreprocessor(Preprocessor &PP) {
|
||||||
static bool isCaseSensitivePath(StringRef Path) {
|
static bool isCaseSensitivePath(StringRef Path) {
|
||||||
SmallString<256> TmpDest = Path, UpperDest, RealDest;
|
SmallString<256> TmpDest = Path, UpperDest, RealDest;
|
||||||
// Remove component traversals, links, etc.
|
// Remove component traversals, links, etc.
|
||||||
if (!real_path(Path, TmpDest))
|
if (llvm::sys::fs::real_path(Path, TmpDest))
|
||||||
return true; // Current default value in vfs.yaml
|
return true; // Current default value in vfs.yaml
|
||||||
Path = TmpDest;
|
Path = TmpDest;
|
||||||
|
|
||||||
|
@ -140,7 +122,7 @@ static bool isCaseSensitivePath(StringRef Path) {
|
||||||
// already expects when sensitivity isn't setup.
|
// already expects when sensitivity isn't setup.
|
||||||
for (auto &C : Path)
|
for (auto &C : Path)
|
||||||
UpperDest.push_back(toUppercase(C));
|
UpperDest.push_back(toUppercase(C));
|
||||||
if (real_path(UpperDest, RealDest) && Path.equals(RealDest))
|
if (!llvm::sys::fs::real_path(UpperDest, RealDest) && Path.equals(RealDest))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -186,7 +168,7 @@ bool ModuleDependencyCollector::getRealPath(StringRef SrcPath,
|
||||||
// Computing the real path is expensive, cache the search through the
|
// Computing the real path is expensive, cache the search through the
|
||||||
// parent path directory.
|
// parent path directory.
|
||||||
if (DirWithSymLink == SymLinkMap.end()) {
|
if (DirWithSymLink == SymLinkMap.end()) {
|
||||||
if (!real_path(Dir, RealPath))
|
if (llvm::sys::fs::real_path(Dir, RealPath))
|
||||||
return false;
|
return false;
|
||||||
SymLinkMap[Dir] = RealPath.str();
|
SymLinkMap[Dir] = RealPath.str();
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue