Check for crt_externs.h and _NSGetEnviron.
authorMatthias Clasen <mclasen@redhat.com>
Wed, 17 Aug 2005 18:31:08 +0000 (18:31 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 17 Aug 2005 18:31:08 +0000 (18:31 +0000)
2005-08-17  Matthias Clasen  <mclasen@redhat.com>

* configure.in: Check for crt_externs.h and _NSGetEnviron.

* glib/gutils.c: On Darwin, include crt-externs.h and
define environ using _NSGetEnviron().  (#313731)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
configure.in
glib/gutils.c

index 3d6a2c8..2b065ae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-08-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * configure.in: Check for crt_externs.h and _NSGetEnviron.
+
+       * glib/gutils.c: On Darwin, include crt-externs.h and
+       define environ using _NSGetEnviron().  (#313731)
+
 2005-08-16  Stepan Kasal  <kasal@ucw.cz>
 
        * glib/gutils.c (g_get_any_init): Move the body of the big if...
index 3d6a2c8..2b065ae 100644 (file)
@@ -1,3 +1,10 @@
+2005-08-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * configure.in: Check for crt_externs.h and _NSGetEnviron.
+
+       * glib/gutils.c: On Darwin, include crt-externs.h and
+       define environ using _NSGetEnviron().  (#313731)
+
 2005-08-16  Stepan Kasal  <kasal@ucw.cz>
 
        * glib/gutils.c (g_get_any_init): Move the body of the big if...
index 3d6a2c8..2b065ae 100644 (file)
@@ -1,3 +1,10 @@
+2005-08-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * configure.in: Check for crt_externs.h and _NSGetEnviron.
+
+       * glib/gutils.c: On Darwin, include crt-externs.h and
+       define environ using _NSGetEnviron().  (#313731)
+
 2005-08-16  Stepan Kasal  <kasal@ucw.cz>
 
        * glib/gutils.c (g_get_any_init): Move the body of the big if...
index 3d6a2c8..2b065ae 100644 (file)
@@ -1,3 +1,10 @@
+2005-08-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * configure.in: Check for crt_externs.h and _NSGetEnviron.
+
+       * glib/gutils.c: On Darwin, include crt-externs.h and
+       define environ using _NSGetEnviron().  (#313731)
+
 2005-08-16  Stepan Kasal  <kasal@ucw.cz>
 
        * glib/gutils.c (g_get_any_init): Move the body of the big if...
index 0366996..43af69f 100644 (file)
@@ -837,6 +837,9 @@ AC_MSG_RESULT(unsigned $glib_size_type)
 # Check for some functions
 AC_CHECK_FUNCS(lstat strerror strsignal memmove mkstemp vsnprintf stpcpy strcasecmp strncasecmp poll getcwd nanosleep vasprintf setenv unsetenv getc_unlocked readlink symlink)
 
+AC_CHECK_HEADERS(crt_externs.h)
+AC_CHECK_FUNC(_NSGetEnviron)
+
 AC_FUNC_VSNPRINTF_C99
 AC_FUNC_PRINTF_UNIX98
 
index eb0d1d0..1acb4f9 100644 (file)
@@ -46,6 +46,9 @@
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
 #endif
+#ifdef HAVE_CRT_EXTERNS_H 
+#include <crt-externs.h> /* for _NSGetEnviron */
+#endif
 
 /* implement gutils's inline functions
  */
@@ -1229,15 +1232,16 @@ g_setenv (const gchar *variable,
 #endif /* G_OS_WIN32 */
 }
 
-#ifndef G_OS_WIN32
+#ifdef HAVE__NSGETENVIRON
+#define environ (*_NSGetEnviron())
+#elif !defined(G_OS_WIN32)
 
 /* According to the Single Unix Specification, environ is not in 
  * any system header, although unistd.h often declares it.
  */
 extern char **environ;
-
 #endif
-           
+
 /**
  * g_unsetenv:
  * @variable: the environment variable to remove, must not contain '='.