1# setenv.m4 serial 5
2dnl Copyright (C) 2001-2004 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gt_FUNC_SETENV],
8[
9  AC_REPLACE_FUNCS(setenv unsetenv)
10  if test $ac_cv_func_setenv = no; then
11    gl_PREREQ_SETENV
12  fi
13  if test $ac_cv_func_unsetenv = no; then
14    gl_PREREQ_UNSETENV
15  else
16    AC_CACHE_CHECK([for unsetenv() return type], gt_cv_func_unsetenv_ret,
17      [AC_TRY_COMPILE([#include <stdlib.h>
18extern
19#ifdef __cplusplus
20"C"
21#endif
22#if defined(__STDC__) || defined(__cplusplus)
23int unsetenv (const char *name);
24#else
25int unsetenv();
26#endif
27], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')])
28    if test $gt_cv_func_unsetenv_ret = 'void'; then
29      AC_DEFINE(VOID_UNSETENV, 1, [Define if unsetenv() returns void, not int.])
30    fi
31  fi
32])
33
34# Check if a variable is properly declared.
35# gt_CHECK_VAR_DECL(includes,variable)
36AC_DEFUN([gt_CHECK_VAR_DECL],
37[
38  define([gt_cv_var], [gt_cv_var_]$2[_declaration])
39  AC_MSG_CHECKING([if $2 is properly declared])
40  AC_CACHE_VAL(gt_cv_var, [
41    AC_TRY_COMPILE([$1
42      extern struct { int foo; } $2;],
43      [$2.foo = 1;],
44      gt_cv_var=no,
45      gt_cv_var=yes)])
46  AC_MSG_RESULT($gt_cv_var)
47  if test $gt_cv_var = yes; then
48    AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_DECL], 1,
49              [Define if you have the declaration of $2.])
50  fi
51])
52
53# Prerequisites of lib/setenv.c.
54AC_DEFUN([gl_PREREQ_SETENV],
55[
56  AC_REQUIRE([AC_FUNC_ALLOCA])
57  AC_CHECK_HEADERS_ONCE(unistd.h)
58  AC_CHECK_HEADERS(search.h)
59  AC_CHECK_FUNCS(tsearch)
60  gt_CHECK_VAR_DECL([#include <errno.h>], errno)
61  gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
62])
63
64# Prerequisites of lib/unsetenv.c.
65AC_DEFUN([gl_PREREQ_UNSETENV],
66[
67  AC_CHECK_HEADERS_ONCE(unistd.h)
68  gt_CHECK_VAR_DECL([#include <errno.h>], errno)
69  gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
70])
71