]> git.mxchange.org Git - simgear.git/blobdiff - simgear/misc/sg_path.cxx
Add optional attribute condition to "copyProperties".
[simgear.git] / simgear / misc / sg_path.cxx
index 58772cdee9b261ff78a94fd3679bd71bd7c2df70..6e549f6d1702e652ff6a759b0b3aac01fa186644 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),
@@ -203,7 +212,10 @@ void SGPath::validate() const
 #ifdef _WIN32
   struct _stat buf ;
 
-  if (_stat (path.c_str(), &buf ) < 0) {
+  bool remove_trailing = false;
+  if ( path.length() > 1 && path[path.length()-1] == '/' )
+      remove_trailing=true;
+  if (_stat (path.substr(0,remove_trailing?path.length()-1:path.length()).c_str(), &buf ) < 0) {
     _exists = false;
   } else {
     _exists = true;
@@ -349,3 +361,8 @@ bool SGPath::isAbsolute() const
   
   return (path[0] == sgDirPathSep);
 }
+
+bool SGPath::isNull() const
+{
+  return path.empty() || (path == "");
+}