Annotation of embedaddon/libiconv/srcm4/setenv.m4, revision 1.1.1.3
1.1.1.3 ! misho 1: # setenv.m4 serial 28
! 2: dnl Copyright (C) 2001-2004, 2006-2019 Free Software Foundation, Inc.
1.1 misho 3: dnl This file is free software; the Free Software Foundation
4: dnl gives unlimited permission to copy and/or distribute it,
5: dnl with or without modifications, as long as this notice is preserved.
6:
7: AC_DEFUN([gl_FUNC_SETENV],
8: [
1.1.1.2 misho 9: AC_REQUIRE([gl_FUNC_SETENV_SEPARATE])
1.1.1.3 ! misho 10: AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
1.1 misho 11: if test $ac_cv_func_setenv = no; then
12: HAVE_SETENV=0
1.1.1.2 misho 13: else
14: AC_CACHE_CHECK([whether setenv validates arguments],
15: [gl_cv_func_setenv_works],
16: [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
17: #include <stdlib.h>
18: #include <errno.h>
19: #include <string.h>
20: ]], [[
21: int result = 0;
22: {
23: if (setenv ("", "", 0) != -1)
24: result |= 1;
25: else if (errno != EINVAL)
26: result |= 2;
27: }
28: {
29: if (setenv ("a", "=", 1) != 0)
30: result |= 4;
31: else if (strcmp (getenv ("a"), "=") != 0)
32: result |= 8;
33: }
34: return result;
35: ]])],
36: [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no],
1.1.1.3 ! misho 37: [case "$host_os" in
! 38: # Guess yes on glibc systems.
! 39: *-gnu* | gnu*) gl_cv_func_setenv_works="guessing yes" ;;
! 40: # Guess yes on musl systems.
! 41: *-musl*) gl_cv_func_setenv_works="guessing yes" ;;
! 42: # If we don't know, assume the worst.
! 43: *) gl_cv_func_setenv_works="guessing no" ;;
! 44: esac
! 45: ])])
! 46: case "$gl_cv_func_setenv_works" in
! 47: *yes) ;;
! 48: *)
! 49: REPLACE_SETENV=1
! 50: ;;
! 51: esac
1.1 misho 52: fi
53: ])
54:
1.1.1.2 misho 55: # Like gl_FUNC_SETENV, except prepare for separate compilation
56: # (no REPLACE_SETENV, no AC_LIBOBJ).
1.1 misho 57: AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
58: [
59: AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
1.1.1.2 misho 60: AC_CHECK_DECLS_ONCE([setenv])
61: if test $ac_cv_have_decl_setenv = no; then
62: HAVE_DECL_SETENV=0
1.1 misho 63: fi
1.1.1.2 misho 64: AC_CHECK_FUNCS_ONCE([setenv])
1.1 misho 65: gl_PREREQ_SETENV
66: ])
67:
68: AC_DEFUN([gl_FUNC_UNSETENV],
69: [
70: AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
1.1.1.3 ! misho 71: AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
1.1.1.2 misho 72: AC_CHECK_DECLS_ONCE([unsetenv])
73: if test $ac_cv_have_decl_unsetenv = no; then
74: HAVE_DECL_UNSETENV=0
75: fi
1.1 misho 76: AC_CHECK_FUNCS([unsetenv])
77: if test $ac_cv_func_unsetenv = no; then
78: HAVE_UNSETENV=0
79: else
1.1.1.2 misho 80: HAVE_UNSETENV=1
81: dnl Some BSDs return void, failing to do error checking.
1.1 misho 82: AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
1.1.1.2 misho 83: [AC_COMPILE_IFELSE(
84: [AC_LANG_PROGRAM(
85: [[
86: #undef _BSD
87: #define _BSD 1 /* unhide unsetenv declaration in OSF/1 5.1 <stdlib.h> */
88: #include <stdlib.h>
1.1 misho 89: extern
90: #ifdef __cplusplus
91: "C"
92: #endif
93: int unsetenv (const char *name);
1.1.1.2 misho 94: ]],
95: [[]])],
96: [gt_cv_func_unsetenv_ret='int'],
97: [gt_cv_func_unsetenv_ret='void'])])
1.1 misho 98: if test $gt_cv_func_unsetenv_ret = 'void'; then
1.1.1.2 misho 99: AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void
100: instead of int.])
101: REPLACE_UNSETENV=1
102: fi
103:
104: dnl Solaris 10 unsetenv does not remove all copies of a name.
105: dnl Haiku alpha 2 unsetenv gets confused by assignment to environ.
106: dnl OpenBSD 4.7 unsetenv("") does not fail.
107: AC_CACHE_CHECK([whether unsetenv obeys POSIX],
108: [gl_cv_func_unsetenv_works],
109: [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
110: #include <stdlib.h>
111: #include <errno.h>
112: extern char **environ;
113: ]], [[
114: char entry1[] = "a=1";
115: char entry2[] = "b=2";
116: char *env[] = { entry1, entry2, NULL };
117: if (putenv ((char *) "a=1")) return 1;
118: if (putenv (entry2)) return 2;
119: entry2[0] = 'a';
120: unsetenv ("a");
121: if (getenv ("a")) return 3;
122: if (!unsetenv ("") || errno != EINVAL) return 4;
123: entry2[0] = 'b';
124: environ = env;
125: if (!getenv ("a")) return 5;
126: entry2[0] = 'a';
127: unsetenv ("a");
128: if (getenv ("a")) return 6;
129: ]])],
130: [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no],
1.1.1.3 ! misho 131: [case "$host_os" in
! 132: # Guess yes on glibc systems.
! 133: *-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;;
! 134: # If we don't know, assume the worst.
! 135: *) gl_cv_func_unsetenv_works="guessing no" ;;
! 136: esac
! 137: ])])
! 138: case "$gl_cv_func_unsetenv_works" in
! 139: *yes) ;;
! 140: *)
! 141: REPLACE_UNSETENV=1
! 142: ;;
! 143: esac
1.1 misho 144: fi
145: ])
146:
147: # Prerequisites of lib/setenv.c.
148: AC_DEFUN([gl_PREREQ_SETENV],
149: [
150: AC_REQUIRE([AC_FUNC_ALLOCA])
151: AC_REQUIRE([gl_ENVIRON])
152: AC_CHECK_HEADERS_ONCE([unistd.h])
153: AC_CHECK_HEADERS([search.h])
154: AC_CHECK_FUNCS([tsearch])
155: ])
156:
157: # Prerequisites of lib/unsetenv.c.
158: AC_DEFUN([gl_PREREQ_UNSETENV],
159: [
160: AC_REQUIRE([gl_ENVIRON])
161: AC_CHECK_HEADERS_ONCE([unistd.h])
162: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>