From 2635ddcbf5302b803f5aefecdf14b0ad2d625337 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 3 Dec 2010 17:48:17 +0000 Subject: [PATCH] * embryo: fix binary path detection on MacOsX. SVN revision: 55208 --- legacy/embryo/src/bin/embryo_cc_prefix.c | 34 ++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/legacy/embryo/src/bin/embryo_cc_prefix.c b/legacy/embryo/src/bin/embryo_cc_prefix.c index 028376d434..2f24a5abd0 100644 --- a/legacy/embryo/src/bin/embryo_cc_prefix.c +++ b/legacy/embryo/src/bin/embryo_cc_prefix.c @@ -29,6 +29,10 @@ # include #endif /* ! HAVE_EVIL */ +#ifdef __MacOSX__ +# include +#endif + #include "embryo_cc_prefix.h" /* local subsystem functions */ @@ -36,6 +40,9 @@ static int _e_prefix_share_hunt(void); static int _e_prefix_fallbacks(void); static int _e_prefix_try_proc(void); static int _e_prefix_try_argv(char *argv0); +#ifdef __MacOSX__ +static int _e_prefix_try_dyld(void); +#endif /* local subsystem globals */ static char *_exe_path = NULL; @@ -89,8 +96,16 @@ e_prefix_determine(char *argv0) { if (!_e_prefix_try_argv(argv0)) { - _e_prefix_fallbacks(); - return 0; +#ifdef __MacOSX__ + if (!_e_prefix_try_dyld()) + { +#endif + _e_prefix_fallbacks(); + return 0; +#ifdef __MacOSX__ + } +#endif + } } /* _exe_path is now a full absolute path TO this exe - figure out rest */ @@ -313,6 +328,21 @@ _e_prefix_fallbacks(void) return 1; } +#ifdef __MacOSX__ +static int +_e_prefix_try_dyld(void) +{ + char path[PATH_MAX]; + uint32_t size = sizeof (path); + + if (_NSGetExecutablePath(path, &size) != 0) + return 0; + + _exe_path = strdup(path); + return 1; +} +#endif + static int _e_prefix_try_proc(void) {