From 6dfb5aa6ac5c9432ad7a7b8bebda4916004051b6 Mon Sep 17 00:00:00 2001 From: knu Date: Thu, 17 Oct 2002 16:13:44 +0000 Subject: * hash.c, eval.c: Use (*_NSGetEnviron()) instead of environ on Darwin for namespace cleanness. [ruby-core:00537] * dln.c (dln_load): Fix Darwin support that has been disabled and switch to using it on Darwin instead of the system dlopen(). [ruby-core:00541] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ dln.c | 9 +++------ eval.c | 8 +++++++- hash.c | 9 +++++++++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d4464645f..f09985e3f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Fri Oct 18 01:02:44 2002 Akinori MUSHA + + * hash.c, eval.c: Use (*_NSGetEnviron()) instead of environ on + Darwin for namespace cleanness. [ruby-core:00537] + + * dln.c (dln_load): Fix Darwin support that has been disabled and + switch to using it on Darwin instead of the system dlopen(). + [ruby-core:00541] + Thu Oct 17 19:17:56 2002 Nobuyoshi Nakada * marshal.c (w_byten): added; write n bytes from s to arg. diff --git a/dln.c b/dln.c index 0d923f5dd3..3bb37f5790 100644 --- a/dln.c +++ b/dln.c @@ -90,7 +90,7 @@ char *getenv(); int eaccess(); -#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined(_AIX) +#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined(_AIX) && !defined(__APPLE__) /* dynamic load with dlopen() */ # define USE_DLN_DLOPEN #endif @@ -1429,12 +1429,9 @@ dln_load(file) NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW); /* lookup the initial function */ - /*NSIsSymbolNameDefined require function name without "_" */ - if(NSIsSymbolNameDefined(buf + 1)) { + if(!NSIsSymbolNameDefined(buf)) { rb_loaderror("Failed to lookup Init function %.200s",file); - } - - /* NSLookupAndBindSymbol require function name with "_" !! */ + } init_fct = NSAddressOfSymbol(NSLookupAndBindSymbol(buf)); (*init_fct)(); diff --git a/eval.c b/eval.c index 31a7cae5d8..207e6b464e 100644 --- a/eval.c +++ b/eval.c @@ -23,6 +23,10 @@ #include "st.h" #include "dln.h" +#ifdef __APPLE__ +#include +#endif + /* Make alloca work the best possible way. */ #ifdef __GNUC__ # ifndef atarist @@ -1040,7 +1044,9 @@ error_print() } } -#if !defined(NT) && !defined(__MACOS__) +#if defined(__APPLE__) +#define environ (*_NSGetEnviron()) +#elif !defined(NT) && !defined(__MACOS__) extern char **environ; #endif char **rb_origenviron; diff --git a/hash.c b/hash.c index 69ca1db4e3..d759afd296 100644 --- a/hash.c +++ b/hash.c @@ -17,6 +17,10 @@ #include "util.h" #include "rubysig.h" +#ifdef __APPLE__ +#include +#endif + #define HASH_DELETED FL_USER1 #define HASH_PROC_DEFAULT FL_USER2 @@ -944,6 +948,11 @@ static char **origenviron; static char **my_environ; #undef environ #define environ my_environ +#elif defined(__APPLE__) +#undef environ +#define environ (*_NSGetEnviron()) +#define GET_ENVIRON(e) (e) +#define FREE_ENVIRON(e) #else extern char **environ; #define GET_ENVIRON(e) (e) -- cgit v1.2.3