From c296d1fbe1b551c7cf7c159a03c9198592dbae73 Mon Sep 17 00:00:00 2001
From: Damjan Jovanovic <damjan.jov@gmail.com>
Date: Sun, 3 Jun 2012 12:26:30 +0200
Subject: [PATCH] libwine: Improve bin directory detection on FreeBSD.

---
 libs/wine/config.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/libs/wine/config.c b/libs/wine/config.c
index 035c2685347..031850b5dc7 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -53,6 +53,12 @@ static void fatal_error( const char *err, ... )  __attribute__((noreturn,format(
 static void fatal_perror( const char *err, ... )  __attribute__((noreturn,format(printf,1,2)));
 #endif
 
+#ifdef __linux__
+#define EXE_LINK "/proc/self/exe"
+#elif defined (__FreeBSD__)
+#define EXE_LINK "/proc/curproc/file"
+#endif
+
 /* die on a fatal error */
 static void fatal_error( const char *err, ... )
 {
@@ -151,12 +157,12 @@ static char *get_runtime_bindir( const char *argv0 )
     char *p, *bindir, *cwd;
     int len, size;
 
-#ifdef linux
+#ifdef EXE_LINK
     for (size = 256; ; size *= 2)
     {
         int ret;
         if (!(bindir = malloc( size ))) break;
-        if ((ret = readlink( "/proc/self/exe", bindir, size )) == -1) break;
+        if ((ret = readlink( EXE_LINK, bindir, size )) == -1) break;
         if (ret != size)
         {
             if (!(p = memrchr( bindir, '/', ret ))) break;
-- 
GitLab