execute the correct server path and use the exepath for application root rather than the cwd
This commit is contained in:
committed by
Konstantin Käfer
parent
1c91f09fda
commit
6f349a796c
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user