Assume errno.h declares errno.
[gnulib.git] / m4 / setenv.m4
1 # setenv.m4 serial 6
2 dnl Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc.
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([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>
18 extern
19 #ifdef __cplusplus
20 "C"
21 #endif
22 #if defined(__STDC__) || defined(__cplusplus)
23 int unsetenv (const char *name);
24 #else
25 int 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)
36 AC_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.
54 AC_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 <unistd.h>], environ)
61 ])
62
63 # Prerequisites of lib/unsetenv.c.
64 AC_DEFUN([gl_PREREQ_UNSETENV],
65 [
66   AC_CHECK_HEADERS_ONCE(unistd.h)
67   gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
68 ])