summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2014-01-31 23:46:06 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2014-01-31 23:46:06 +0000
commitf7d4101156fd3f5c034edde12adb1eabde07cef5 (patch)
tree60588c0ce040d7da898098d0a53f502487b63bda /llvm/lib/Support
parentdfbed59cc26a0918d5bf1dade19f6c95b64581e0 (diff)
downloadbcm5719-llvm-f7d4101156fd3f5c034edde12adb1eabde07cef5.tar.gz
bcm5719-llvm-f7d4101156fd3f5c034edde12adb1eabde07cef5.zip
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 llvm-svn: 200594
Diffstat (limited to 'llvm/lib/Support')
-rw-r--r--llvm/lib/Support/Unix/Path.inc15
-rw-r--r--llvm/lib/Support/Windows/Path.inc17
2 files changed, 32 insertions, 0 deletions
diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc
index d5260424616..d0b63b5ba5c 100644
--- a/llvm/lib/Support/Unix/Path.inc
+++ b/llvm/lib/Support/Unix/Path.inc
@@ -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
diff --git a/llvm/lib/Support/Windows/Path.inc b/llvm/lib/Support/Windows/Path.inc
index 4ef7285801a..e218fa2e726 100644
--- a/llvm/lib/Support/Windows/Path.inc
+++ b/llvm/lib/Support/Windows/Path.inc
@@ -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) {
OpenPOWER on IntegriCloud