mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Add a simple routine to determine the typical system directory for
temporary data. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139725 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bf841cf336
commit
55cf815e19
@ -187,7 +187,7 @@ const StringRef root_name(StringRef path);
|
||||
/// @result The root directory of \a path if it has one, otherwise
|
||||
/// "".
|
||||
const StringRef root_directory(StringRef path);
|
||||
|
||||
|
||||
/// @brief Get root path.
|
||||
///
|
||||
/// Equivalent to root_name + root_directory.
|
||||
@ -264,6 +264,14 @@ const StringRef extension(StringRef path);
|
||||
/// @result true if \a value is a path separator character on the host OS
|
||||
bool is_separator(char value);
|
||||
|
||||
/// @brief Get the typical temporary directory for the system, e.g.,
|
||||
/// "/var/tmp" or "C:/TEMP"
|
||||
///
|
||||
/// @param erasedOnReboot Whether to favor a path that is erased on reboot
|
||||
/// rather than one that potentially persists longer.
|
||||
/// @param Result Holds the resulting path name.
|
||||
void system_temp_directory(bool erasedOnReboot, SmallVectorImpl<char> &result);
|
||||
|
||||
/// @brief Has root name?
|
||||
///
|
||||
/// root_name != ""
|
||||
|
@ -490,6 +490,36 @@ bool is_separator(char value) {
|
||||
}
|
||||
}
|
||||
|
||||
void system_temp_directory(bool erasedOnReboot, SmallVectorImpl<char> &result) {
|
||||
result.clear();
|
||||
|
||||
// Check whether the temporary directory is specified by an environment
|
||||
// variable.
|
||||
const char *EnvironmentVariable;
|
||||
#ifdef LLVM_ON_WIN32
|
||||
EnvironmentVariable = "TEMP";
|
||||
#else
|
||||
EnvironmentVariable = "TMPDIR";
|
||||
#endif
|
||||
if (char *RequestedDir = getenv(EnvironmentVariable)) {
|
||||
result.append(RequestedDir, RequestedDir + strlen(RequestedDir));
|
||||
return;
|
||||
}
|
||||
|
||||
// Fall back to a system default.
|
||||
const char *DefaultResult;
|
||||
#ifdef LLVM_ON_WIN32
|
||||
(void)erasedOnReboot;
|
||||
DefaultResult = "C:\TEMP";
|
||||
#else
|
||||
if (erasedOnReboot)
|
||||
DefaultResult = "/tmp";
|
||||
else
|
||||
DefaultResult = "/var/tmp";
|
||||
#endif
|
||||
result.append(DefaultResult, DefaultResult + strlen(DefaultResult));
|
||||
}
|
||||
|
||||
bool has_root_name(const Twine &path) {
|
||||
SmallString<128> path_storage;
|
||||
StringRef p = path.toStringRef(path_storage);
|
||||
|
Loading…
Reference in New Issue
Block a user