Portability fixes for OpenBSD (and possibly NetBSD and others).
authorAaron Suen <warr1024@gmail.com>
Sun, 25 Aug 2013 16:19:31 +0000 (12:19 -0400)
committerShadowNinja <shadowninja@minetest.net>
Sat, 2 Nov 2013 17:41:26 +0000 (13:41 -0400)
src/porting.cpp

index 84df15b3093d166670a3b268e6c2354ad899989f..a080a44e5bb5cbae1944003fad47779f1f1ff61e 100644 (file)
@@ -373,8 +373,13 @@ void initializePaths()
        //TODO: Get path of executable. This assumes working directory is bin/
        dstream<<"WARNING: Relative path not properly supported on this platform"
                        <<std::endl;
-       path_share = std::string("..");
-       path_user = std::string("..");
+
+       /* scriptapi no longer allows paths that start with "..", so assuming that
+          the current working directory is bin/, strip off the last component. */
+       char *cwd = getcwd(NULL, 0);
+       pathRemoveFile(cwd, '/');
+       path_share = std::string(cwd);
+       path_user = std::string(cwd);
 
        #endif
 
@@ -477,7 +482,7 @@ void initializePaths()
 
        path_user = std::string(getenv("HOME")) + "/Library/Application Support/" + PROJECT_NAME;
 
-       #elif defined(__FreeBSD__)
+       #else // FreeBSD, and probably many other POSIX-like systems.
 
        path_share = STATIC_SHAREDIR;
        path_user = std::string(getenv("HOME")) + "/." + PROJECT_NAME;