changeset 13948:4d99f06b61cd

unsetenv: Add missing declaration on OSF/1 5.1. * lib/stdlib.in.h (setenv): Test HAVE_DECL_UNSETENV, not HAVE_UNSETENV. * m4/setenv.m4 (gl_FUNC_UNSETENV): Test whether unsetenv is declared. Don't set HAVE_UNSETENV. In the test program, set _BSD. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_UNSETENV, not HAVE_UNSETENV. * modules/stdlib (Makefile.am): Substitute HAVE_DECL_UNSETENV, not HAVE_UNSETENV. * doc/posix-functions/unsetenv.texi: Mention the OSF/1 5.1 problem.
author Bruno Haible <bruno@clisp.org>
date Sun, 19 Dec 2010 18:35:54 +0100
parents 4ca29955b657
children ae8d25472222
files ChangeLog doc/posix-functions/unsetenv.texi lib/stdlib.in.h m4/setenv.m4 m4/stdlib_h.m4 modules/stdlib
diffstat 6 files changed, 28 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Dec 19 18:08:03 2010 +0100
+++ b/ChangeLog	Sun Dec 19 18:35:54 2010 +0100
@@ -1,3 +1,15 @@
+2010-12-19  Bruno Haible  <bruno@clisp.org>
+
+	unsetenv: Add missing declaration on OSF/1 5.1.
+	* lib/stdlib.in.h (setenv): Test HAVE_DECL_UNSETENV, not HAVE_UNSETENV.
+	* m4/setenv.m4 (gl_FUNC_UNSETENV): Test whether unsetenv is declared.
+	Don't set HAVE_UNSETENV. In the test program, set _BSD.
+	* m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_UNSETENV,
+	not HAVE_UNSETENV.
+	* modules/stdlib (Makefile.am): Substitute HAVE_DECL_UNSETENV, not
+	HAVE_UNSETENV.
+	* doc/posix-functions/unsetenv.texi: Mention the OSF/1 5.1 problem.
+
 2010-12-19  Bruno Haible  <bruno@clisp.org>
 
 	setenv: Add missing declaration on OSF/1 5.1.
--- a/doc/posix-functions/unsetenv.texi	Sun Dec 19 18:08:03 2010 +0100
+++ b/doc/posix-functions/unsetenv.texi	Sun Dec 19 18:35:54 2010 +0100
@@ -12,6 +12,9 @@
 This function is missing on some platforms:
 AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, BeOS.
 @item
+This function is not declared on some platforms:
+OSF/1 5.1.
+@item
 This function has the return type @samp{void} instead of @samp{int} on some
 platforms:
 MacOS X 10.3, FreeBSD 6.0, NetBSD 1.6, OpenBSD 3.8, OSF/1 5.1.
--- a/lib/stdlib.in.h	Sun Dec 19 18:08:03 2010 +0100
+++ b/lib/stdlib.in.h	Sun Dec 19 18:35:54 2010 +0100
@@ -704,12 +704,14 @@
 _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
 # else
-#  if !@HAVE_UNSETENV@
+#  if !@HAVE_DECL_UNSETENV@
 _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
 #  endif
 _GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
 # endif
+# if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@)
 _GL_CXXALIASWARN (unsetenv);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef unsetenv
 # if HAVE_RAW_DECL_UNSETENV
--- a/m4/setenv.m4	Sun Dec 19 18:08:03 2010 +0100
+++ b/m4/setenv.m4	Sun Dec 19 18:35:54 2010 +0100
@@ -1,4 +1,4 @@
-# setenv.m4 serial 19
+# setenv.m4 serial 20
 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,
@@ -57,9 +57,12 @@
 AC_DEFUN([gl_FUNC_UNSETENV],
 [
   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  AC_CHECK_DECLS_ONCE([unsetenv])
+  if test $ac_cv_have_decl_unsetenv = no; then
+    HAVE_DECL_UNSETENV=0
+  fi
   AC_CHECK_FUNCS([unsetenv])
   if test $ac_cv_func_unsetenv = no; then
-    HAVE_UNSETENV=0
     AC_LIBOBJ([unsetenv])
     gl_PREREQ_UNSETENV
   else
@@ -68,6 +71,8 @@
       [AC_COMPILE_IFELSE(
          [AC_LANG_PROGRAM(
             [[
+#undef _BSD
+#define _BSD 1 /* unhide unsetenv declaration in OSF/1 5.1 <stdlib.h> */
 #include <stdlib.h>
 extern
 #ifdef __cplusplus
--- a/m4/stdlib_h.m4	Sun Dec 19 18:08:03 2010 +0100
+++ b/m4/stdlib_h.m4	Sun Dec 19 18:35:54 2010 +0100
@@ -1,4 +1,4 @@
-# stdlib_h.m4 serial 32
+# stdlib_h.m4 serial 33
 dnl Copyright (C) 2007-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,
@@ -99,7 +99,7 @@
   HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
   HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
   HAVE_UNLOCKPT=1;           AC_SUBST([HAVE_UNLOCKPT])
-  HAVE_UNSETENV=1;           AC_SUBST([HAVE_UNSETENV])
+  HAVE_DECL_UNSETENV=1;      AC_SUBST([HAVE_DECL_UNSETENV])
   REPLACE_CALLOC=0;          AC_SUBST([REPLACE_CALLOC])
   REPLACE_CANONICALIZE_FILE_NAME=0;  AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
--- a/modules/stdlib	Sun Dec 19 18:08:03 2010 +0100
+++ b/modules/stdlib	Sun Dec 19 18:35:54 2010 +0100
@@ -78,7 +78,7 @@
 	      -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
 	      -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
 	      -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
-	      -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+	      -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
 	      -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
 	      -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
 	      -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \