]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Fix getting exe name on FreeBSD, which hasn't used /proc for quite a while now
authorcloudwalk <cloudwalk@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 26 May 2020 14:17:44 +0000 (14:17 +0000)
committercloudwalk <cloudwalk@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 26 May 2020 14:17:44 +0000 (14:17 +0000)
From https://gitlab.com/xonotic/darkplaces/-/merge_requests/54

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@12587 d7cf8633-e32d-0410-b094-e92efae38249

sys_shared.c

index 5171b34efaa180ead097559b1e4f835efab6b6dc..0db4c03479474e7fd81432ecb3f708d9e546111c 100644 (file)
@@ -18,6 +18,9 @@
 #pragma comment(lib, "winmm.lib")
 #endif
 #else
+# ifdef __FreeBSD__
+#  include <sys/sysctl.h>
+# endif
 # include <unistd.h>
 # include <fcntl.h>
 # include <sys/time.h>
@@ -498,7 +501,12 @@ static const char *Sys_FindExecutableName(void)
        static char exenamebuf[MAX_OSPATH+1];
        ssize_t n = -1;
 #if defined(__FreeBSD__)
-       n = readlink("/proc/curproc/file", exenamebuf, sizeof(exenamebuf)-1);
+       int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
+       size_t exenamebuflen = sizeof(exenamebuf)-1;
+       if (sysctl(mib, 4, exenamebuf, &exenamebuflen, NULL, 0) == 0)
+       {
+               n = exenamebuflen;
+       }
 #elif defined(__linux__)
        n = readlink("/proc/self/exe", exenamebuf, sizeof(exenamebuf)-1);
 #endif