Introduce llvm::sys::path::home_directory.

This will be used by the line editor library to derive a default path to
the history file.

Differential Revision: http://llvm-reviews.chandlerc.com/D2199

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200594 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Peter Collingbourne
2014-01-31 23:46:06 +00:00
parent f10743d765
commit bef2236283
4 changed files with 51 additions and 0 deletions

View File

@@ -797,5 +797,20 @@ error_code openFileForWrite(const Twine &Name, int &ResultFD,
}
} // end namespace fs
namespace path {
bool home_directory(SmallVectorImpl<char> &result) {
if (char *RequestedDir = getenv("HOME")) {
result.clear();
result.append(RequestedDir, RequestedDir + strlen(RequestedDir));
return true;
}
return false;
}
} // end namespace path
} // end namespace sys
} // end namespace llvm

View File

@@ -19,6 +19,7 @@
#include "llvm/ADT/STLExtras.h"
#include <fcntl.h>
#include <io.h>
#include <shlobj.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -1063,6 +1064,22 @@ error_code openFileForWrite(const Twine &Name, int &ResultFD,
}
} // end namespace fs
namespace path {
bool home_directory(SmallVectorImpl<char> &result) {
wchar_t Path[MAX_PATH];
if (::SHGetFolderPathW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, 0,
SHGFP_TYPE_CURRENT, Path) != S_OK)
return false;
if (UTF16ToUTF8(Path, ::wcslen(Path), result))
return false;
return true;
}
} // end namespace path
namespace windows {
llvm::error_code UTF8ToUTF16(llvm::StringRef utf8,
llvm::SmallVectorImpl<wchar_t> &utf16) {