maint: update copyright
[gnulib.git] / m4 / putenv.m4
index 5a7aa4c..d79321b 100644 (file)
@@ -1,53 +1,56 @@
-# putenv.m4 serial 6
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# putenv.m4 serial 20
+dnl Copyright (C) 2002-2014 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Jim Meyering.
 dnl
 dnl Check whether putenv ("FOO") removes FOO from the environment.
 dnl The putenv in libc on at least SunOS 4.1.4 does *not* do that.
 
-AC_DEFUN([jm_FUNC_PUTENV],
-[AC_CACHE_CHECK([for SVID conformant putenv], jm_cv_func_svid_putenv,
-  [AC_TRY_RUN([
-    int
-    main ()
-    {
-      /* Put it in env.  */
-      if (putenv ("CONFTEST_putenv=val"))
-        exit (1);
+AC_DEFUN([gl_FUNC_PUTENV],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([for putenv compatible with GNU and SVID],
+   [gl_cv_func_svid_putenv],
+   [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],[[
+    /* Put it in env.  */
+    if (putenv ("CONFTEST_putenv=val"))
+      return 1;
 
-      /* Try to remove it.  */
-      if (putenv ("CONFTEST_putenv"))
-        exit (1);
+    /* Try to remove it.  */
+    if (putenv ("CONFTEST_putenv"))
+      return 2;
 
-      /* Make sure it was deleted.  */
-      if (getenv ("CONFTEST_putenv") != 0)
-        exit (1);
+    /* Make sure it was deleted.  */
+    if (getenv ("CONFTEST_putenv") != 0)
+      return 3;
 
-      exit (0);
-    }
-             ],
-            jm_cv_func_svid_putenv=yes,
-            jm_cv_func_svid_putenv=no,
-            dnl When crosscompiling, assume putenv is broken.
-            jm_cv_func_svid_putenv=no)
-  ])
-  if test $jm_cv_func_svid_putenv = no; then
-    AC_LIBOBJ(putenv)
-    AC_DEFINE(putenv, rpl_putenv,
-      [Define to rpl_putenv if the replacement function should be used.])
-    gl_PREREQ_PUTENV
-  fi
+    return 0;
+              ]])],
+             gl_cv_func_svid_putenv=yes,
+             gl_cv_func_svid_putenv=no,
+             dnl When crosscompiling, assume putenv is broken.
+             [case "$host_os" in
+                        # Guess yes on glibc systems.
+                *-gnu*) gl_cv_func_svid_putenv="guessing yes" ;;
+                        # If we don't know, assume the worst.
+                *)      gl_cv_func_svid_putenv="guessing no" ;;
+              esac
+             ])
+   ])
+  case "$gl_cv_func_svid_putenv" in
+    *yes) ;;
+    *)
+      REPLACE_PUTENV=1
+      ;;
+  esac
 ])
 
 # Prerequisites of lib/putenv.c.
-AC_DEFUN([gl_PREREQ_PUTENV], [
-  AC_CHECK_HEADERS_ONCE(string.h unistd.h)
-  AC_CHECK_FUNCS_ONCE(memcpy)
-  AC_CHECK_FUNCS(strchr)
+AC_DEFUN([gl_PREREQ_PUTENV],
+[
+  AC_CHECK_DECLS([_putenv])
 ])