]> gitweb.factorcode.org Git - factor.git/blob - vm/os-freebsd.cpp
Use C++ namespaces
[factor.git] / vm / os-freebsd.cpp
1 #include "master.hpp"
2
3 namespace factor
4 {
5
6 /* From SBCL */
7 const char *vm_executable_path(void)
8 {
9         char path[PATH_MAX + 1];
10
11         if (getosreldate() >= 600024)
12         {
13                 /* KERN_PROC_PATHNAME is available */
14                 size_t len = PATH_MAX + 1;
15                 int mib[4];
16
17                 mib[0] = CTL_KERN;
18                 mib[1] = KERN_PROC;
19                 mib[2] = KERN_PROC_PATHNAME;
20                 mib[3] = -1;
21                 if (sysctl(mib, 4, &path, &len, NULL, 0) != 0)
22                         return NULL;
23         }
24         else
25         {
26                 int size;
27                 size = readlink("/proc/curproc/file", path, sizeof(path) - 1);
28                 if (size < 0)
29                         return NULL;
30                 path[size] = '\0';
31         }
32
33         if(strcmp(path, "unknown") == 0)
34                 return NULL;
35
36         return safe_strdup(path);
37 }
38
39 }