From 404a72729be98fbc41051197e0c9bb1b48c28e94 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Tue, 11 Mar 2014 22:05:42 +0000 Subject: 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203611 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/Unix/Path.inc | 13 +++++++++++++ lib/Support/Windows/Path.inc | 5 +++++ 2 files changed, 18 insertions(+) (limited to 'lib/Support') diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc index 2b29baca73..500b7fecb7 100644 --- a/lib/Support/Unix/Path.inc +++ b/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 &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/lib/Support/Windows/Path.inc b/lib/Support/Windows/Path.inc index a555f3e794..e59888e385 100644 --- a/lib/Support/Windows/Path.inc +++ b/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 &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. -- cgit v1.2.3