]> git.mxchange.org Git - simgear.git/commitdiff
Geoff McLane: realpath for Windows using _fullpath.
authorThorstenB <brehmt@gmail.com>
Sun, 11 Nov 2012 18:26:51 +0000 (19:26 +0100)
committerThorstenB <brehmt@gmail.com>
Sun, 11 Nov 2012 18:26:51 +0000 (19:26 +0100)
Also switch cygwin to use POSIX call.

simgear/misc/sg_path.cxx

index f46f7ac4909b2e5edda66b7fec0b80ef874d0b2e..e9ae0a01d6eab9a1f028b65c0a9866ed71930e71 100644 (file)
@@ -485,14 +485,18 @@ bool SGPath::rename(const SGPath& newName)
 
 std::string SGPath::realpath() const
 {
-#if defined(_WIN32) || (defined(__APPLE__) && MAC_OS_X_VERSION_MAX_ALLOWED <= 1050)
-    // Not implemented for Windows yet. Return original path instead.
-
+#if (defined(__APPLE__) && MAC_OS_X_VERSION_MAX_ALLOWED <= 1050)
     // Workaround for Mac OS 10.5. Somehow fgfs crashes on Mac at ::realpath. 
-    // simply returning path works on Mac since absolute path is passed from the GUI launcher
+    // This means relative paths cannot be used on Mac OS <= 10.5
     return path;
 #else
+  #if defined(_MSC_VER)
+    // with absPath NULL, will allocate, and ignore length
+    char *buf = _fullpath( NULL, path.c_str(), _MAX_PATH );
+  #else
+    // POSIX
     char* buf = ::realpath(path.c_str(), NULL);
+  #endif
     if (!buf)
     {
         SG_LOG(SG_IO, SG_ALERT, "ERROR: The path '" << path << "' does not exist in the file system.");
@@ -503,4 +507,3 @@ std::string SGPath::realpath() const
     return p;
 #endif
 }
-