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