5 const char* vm_executable_path() {
8 // readlink is called in a loop with increasing buffer sizes in case
9 // someone tries to run Factor from a incredibly deeply nested
12 char* buf = new char[bufsiz + 1];
13 ssize_t size= readlink("/proc/self/exe", buf, bufsiz);
15 fatal_error("Cannot read /proc/self/exe", errno);
18 // Buffer was large enough, return string.
20 const char* ret = safe_strdup(buf);
24 // Buffer wasn't big enough, double it and try again.