Fix run-time on FreeBSD in get_executable_path()

Corrected the path to the currently running executable.
This commit is contained in:
Yuri Victorovich 2024-12-22 15:52:33 -08:00
parent 7c0e285858
commit a68c7eeec5

View file

@ -402,12 +402,16 @@ static std::string get_executable_path() {
base_path = base_path.substr(0, last_slash); base_path = base_path.substr(0, last_slash);
} }
return base_path + "/"; return base_path + "/";
#elif defined(__linux__) #elif defined(__linux__) || defined(__FreeBSD__)
std::string base_path = "."; std::string base_path = ".";
std::vector<char> path(1024); std::vector<char> path(1024);
while (true) { while (true) {
// get executable path // get executable path
# if defined(__linux__)
ssize_t len = readlink("/proc/self/exe", path.data(), path.size()); ssize_t len = readlink("/proc/self/exe", path.data(), path.size());
# elif defined(__FreeBSD__)
ssize_t len = readlink("/proc/curproc/file", path.data(), path.size());
# endif
if (len == -1) { if (len == -1) {
break; break;
} }