qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v20 11/11] oslib: port qemu_init_exec_dir to Darwin


From: Fam Zheng
Subject: [Qemu-devel] [PATCH v20 11/11] oslib: port qemu_init_exec_dir to Darwin
Date: Mon, 10 Feb 2014 14:49:01 +0800

Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
---
 util/oslib-posix.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index c2eeb4f..3214e44 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -59,6 +59,12 @@ extern int daemon(int, int);
 #include <sys/mman.h>
 #include <libgen.h>
 
+/* Get declaration of _NSGetExecutablePath on MacOS X 10.2 or newer.  */
+#if defined(__APPLE__) && defined(__MACH__)
+#define ENUM_DYLD_BOOL
+#include <mach-o/dyld.h>
+#endif
+
 #ifdef CONFIG_LINUX
 #include <sys/syscall.h>
 #endif
@@ -307,6 +313,15 @@ void qemu_init_exec_dir(const char *argv0)
             p = buf;
         }
     }
+#elif defined(__APPLE__) && defined(__MACH__)
+    {
+        char result[PATH_MAX];
+        uint32_t length = PATH_MAX;
+        if (_NSGetExecutablePath(result, &length) != 0 || result[0] != '/') {
+            return;
+        }
+        p = realpath(result, buf);
+    }
 #endif
     /* If we don't have any way of figuring out the actual executable
        location then try argv[0].  */
-- 
1.8.5.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]