On new verisons of OSF/1 5.1, setenv() is not declared by default. It's only declared if _BSD is defined, but defining it has also some negative consequences. Consequence: This error:
../gllib/stdlib.h:907: error: 'setenv' was not declared in this scope ../gllib/stdlib.h:907: error: invalid type in declaration before ';' token This fixes it. 2010-12-19 Bruno Haible <br...@clisp.org> setenv: Add missing declaration on OSF/1 5.1. * lib/stdlib.in.h (setenv): Test HAVE_DECL_SETENV, not HAVE_SETENV. * m4/setenv.m4 (gl_FUNC_SETENV_SEPARATE): Test whether setenv is declared. Don't set HAVE_SETENV. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_SETENV, not HAVE_SETENV. * modules/stdlib (Makefile.am): Substitute HAVE_DECL_SETENV, not HAVE_SETENV. * doc/posix-functions/setenv.texi: Mention the OSF/1 5.1 problem. --- doc/posix-functions/setenv.texi.orig Sun Dec 19 17:36:35 2010 +++ doc/posix-functions/setenv.texi Sun Dec 19 17:17:01 2010 @@ -12,6 +12,9 @@ This function is missing on some platforms: AIX 4.3.2, 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 On some platforms, this function does not fail with @samp{EINVAL} when passed an empty string or a string containing @samp{=}: MacOS X 10.5, FreeBSD 6.0, NetBSD 1.6, OpenBSD 3.8, Cygwin 1.5.x. --- lib/stdlib.in.h.orig Sun Dec 19 17:36:35 2010 +++ lib/stdlib.in.h Sun Dec 19 17:33:18 2010 @@ -584,7 +584,7 @@ _GL_CXXALIAS_RPL (setenv, int, (const char *name, const char *value, int replace)); # else -# if !...@have_setenv@ +# if !...@have_decl_setenv@ _GL_FUNCDECL_SYS (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); @@ -592,7 +592,9 @@ _GL_CXXALIAS_SYS (setenv, int, (const char *name, const char *value, int replace)); # endif +# if !(@REPLACE_SETENV@ && !...@have_decl_setenv@) _GL_CXXALIASWARN (setenv); +# endif #elif defined GNULIB_POSIXCHECK # undef setenv # if HAVE_RAW_DECL_SETENV --- m4/setenv.m4.orig Sun Dec 19 17:36:35 2010 +++ m4/setenv.m4 Sun Dec 19 17:18:52 2010 @@ -16,10 +16,12 @@ AC_DEFUN([gl_FUNC_SETENV_SEPARATE], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + AC_CHECK_DECLS_ONCE([setenv]) + if test $ac_cv_have_decl_setenv = no; then + HAVE_DECL_SETENV=0 + fi AC_CHECK_FUNCS_ONCE([setenv]) - if test $ac_cv_func_setenv = no; then - HAVE_SETENV=0 - else + if test $ac_cv_func_setenv = yes; then AC_CACHE_CHECK([whether setenv validates arguments], [gl_cv_func_setenv_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ --- m4/stdlib_h.m4.orig Sun Dec 19 17:36:35 2010 +++ m4/stdlib_h.m4 Sun Dec 19 17:17:22 2010 @@ -1,4 +1,4 @@ -# stdlib_h.m4 serial 31 +# stdlib_h.m4 serial 32 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, @@ -92,7 +92,7 @@ HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) - HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) + HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) --- modules/stdlib.orig Sun Dec 19 17:36:35 2010 +++ modules/stdlib Sun Dec 19 17:16:57 2010 @@ -71,7 +71,7 @@ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ - -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \ + -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \