]> granicus.if.org Git - python/commitdiff
Issue #13415: Test in configure if unsetenv() has a return value or not.
authorCharles-François Natali <neologix@free.fr>
Sun, 27 Nov 2011 12:01:35 +0000 (13:01 +0100)
committerCharles-François Natali <neologix@free.fr>
Sun, 27 Nov 2011 12:01:35 +0000 (13:01 +0100)
Modules/posixmodule.c
configure
configure.in
pyconfig.h.in

index 6555f1f511ca7f2d396ed0795aa6c6b966b44f71..f249e1e8cb5745ea39dc83d460e37842111ac421 100644 (file)
@@ -7044,14 +7044,20 @@ static PyObject *
 posix_unsetenv(PyObject *self, PyObject *args)
 {
     char *s1;
+#ifndef HAVE_BROKEN_UNSETENV
     int err;
+#endif
 
     if (!PyArg_ParseTuple(args, "s:unsetenv", &s1))
         return NULL;
 
+#ifdef HAVE_BROKEN_UNSETENV
+    unsetenv(s1);
+#else
     err = unsetenv(s1);
     if (err)
         return posix_error();
+#endif
 
     /* Remove the key from posix_putenv_garbage;
      * this will cause it to be collected.  This has to
index 7d6423ad2b8372232c53bc67ba7a6641a1b565f2..72a758e1cff195897ae7c51710f73ccccadcc597 100755 (executable)
--- a/configure
+++ b/configure
@@ -9924,6 +9924,34 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken unsetenv" >&5
+$as_echo_n "checking for broken unsetenv... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+
+int
+main ()
+{
+int res = unsetenv("DUMMY")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+
+$as_echo "#define HAVE_BROKEN_UNSETENV 1" >>confdefs.h
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 for ac_prog in true
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
index 9d7bfa6f8fa3b4cca53b6f74ab9ec9c76bb7b2ba..454e4681da2463cb14cc82fc0df60722ed9df537 100644 (file)
@@ -2831,6 +2831,15 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   [AC_MSG_RESULT(no)
 ])
 
+AC_MSG_CHECKING(for broken unsetenv)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <stdlib.h>
+]], [[int res = unsetenv("DUMMY")]])],
+  [AC_MSG_RESULT(no)],
+  [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
+   AC_MSG_RESULT(yes)
+])
+
 dnl check for true
 AC_CHECK_PROGS(TRUE, true, /bin/true)
 
index 9d340f6e0afeae0565cd9faf229a01330225f43c..b9da3d935c6688f2ca783b23a5e6025637175cf7 100644 (file)
@@ -97,6 +97,9 @@
 /* define to 1 if your sem_getvalue is broken. */
 #undef HAVE_BROKEN_SEM_GETVALUE
 
+/* Define if `unsetenv` does not return an int. */
+#undef HAVE_BROKEN_UNSETENV
+
 /* Define this if you have the type _Bool. */
 #undef HAVE_C99_BOOL