]> git.mxchange.org Git - simgear.git/commitdiff
#199: ADd method to return the absolute (real) path.
authorThorstenB <brehmt@gmail.com>
Thu, 12 Jan 2012 20:44:15 +0000 (21:44 +0100)
committerThorstenB <brehmt@gmail.com>
Thu, 12 Jan 2012 20:44:15 +0000 (21:44 +0100)
simgear/misc/sg_path.cxx
simgear/misc/sg_path.hxx

index 92a16945db57bd94b6d8bdefdebc8df3e2a2ca27..e4b3cbf963500744fbed8994bef83f1b3f3458a4 100644 (file)
@@ -109,7 +109,7 @@ SGPath::SGPath(const SGPath& p) :
   _modTime(p._modTime)
 {
 }
-    
+
 SGPath& SGPath::operator=(const SGPath& p)
 {
   path = p.path;
@@ -142,12 +142,12 @@ void SGPath::set_cached(bool cached)
 // append another piece to the existing path
 void SGPath::append( const string& p ) {
     if ( path.size() == 0 ) {
-    path = p;
+        path = p;
     } else {
     if ( p[0] != sgDirPathSep ) {
         path += sgDirPathSep;
     }
-    path += p;
+        path += p;
     }
     fix();
     _cached = false;
@@ -163,9 +163,9 @@ void SGPath::add( const string& p ) {
 // path separator
 void SGPath::concat( const string& p ) {
     if ( path.size() == 0 ) {
-    path = p;
+        path = p;
     } else {
-    path += p;
+        path += p;
     }
     fix();
     _cached = false;
@@ -483,3 +483,16 @@ bool SGPath::rename(const SGPath& newName)
     return true;
 }
 
+std::string SGPath::realpath() const
+{
+#ifdef _WIN32
+    // Not implemented for Windows yet. Return original path instead.
+    return path;
+#else
+    char* buf = ::realpath(path.c_str(), NULL);
+    std::string p(buf);
+    free(buf);
+    return p;
+#endif
+}
+
index 969eec0bfc124d88c0c18ac052979047584a06fd..1f9dfbe706c4d3a0d663001e4d977d5446be907a 100644 (file)
@@ -111,6 +111,12 @@ public:
      */
     void concat( const std::string& p );
 
+    /**
+     * Returns a string with the absolute pathname that names the same file, whose
+     * resolution does not involve '.', '..', or symbolic links.
+     */
+    std::string realpath() const;
+
     /**
      * Get the file part of the path (everything after the last path sep)
      * @return file string