setenv.m4   setenv.m4 
# setenv.m4 serial 16 # setenv.m4 serial 26
dnl Copyright (C) 2001-2004, 2006-2010 Free Software Foundation, Inc. dnl Copyright (C) 2001-2004, 2006-2014 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_SETENV], AC_DEFUN([gl_FUNC_SETENV],
[ [
AC_REQUIRE([gl_FUNC_SETENV_SEPARATE]) AC_REQUIRE([gl_FUNC_SETENV_SEPARATE])
if test $HAVE_SETENV$REPLACE_SETENV != 10; then AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_LIBOBJ([setenv])
fi
])
# Like gl_FUNC_SETENV, except prepare for separate compilation (no AC_LIBOB
J).
AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_CHECK_FUNCS_ONCE([setenv])
if test $ac_cv_func_setenv = no; then if test $ac_cv_func_setenv = no; then
HAVE_SETENV=0 HAVE_SETENV=0
else else
AC_CACHE_CHECK([whether setenv validates arguments], AC_CACHE_CHECK([whether setenv validates arguments],
[gl_cv_func_setenv_works], [gl_cv_func_setenv_works],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[ [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h> #include <stdlib.h>
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
]], [[ ]], [[
if (setenv ("", "", 0) != -1) return 1; int result = 0;
if (errno != EINVAL) return 2; {
if (setenv ("a", "=", 1) != 0) return 3; if (setenv ("", "", 0) != -1)
if (strcmp (getenv ("a"), "=") != 0) return 4; result |= 1;
else if (errno != EINVAL)
result |= 2;
}
{
if (setenv ("a", "=", 1) != 0)
result |= 4;
else if (strcmp (getenv ("a"), "=") != 0)
result |= 8;
}
return result;
]])], ]])],
[gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no], [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no],
[gl_cv_func_setenv_works="guessing no"])]) [case "$host_os" in
if test "$gl_cv_func_setenv_works" != yes; then # Guess yes on glibc systems.
REPLACE_SETENV=1 *-gnu*) gl_cv_func_setenv_works="guessing yes" ;;
AC_LIBOBJ([setenv]) # If we don't know, assume the worst.
fi *) gl_cv_func_setenv_works="guessing no" ;;
esac
])])
case "$gl_cv_func_setenv_works" in
*yes) ;;
*)
REPLACE_SETENV=1
;;
esac
fi fi
])
# Like gl_FUNC_SETENV, except prepare for separate compilation
# (no REPLACE_SETENV, no AC_LIBOBJ).
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])
gl_PREREQ_SETENV gl_PREREQ_SETENV
]) ])
AC_DEFUN([gl_FUNC_UNSETENV], AC_DEFUN([gl_FUNC_UNSETENV],
[ [
AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CHECK_DECLS_ONCE([unsetenv])
if test $ac_cv_have_decl_unsetenv = no; then
HAVE_DECL_UNSETENV=0
fi
AC_CHECK_FUNCS([unsetenv]) AC_CHECK_FUNCS([unsetenv])
if test $ac_cv_func_unsetenv = no; then if test $ac_cv_func_unsetenv = no; then
HAVE_UNSETENV=0 HAVE_UNSETENV=0
AC_LIBOBJ([unsetenv])
gl_PREREQ_UNSETENV
else else
HAVE_UNSETENV=1
dnl Some BSDs return void, failing to do error checking. dnl Some BSDs return void, failing to do error checking.
AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret], AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
[AC_TRY_COMPILE([#include <stdlib.h> [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 extern
#ifdef __cplusplus #ifdef __cplusplus
"C" "C"
#endif #endif
#if defined(__STDC__) || defined(__cplusplus)
int unsetenv (const char *name); int unsetenv (const char *name);
#else ]],
int unsetenv(); [[]])],
#endif [gt_cv_func_unsetenv_ret='int'],
], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')]) [gt_cv_func_unsetenv_ret='void'])])
if test $gt_cv_func_unsetenv_ret = 'void'; then if test $gt_cv_func_unsetenv_ret = 'void'; then
AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void
instead of int.]) instead of int.])
REPLACE_UNSETENV=1 REPLACE_UNSETENV=1
AC_LIBOBJ([unsetenv])
fi fi
dnl Solaris 10 unsetenv does not remove all copies of a name. dnl Solaris 10 unsetenv does not remove all copies of a name.
AC_CACHE_CHECK([whether unsetenv works on duplicates], dnl Haiku alpha 2 unsetenv gets confused by assignment to environ.
dnl OpenBSD 4.7 unsetenv("") does not fail.
AC_CACHE_CHECK([whether unsetenv obeys POSIX],
[gl_cv_func_unsetenv_works], [gl_cv_func_unsetenv_works],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[ [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h> #include <stdlib.h>
#include <errno.h>
extern char **environ;
]], [[ ]], [[
char entry[] = "b=2"; char entry1[] = "a=1";
char entry2[] = "b=2";
char *env[] = { entry1, entry2, NULL };
if (putenv ((char *) "a=1")) return 1; if (putenv ((char *) "a=1")) return 1;
if (putenv (entry)) return 2; if (putenv (entry2)) return 2;
entry[0] = 'a'; entry2[0] = 'a';
unsetenv ("a"); unsetenv ("a");
if (getenv ("a")) return 3; if (getenv ("a")) return 3;
if (!unsetenv ("") || errno != EINVAL) return 4;
entry2[0] = 'b';
environ = env;
if (!getenv ("a")) return 5;
entry2[0] = 'a';
unsetenv ("a");
if (getenv ("a")) return 6;
]])], ]])],
[gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no], [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no],
[gl_cv_func_unsetenv_works="guessing no"])]) [case "$host_os" in
if test "$gl_cv_func_unsetenv_works" != yes; then # Guess yes on glibc systems.
REPLACE_UNSETENV=1 *-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;;
AC_LIBOBJ([unsetenv]) # If we don't know, assume the worst.
fi *) gl_cv_func_unsetenv_works="guessing no" ;;
esac
])])
case "$gl_cv_func_unsetenv_works" in
*yes) ;;
*)
REPLACE_UNSETENV=1
;;
esac
fi fi
]) ])
# Prerequisites of lib/setenv.c. # Prerequisites of lib/setenv.c.
AC_DEFUN([gl_PREREQ_SETENV], AC_DEFUN([gl_PREREQ_SETENV],
[ [
AC_REQUIRE([AC_FUNC_ALLOCA]) AC_REQUIRE([AC_FUNC_ALLOCA])
AC_REQUIRE([gl_ENVIRON]) AC_REQUIRE([gl_ENVIRON])
AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CHECK_HEADERS_ONCE([unistd.h])
AC_CHECK_HEADERS([search.h]) AC_CHECK_HEADERS([search.h])
 End of changes. 18 change blocks. 
40 lines changed or deleted 88 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/