summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-03-11 22:05:42 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-03-11 22:05:42 +0000
commitafc50b3ed4b97d9060d9d56fde840217875492a6 (patch)
tree583481e05c6329f8e54aef7772cbbba3ca77b200 /llvm/lib
parent3b83496dd40aab5c18461dc2f2c986f012fb98db (diff)
downloadbcm5719-llvm-afc50b3ed4b97d9060d9d56fde840217875492a6.tar.gz
bcm5719-llvm-afc50b3ed4b97d9060d9d56fde840217875492a6.zip
support: add a utility function to normalise path separators
Add a utility function to convert the Windows path separator to Unix style path separators. This is used by a subsequent change in clang to enable the use of Windows SDK headers on Linux. llvm-svn: 203611
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Support/Unix/Path.inc13
-rw-r--r--llvm/lib/Support/Windows/Path.inc5
2 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc
index 2b29baca738..500b7fecb74 100644
--- a/llvm/lib/Support/Unix/Path.inc
+++ b/llvm/lib/Support/Unix/Path.inc
@@ -272,6 +272,19 @@ error_code create_directory(const Twine &path, bool IgnoreExisting) {
return error_code::success();
}
+error_code normalize_separators(SmallVectorImpl<char> &Path) {
+ for (auto PI = Path.begin(), PE = Path.end(); PI < PE; ++PI) {
+ if (*PI == '\\') {
+ auto PN = PI + 1;
+ if (PN < PE && *PN == '\\')
+ ++PI; // increment once, the for loop will move over the escaped slash
+ else
+ *PI = '/';
+ }
+ }
+ return error_code::success();
+}
+
// Note that we are using symbolic link because hard links are not supported by
// all filesystems (SMB doesn't).
error_code create_link(const Twine &to, const Twine &from) {
diff --git a/llvm/lib/Support/Windows/Path.inc b/llvm/lib/Support/Windows/Path.inc
index a555f3e794e..e59888e3858 100644
--- a/llvm/lib/Support/Windows/Path.inc
+++ b/llvm/lib/Support/Windows/Path.inc
@@ -158,6 +158,11 @@ error_code create_directory(const Twine &path, bool IgnoreExisting) {
return error_code::success();
}
+error_code normalize_separators(SmallVectorImpl<char> &Path) {
+ (void) Path;
+ return error_code::success();
+}
+
// We can't use symbolic links for windows.
error_code create_link(const Twine &to, const Twine &from) {
// Get arguments.
OpenPOWER on IntegriCloud