execute the correct server path and use the exepath for application root rather than the cwd

This commit is contained in:
Konstantin Käfer
2015-01-23 02:54:20 -08:00
committed by Konstantin Käfer
parent 1c91f09fda
commit 6f349a796c
3 changed files with 18 additions and 6 deletions

View File

@@ -1,14 +1,28 @@
#include <mbgl/platform/platform.hpp>
#include <mbgl/util/uv.hpp>
#include <uv.h>
#include <libgen.h>
namespace mbgl {
namespace platform {
// Returns the path to the root folder of the application.
const std::string &applicationRoot() {
static const std::string root = uv::cwd();
static const std::string root = []() -> std::string {
size_t max = 0;
std::string dir;
do {
// Gradually increase the length of the string in case the path was truncated.
max += 256;
dir.resize(max);
uv_exepath(const_cast<char *>(dir.data()), &max);
} while (max == dir.size());
dir.resize(max - 1);
dir = dirname(const_cast<char *>(dir.c_str()));
return dir;
}();
return root;
}
}
}