]> git.mxchange.org Git - simgear.git/commitdiff
realpath returns a path, not a string.
authorJames Turner <zakalawe@mac.com>
Mon, 4 Jul 2016 08:04:46 +0000 (09:04 +0100)
committerRoland Haeder <roland@mxchange.org>
Sat, 13 Aug 2016 08:21:16 +0000 (10:21 +0200)
simgear/misc/sg_path.cxx
simgear/misc/sg_path.hxx

index d504e411b7948c1946d2c9391beb6a923c2ca53e..ffc2641a26c9a08c4ba702e21de06721c7df55f8 100644 (file)
@@ -927,7 +927,7 @@ SGPath SGPath::documents(const SGPath& def)
 }
 
 //------------------------------------------------------------------------------
-std::string SGPath::realpath() const
+SGPath SGPath::realpath() const
 {
 #if defined(_MSC_VER) /*for MS compilers */ || defined(_WIN32) /*needed for non MS windows compilers like MingW*/
     // with absPath NULL, will allocate, and ignore length
@@ -947,21 +947,16 @@ std::string SGPath::realpath() const
             this_dir = "/";
         }
         if (file() == "..") {
-            this_dir = SGPath(SGPath(this_dir).realpath()).dir();
+            this_dir = SGPath(this_dir).realpath().dir();
             if (this_dir.empty()) { // invalid path: .. above root
-                return "";
+                return SGPath();
             }
             return SGPath(this_dir).realpath(); // use native path separator,
                         // and handle 'existing/nonexisting/../symlink' paths
         }
-        return SGPath(this_dir).realpath() +
-#if defined(_MSC_VER) || defined(_WIN32)
-          "\\" + file();
-#else
-          "/" + file();
-#endif
+        return SGPath(this_dir).realpath() / file();
     }
-    std::string p(buf);
+    SGPath p(SGPath::fromLocal8Bit(buf));
     free(buf);
     return p;
 }
index 815960d7ee7acbab4889d1d18176650564b2484d..f30b6a4b0c0d18e8313eebec39548beebc9716cc 100644 (file)
@@ -131,10 +131,10 @@ public:
     void concat( const std::string& p );
 
     /**
-     * Returns a string with the absolute pathname that names the same file, whose
+     * Returns a path with the absolute pathname that names the same file, whose
      * resolution does not involve '.', '..', or symbolic links.
      */
-    std::string realpath() const;
+    SGPath realpath() const;
 
     /**
      * Get the file part of the path (everything after the last path sep)