Go to the first, previous, next, last section, table of contents.
These macros check for particular C functions--whether they exist, and in some cases how they respond when given certain arguments.
alloca
. Tries to get a builtin version by
checking for `alloca.h' or the predefined C preprocessor macros
__GNUC__
and _AIX
. If this macro finds `alloca.h',
it defines HAVE_ALLOCA_H
.
If those attempts fail, it looks for the function in the standard C
library. If any of those methods succeed, it defines
HAVE_ALLOCA
. Otherwise, it sets the output variable
ALLOCA
to `alloca.o' and defines C_ALLOCA
(so
programs can periodically call `alloca(0)' to garbage collect).
This variable is separate from LIBOBJS
so multiple programs can
share the value of ALLOCA
without needing to create an actual
library, in case only some of them use the code in LIBOBJS
.
This macro does not try to get alloca
from the System V R3
`libPW' or the System V R4 `libucb' because those libraries
contain some incompatible functions that cause trouble. Some versions
do not even contain alloca
or contain a buggy version. If you
still want to use their alloca
, use ar
to extract
`alloca.o' from them instead of compiling `alloca.c'.
Source files that use alloca
should start with a piece of code
like the following, to declare it properly. In some versions of AIX,
the declaration of alloca
must precede everything else except for
comments and preprocessor directives. The #pragma
directive is
indented so that pre-ANSI C compilers will ignore it, rather than
choke on it.
/* AIX requires this to be the first thing in the file. */ #ifndef __GNUC__ # if HAVE_ALLOCA_H # include <alloca.h> # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif #endif
chown
function is available and works (in particular, it
should accept @option{-1} for uid
and gid
), define
HAVE_CHOWN
.
closedir
function does not return a meaningful value,
define CLOSEDIR_VOID
. Otherwise, callers ought to check its
return value for an error indicator.
error_at_line
function is not found, require an
AC_LIBOBJ
replacement of `error'.
fnmatch
function is available and works (unlike the one on
Solaris 2.4), define HAVE_FNMATCH
.
fork
and vfork
functions. If a
working fork
is found, define HAVE_WORKING_FORK
. This macro
checks whether fork
is just a stub by trying to run it.
If `vfork.h' is found, define HAVE_VFORK_H
. If a working
vfork
is found, define HAVE_WORKING_VFORK
. Otherwise,
define vfork
to be fork
for backward compatibility with
previous versions of @command{autoconf}. This macro checks for several known
errors in implementations of vfork
and considers the system to not
have a working vfork
if it detects any of them. It is not considered
to be an implementation error if a child's invocation of signal
modifies the parent's signal handler, since child processes rarely change
their signal handlers.
Since this macro defines vfork
only for backward compatibility with
previous versions of @command{autoconf} you're encouraged to define it
yourself in new code:
#if !HAVE_WORKING_VFORK # define vfork fork #endif
fseeko
function is available, define HAVE_FSEEKO
.
Define _LARGEFILE_SOURCE
if necessary.
getgroups
function is available and works (unlike on
Ultrix 4.3, where `getgroups (0, 0)' always fails), define
HAVE_GETGROUPS
. Set GETGROUPS_LIBS
to any libraries
needed to get that function. This macro runs AC_TYPE_GETGROUPS
.
getloadavg
function, define HAVE_GETLOADAVG
, and set
GETLOADAVG_LIBS
to any libraries needed to get that function.
Also add GETLOADAVG_LIBS
to LIBS
.
Otherwise, require an AC_LIBOBJ
replacement (`getloadavg.c')
of `getloadavg', and possibly define several other C preprocessor
macros and output variables:
C_GETLOADAVG
.
SVR4
, DGUX
, UMAX
, or UMAX4_3
if on
those systems.
NLIST_STRUCT
.
HAVE_STRUCT_NLIST_N_UN_N_NAME
. The obsolete symbol
NLIST_NAME_UNION
is still defined, but do not depend upon it.
getloadavg
to work. In this case, define
GETLOADAVG_PRIVILEGED
, set the output variable NEED_SETGID
to `true' (and otherwise to `false'), and set
KMEM_GROUP
to the name of the group that should own the installed
program.
getmntent
in the `sun', `seq', and `gen'
libraries, for Irix 4, PTX, and Unixware, respectively. Then, if
getmntent
is available, define HAVE_GETMNTENT
.
getpgrp
takes no argument (the POSIX.1 version), define
GETPGRP_VOID
. Otherwise, it is the BSD version, which takes
a process ID as an argument. This macro does not check whether
getpgrp
exists at all; if you need to work in that situation,
first call AC_CHECK_FUNC
for getpgrp
.
lstat
should treat
`link/' the same as `link/.'. However, many older
lstat
implementations incorrectly ignore trailing slashes.
It is safe to assume that if lstat
incorrectly ignores
trailing slashes, then other symbolic-link-aware functions like
unlink
and unlink
also incorrectly ignore trailing slashes.
If lstat
behaves properly, define
LSTAT_FOLLOWS_SLASHED_SYMLINK
, otherwise require an
AC_LIBOBJ
replacement of lstat
.
malloc
works correctly (`malloc (0)' returns a valid
pointer), define HAVE_MALLOC
.
memcmp
function is not available, or does not work on
8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
bytes or more and with at least one buffer not starting on a 4-byte
boundary (such as the one on NeXT x86 OpenStep), require an
AC_LIBOBJ
replacement for `memcmp'.
mktime
function is not available, or does not work
correctly, require an AC_LIBOBJ
replacement for `mktime'.
mmap
function exists and works correctly, define
HAVE_MMAP
. Only checks private fixed mapping of already-mapped
memory.
HAVE_OBSTACK
, else require an
AC_LIBOBJ
replacement for `obstack'.
select
function's arguments, and defines those types
in SELECT_TYPE_ARG1
, SELECT_TYPE_ARG234
, and
SELECT_TYPE_ARG5
respectively. SELECT_TYPE_ARG1
defaults
to `int', SELECT_TYPE_ARG234
defaults to `int *',
and SELECT_TYPE_ARG5
defaults to `struct timeval *'.
setpgrp
takes no argument (the POSIX.1 version), define
SETPGRP_VOID
. Otherwise, it is the BSD version, which takes
two process IDs as arguments. This macro does not check whether
setpgrp
exists at all; if you need to work in that situation,
first call AC_CHECK_FUNC
for setpgrp
.
stat
or lstat
have the bug that it
succeeds when given the zero-length file name argument. The stat
and lstat
from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
this.
If it does, then define HAVE_STAT_EMPTY_STRING_BUG
(or
HAVE_LSTAT_EMPTY_STRING_BUG
) and ask for an AC_LIBOBJ
replacement of it.
setvbuf
takes the buffering type as its second argument and
the buffer pointer as the third, instead of the other way around, define
SETVBUF_REVERSED
.
strcoll
function exists and works correctly, define
HAVE_STRCOLL
. This does a bit more than
`AC_CHECK_FUNCS(strcoll)', because some systems have incorrect
definitions of strcoll
that should not be used.
strtod
function does not exist or doesn't work correctly,
ask for an AC_LIBOBJ
replacement of `strtod'. In this case,
because `strtod.c' is likely to need `pow', set the output
variable POW_LIB
to the extra library needed.
strerror_r
is available, define HAVE_STRERROR_R
. If
its implementation correctly returns a char *
, define
HAVE_WORKING_STRERROR_R
. On at least DEC UNIX 4.0[A-D] and HP-UX
B.10.20, strerror_r
returns int
. Actually, this tests
only whether it returns a scalar or an array, but that should be enough.
This is used by the common `error.c'.
strftime
in the `intl' library, for SCO UNIX.
Then, if strftime
is available, define HAVE_STRFTIME
.
HAVE_UTIME_NULL
.
vprintf
is found, define HAVE_VPRINTF
. Otherwise, if
_doprnt
is found, define HAVE_DOPRNT
. (If vprintf
is available, you may assume that vfprintf
and vsprintf
are also available.)
Go to the first, previous, next, last section, table of contents.