Browse Source

ENH: Added FileIsFullPath test method.

Brad King 23 years ago
parent
commit
0815091e26
2 changed files with 36 additions and 0 deletions
  1. 33 0
      Source/cmSystemTools.cxx
  2. 3 0
      Source/cmSystemTools.h

+ 33 - 0
Source/cmSystemTools.cxx

@@ -1900,6 +1900,39 @@ cmSystemTools::GetFilenameWithoutLastExtension(const std::string& filename)
     }
 }
 
+bool cmSystemTools::FileIsFullPath(const char* in_name)
+{
+  std::string name = in_name;
+#if defined(_WIN32)
+  // On Windows, the name must be at least two characters long.
+  if(name.length() < 2)
+    {
+    return false;
+    }
+  if(name[1] == ':')
+    {
+    return true;
+    }
+  if(name[0] == '\\')
+    {
+    return true;
+    }
+#else
+  // On UNIX, the name must be at least one character long.
+  if(name.length() < 1)
+    {
+    return false;
+    }
+#endif
+  // On UNIX, the name must begin in a '/'.
+  // On Windows, if the name begins in a '/', then it is a full
+  // network path.
+  if(name[0] == '/')
+    {
+    return true;
+    }
+  return false;
+}
 
 void cmSystemTools::Glob(const char *directory, const char *regexp,
                          std::vector<std::string>& files)

+ 3 - 0
Source/cmSystemTools.h

@@ -258,6 +258,9 @@ public:
   ///! return file name without its last (shortest) extension.
   static std::string GetFilenameWithoutLastExtension(const std::string&);
   
+  /** Return whether the path represents a full path (not relative).  */
+  static bool FileIsFullPath(const char*);
+  
   static long int ModifiedTime(const char* filename);
 
   /**