diff --git a/include/llvm/System/Path.h b/include/llvm/System/Path.h index d28e11e5456..de2f173ae41 100644 --- a/include/llvm/System/Path.h +++ b/include/llvm/System/Path.h @@ -459,6 +459,10 @@ namespace sys { /// @brief Make the current path name unique in the file system. bool makeUnique( bool reuse_current /*= true*/, std::string* ErrMsg ); + /// The current Path name is made absolute by prepending the + /// current working directory if necessary. + void makeAbsolute(); + /// @} /// @name Disk Mutators /// @{ diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp index c5a4b0676ff..4c965db7223 100644 --- a/lib/System/Path.cpp +++ b/lib/System/Path.cpp @@ -207,6 +207,18 @@ bool Path::hasMagicNumber(const std::string &Magic) const { return false; } +void Path::makeAbsolute() { + if (isAbsolute()) + return; + + Path CWD = Path::GetCurrentDirectory(); + assert(CWD.isAbsolute() && "GetCurrentDirectory returned relative path!"); + + CWD.appendComponent(path); + + path = CWD.toString(); +} + static void getPathList(const char*path, std::vector& Paths) { const char* at = path; const char* delim = strchr(at, PathSeparator);