]> git.mxchange.org Git - simgear.git/blobdiff - simgear/misc/sg_path.cxx
Add mipmap.* to the unix build system
[simgear.git] / simgear / misc / sg_path.cxx
index fc6856dd5c503da78cdbebd5c99241ca0da5a331..73475b0c6d73654f6732e477bede035db156a30d 100644 (file)
@@ -86,6 +86,15 @@ SGPath::SGPath( const std::string& p )
     fix();
 }
 
+// create a path based on "path" and a "subpath"
+SGPath::SGPath( const SGPath& p, const std::string& r )
+    : path(p.path),
+    _cached(false)
+{
+    append(r);
+    fix();
+}
+
 SGPath::SGPath(const SGPath& p) :
   path(p.path),
   _cached(p._cached),
@@ -207,8 +216,8 @@ void SGPath::validate() const
     _exists = false;
   } else {
     _exists = true;
-    _isFile = ((S_IFREG & buf.st_mode ) !=0)
-    _isDir = ((S_IFDIR & buf.st_mode ) !=0)
+    _isFile = ((S_IFREG & buf.st_mode ) !=0);
+    _isDir = ((S_IFDIR & buf.st_mode ) !=0);
   }
 
 #else
@@ -331,3 +340,26 @@ string_list sgPathSplit( const string &search_path ) {
 
     return result;
 }
+
+bool SGPath::isAbsolute() const
+{
+  if (path.empty()) {
+    return false;
+  }
+  
+#ifdef _WIN32
+  // detect '[A-Za-z]:/'
+  if (path.size() > 2) {
+    if (isalpha(path[0]) && (path[1] == ':') && (path[2] == sgDirPathSep)) {
+      return true;
+    }
+  }
+#endif
+  
+  return (path[0] == sgDirPathSep);
+}
+
+bool SGPath::isNull() const
+{
+  return path.empty() || (path == "");
+}