mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Refactor the code in clang to find a file in a PATH like environment variable into a helper function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212057 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a0d04ac9f1
commit
eb73cf671b
@ -171,6 +171,13 @@ public:
|
||||
// string. \arg Name is assumed to be in UTF-8 encoding too.
|
||||
static Optional<std::string> GetEnv(StringRef name);
|
||||
|
||||
/// This function searches for an existing file in the list of directories
|
||||
/// in a PATH like environment variable, and returns the first file found,
|
||||
/// according to the order of the entries in the PATH like environment
|
||||
/// variable.
|
||||
static Optional<std::string> FindInEnvPath(const std::string& EnvName,
|
||||
const std::string& FileName);
|
||||
|
||||
/// This function returns a SmallVector containing the arguments passed from
|
||||
/// the operating system to the program. This function expects to be handed
|
||||
/// the vector passed in from main.
|
||||
|
@ -11,9 +11,12 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/Process.h"
|
||||
#include "llvm/Support/Program.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace sys;
|
||||
@ -66,6 +69,33 @@ TimeValue self_process::get_wall_time() const {
|
||||
return getElapsedWallTime();
|
||||
}
|
||||
|
||||
Optional<std::string> Process::FindInEnvPath(const std::string& EnvName,
|
||||
const std::string& FileName)
|
||||
{
|
||||
Optional<std::string> FoundPath;
|
||||
Optional<std::string> OptPath = Process::GetEnv(EnvName);
|
||||
if (!OptPath.hasValue())
|
||||
return FoundPath;
|
||||
|
||||
const char EnvPathSeparatorStr[] = {EnvPathSeparator, '\0'};
|
||||
SmallVector<StringRef, 8> Dirs;
|
||||
SplitString(OptPath.getValue(), Dirs, EnvPathSeparatorStr);
|
||||
|
||||
for (const auto &Dir : Dirs) {
|
||||
if (Dir.empty())
|
||||
continue;
|
||||
|
||||
SmallString<128> FilePath(Dir);
|
||||
path::append(FilePath, FileName);
|
||||
if (fs::exists(Twine(FilePath))) {
|
||||
FoundPath = FilePath.str();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FoundPath;
|
||||
}
|
||||
|
||||
|
||||
#define COLOR(FGBG, CODE, BOLD) "\033[0;" BOLD FGBG CODE "m"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user