avoid some overlong lines from posix urls, etc.
[gnulib.git] / m4 / setenv.m4
index ca146d2..58f6d13 100644 (file)
@@ -1,5 +1,5 @@
-# setenv.m4 serial 12
-dnl Copyright (C) 2001-2004, 2006-2009 Free Software Foundation, Inc.
+# setenv.m4 serial 16
+dnl Copyright (C) 2001-2004, 2006-2010 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.
@@ -25,8 +25,9 @@ AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
        #include <stdlib.h>
        #include <errno.h>
+       #include <string.h>
       ]], [[
-       if (setenv (NULL, "", 0) != -1) return 1;
+       if (setenv ("", "", 0) != -1) return 1;
        if (errno != EINVAL) return 2;
        if (setenv ("a", "=", 1) != 0) return 3;
        if (strcmp (getenv ("a"), "=") != 0) return 4;
@@ -50,6 +51,7 @@ AC_DEFUN([gl_FUNC_UNSETENV],
     AC_LIBOBJ([unsetenv])
     gl_PREREQ_UNSETENV
   else
+    dnl Some BSDs return void, failing to do error checking.
     AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
       [AC_TRY_COMPILE([#include <stdlib.h>
 extern
@@ -68,6 +70,26 @@ int unsetenv();
       REPLACE_UNSETENV=1
       AC_LIBOBJ([unsetenv])
     fi
+
+    dnl Solaris 10 unsetenv does not remove all copies of a name.
+    AC_CACHE_CHECK([whether unsetenv works on duplicates],
+      [gl_cv_func_unsetenv_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+       #include <stdlib.h>
+      ]], [[
+       char entry[] = "b=2";
+       if (putenv ((char *) "a=1")) return 1;
+       if (putenv (entry)) return 2;
+       entry[0] = 'a';
+       unsetenv ("a");
+       if (getenv ("a")) return 3;
+      ]])],
+      [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no],
+      [gl_cv_func_unsetenv_works="guessing no"])])
+    if test "$gl_cv_func_unsetenv_works" != yes; then
+      REPLACE_UNSETENV=1
+      AC_LIBOBJ([unsetenv])
+    fi
   fi
 ])