Proper 2-arg/3-arg setenv checks (#15921).

This commit is contained in:
Micah Cowan
2008-08-07 22:10:08 -07:00
parent 7f8218c200
commit 2cc00bf4d8
3 changed files with 38 additions and 7 deletions

View File

@@ -548,6 +548,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.

View File

@@ -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 <stdlib.h>],
[
setenv((char *) 0, (char *) 0, 0);
], ac_setenv_args=3)
fi
if test -z "$ac_setenv_args"; then
AC_TRY_COMPILE(
[#include <stdlib.h>],
[
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 <langinfo.h>

View File

@@ -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 */
}