From 2cc00bf4d858ce36ff80b51560a795fb48303228 Mon Sep 17 00:00:00 2001 From: Micah Cowan Date: Thu, 7 Aug 2008 22:10:08 -0700 Subject: [PATCH] Proper 2-arg/3-arg setenv checks (#15921). --- src/acconfig.h | 10 ++++++++++ src/configure.in | 31 ++++++++++++++++++++++++++----- src/misc.c | 4 ++-- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/acconfig.h b/src/acconfig.h index ebac18a..1660cb0 100644 --- a/src/acconfig.h +++ b/src/acconfig.h @@ -549,6 +549,16 @@ #undef USESETENV /* + * If setenv() takes 3 arguments sefine HAVE_SETENV_3 + */ +#undef HAVE_SETENV_3 + +/* + * If setenv() takes 2 arguments sefine HAVE_SETENV_2 + */ +#undef HAVE_SETENV_2 + +/* * If your system does not come with a setenv()/putenv()/getenv() * functions, you may bring in our own code by defining NEEDPUTENV. */ diff --git a/src/configure.in b/src/configure.in index d76bdc3..9f9ae41 100644 --- a/src/configure.in +++ b/src/configure.in @@ -1216,11 +1216,32 @@ AC_TRY_LINK(,[vsprintf(0,0,0);], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), AC_MS AC_HEADER_DIRENT AC_MSG_CHECKING(for setenv) -AC_TRY_LINK(,[setenv((char *)0,(char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes);AC_DEFINE(USESETENV), -AC_MSG_RESULT(no) -AC_MSG_CHECKING(for putenv) -AC_TRY_LINK(,[putenv((char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes) , AC_MSG_RESULT(no);AC_DEFINE(NEEDPUTENV) -)) +if test -z "$ac_setenv_args"; then + AC_TRY_COMPILE( + [#include ], + [ + setenv((char *) 0, (char *) 0, 0); + ], ac_setenv_args=3) +fi +if test -z "$ac_setenv_args"; then + AC_TRY_COMPILE( + [#include ], + [ + setenv((char *) 0, (char *) 0); + ], ac_setenv_args=2) +fi +if test -n "$ac_setenv_args"; then + AC_DEFINE(USESETENV) + if test "$ac_setenv_args" = 3; then + AC_DEFINE(HAVE_SETENV_3) + elif test "$ac_setenv_args" = 2; then + AC_DEFINE(HAVE_SETENV_2) + fi +else + AC_MSG_RESULT(no) + AC_MSG_CHECKING(for putenv) + AC_TRY_LINK(,[putenv((char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes) , AC_MSG_RESULT(no);AC_DEFINE(NEEDPUTENV)) +fi AC_MSG_CHECKING([for nl_langinfo(CODESET)]) AC_TRY_LINK([ #include diff --git a/src/misc.c b/src/misc.c index 5574ca4..0de4016 100644 --- a/src/misc.c +++ b/src/misc.c @@ -613,11 +613,11 @@ char *value; */ # endif /* NEEDSETENV */ #else /* USESETENV */ -# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(_AIX) || defined(__GLIBC__) +# if HAVE_SETENV_3 setenv(var, value, 1); # else setenv(var, value); -# endif /* linux || convex || BSD >= 199103 */ +# endif /* HAVE_SETENV_3 */ #endif /* USESETENV */ } -- 2.11.4.GIT