From db5f2ea3a4f1f2430b9349b6a32c4205c1aba0b3 Mon Sep 17 00:00:00 2001 From: das Date: Tue, 7 Aug 2007 05:04:21 +0000 Subject: * generic/tclEnv.c: improve environ handling on Mac OS X (adapted * unix/tclUnixPort.h: from Apple changes in Darwin tcl-64). --- generic/tclEnv.c | 32 +------------------------------- unix/tclUnixPort.h | 14 ++++++++++---- 2 files changed, 11 insertions(+), 35 deletions(-) diff --git a/generic/tclEnv.c b/generic/tclEnv.c index 30bce65..96bc9e0 100644 --- a/generic/tclEnv.c +++ b/generic/tclEnv.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEnv.c,v 1.33 2007/04/23 17:34:06 kennykb Exp $ + * RCS: @(#) $Id: tclEnv.c,v 1.34 2007/08/07 05:04:21 das Exp $ */ #include "tclInt.h" @@ -37,16 +37,6 @@ static int environSize = 0; /* Non-zero means that the environ array was #endif /* - * For MacOS X - */ - -#if defined(__APPLE__) && defined(__DYNAMIC__) -#include -__private_extern__ char **environ; -char **environ = NULL; -#endif - -/* * Declarations for local functions defined in this file: */ @@ -91,14 +81,6 @@ TclSetupEnv( int i; /* - * For MacOS X, need to get the real system environment. - */ - -#if defined(__APPLE__) && defined(__DYNAMIC__) - environ = *_NSGetEnviron(); -#endif - - /* * Synchronize the values in the environ array with the contents of the * Tcl "env" variable. To do this: * 1) Remove the trace that fires when the "env" var is unset. @@ -210,18 +192,6 @@ TclSetEnv( } environ = ourEnviron = newEnviron; environSize = length + 5; - -#if defined(__APPLE__) && defined(__DYNAMIC__) - /* - * Install the new environment array where the system routines can - * see it. - */ - - { - char ***e = _NSGetEnviron(); - *e = environ; - } -#endif /* __APPLE__ && __DYNAMIC__ */ } index = length; environ[index + 1] = NULL; diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h index 99dc65b..cf0d810 100644 --- a/unix/tclUnixPort.h +++ b/unix/tclUnixPort.h @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixPort.h,v 1.56 2006/11/13 08:23:11 das Exp $ + * RCS: @(#) $Id: tclUnixPort.h,v 1.57 2007/08/07 05:04:21 das Exp $ */ #ifndef _TCLUNIXPORT @@ -484,10 +484,16 @@ extern int errno; * Variables provided by the C library: */ -#if defined(_sgi) || defined(__sgi) || (defined(__APPLE__) && defined(__DYNAMIC__)) -# define environ _environ -#endif +#if defined(__APPLE__) && defined(__DYNAMIC__) +# include +# define environ (*_NSGetEnviron()) +# define USE_PUTENV 1 +#else +# if defined(_sgi) || defined(__sgi) +# define environ _environ +# endif extern char **environ; +#endif /* * At present (12/91) not all stdlib.h implementations declare strtod. -- cgit v0.12