]> git.mxchange.org Git - simgear.git/blobdiff - simgear/misc/sg_path.cxx
Terrasync: make whitespace in pathnames work under windows
[simgear.git] / simgear / misc / sg_path.cxx
index 0de0d925c514da478da55052bb62b5186d35eb26..20dd4fbcea2c4400efcfc64fc6d78b69f1078a2b 100644 (file)
@@ -212,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;
@@ -358,3 +361,25 @@ bool SGPath::isAbsolute() const
   
   return (path[0] == sgDirPathSep);
 }
+
+bool SGPath::isNull() const
+{
+  return path.empty() || (path == "");
+}
+
+std::string SGPath::str_native() const
+{
+#ifdef _WIN32
+    std::string s = str();
+    std::string::size_type pos;
+    std::string nativeSeparator;
+    nativeSeparator = sgDirPathSepBad;
+
+    while( (pos=s.find( sgDirPathSep )) != std::string::npos ) {
+        s.replace( pos, 1, nativeSeparator );
+    }
+    return s;
+#else
+    return str();
+#endif
+}