Support/PathV2: Cleanup separator handling.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 7 Dec 2010 03:57:48 +0000 (03:57 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 7 Dec 2010 03:57:48 +0000 (03:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121110 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/PathV2.cpp

index cd9ff21d6e9cb7007e86146a69c77227eba52d3a..728f036023094ec5c21159fd8906796f7bceb129 100644 (file)
@@ -31,7 +31,7 @@ namespace {
 
 #ifdef LLVM_ON_WIN32
   const StringRef separators = "\\/";
-  const char       prefered_separator = '\\';
+  const char      prefered_separator = '\\';
 #else
   const StringRef separators = "/";
   const char      prefered_separator = '/';
@@ -50,16 +50,19 @@ namespace {
     if (path.empty())
       return path;
 
+#ifdef LLVM_ON_WIN32
     // C:
     if (path.size() >= 2 && std::isalpha(path[0]) && path[1] == ':')
       return StringRef(path.begin(), 2);
+#endif
 
     // //net
     if ((path.size() > 2) &&
-        (path.startswith("\\\\") || path.startswith("//")) &&
-        (path[2] != '\\' && path[2] != '/')) {
+        is_separator(path[0]) &&
+        path[0] == path[1] &&
+        !is_separator(path[2])) {
       // Find the next directory separator.
-      size_t end = path.find_first_of("\\/", 2);
+      size_t end = path.find_first_of(separators, 2);
       if (end == StringRef::npos)
         return path;
       else
@@ -67,7 +70,7 @@ namespace {
     }
 
     // {/,\}
-    if (path[0] == '\\' || path[0] == '/')
+    if (is_separator(path[0]))
       return StringRef(path.begin(), 1);
 
     if (path.startswith(".."))
@@ -77,7 +80,7 @@ namespace {
       return StringRef(path.begin(), 1);
 
     // * {file,directory}name
-    size_t end = path.find_first_of("\\/", 2);
+    size_t end = path.find_first_of(separators, 2);
     if (end == StringRef::npos)
       return path;
     else
@@ -89,7 +92,7 @@ namespace {
   size_t filename_pos(const StringRef &str) {
     if (str.size() == 2 &&
         is_separator(str[0]) &&
-        is_separator(str[1]))
+        str[0] == str[1])
       return 0;
 
     if (str.size() > 0 && is_separator(str[str.size() - 1]))