Commit | Line | Data |
---|---|---|
c0c3707f | 1 | # fchdir.m4 serial 25 |
5df4cba6 | 2 | dnl Copyright (C) 2006-2020 Free Software Foundation, Inc. |
6ec2e0f5 SDJ |
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_FCHDIR], | |
8 | [ | |
9 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | |
10 | AC_REQUIRE([gl_DIRENT_H_DEFAULTS]) | |
11 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | |
12 | ||
13 | AC_CHECK_DECLS_ONCE([fchdir]) | |
14 | if test $ac_cv_have_decl_fchdir = no; then | |
15 | HAVE_DECL_FCHDIR=0 | |
16 | fi | |
17 | ||
18 | AC_REQUIRE([gl_TEST_FCHDIR]) | |
19 | if test $HAVE_FCHDIR = 0; then | |
20 | AC_LIBOBJ([fchdir]) | |
21 | gl_PREREQ_FCHDIR | |
22 | AC_DEFINE([REPLACE_FCHDIR], [1], | |
23 | [Define to 1 if gnulib's fchdir() replacement is used.]) | |
24 | dnl We must also replace anything that can manipulate a directory fd, | |
25 | dnl to keep our bookkeeping up-to-date. We don't have to replace | |
26 | dnl fstatat, since no platform has fstatat but lacks fchdir. | |
27 | AC_CACHE_CHECK([whether open can visit directories], | |
28 | [gl_cv_func_open_directory_works], | |
29 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <fcntl.h> | |
30 | ]], [return open(".", O_RDONLY) < 0;])], | |
31 | [gl_cv_func_open_directory_works=yes], | |
32 | [gl_cv_func_open_directory_works=no], | |
33 | [case "$host_os" in | |
c0c3707f CB |
34 | # Guess yes on Linux systems. |
35 | linux-* | linux) gl_cv_func_open_directory_works="guessing yes" ;; | |
36 | # Guess yes on glibc systems. | |
37 | *-gnu* | gnu*) gl_cv_func_open_directory_works="guessing yes" ;; | |
38 | # Guess no on native Windows. | |
39 | mingw*) gl_cv_func_open_directory_works="guessing no" ;; | |
40 | # If we don't know, obey --enable-cross-guesses. | |
41 | *) gl_cv_func_open_directory_works="$gl_cross_guess_normal" ;; | |
6ec2e0f5 SDJ |
42 | esac |
43 | ])]) | |
44 | case "$gl_cv_func_open_directory_works" in | |
45 | *yes) ;; | |
46 | *) | |
47 | AC_DEFINE([REPLACE_OPEN_DIRECTORY], [1], [Define to 1 if open() should | |
48 | work around the inability to open a directory.]) | |
49 | ;; | |
50 | esac | |
51 | fi | |
52 | ]) | |
53 | ||
54 | # Determine whether to use the overrides in lib/fchdir.c. | |
55 | AC_DEFUN([gl_TEST_FCHDIR], | |
56 | [ | |
57 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | |
58 | AC_CHECK_FUNCS_ONCE([fchdir]) | |
59 | if test $ac_cv_func_fchdir = no; then | |
60 | HAVE_FCHDIR=0 | |
61 | fi | |
62 | ]) | |
63 | ||
64 | # Prerequisites of lib/fchdir.c. | |
65 | AC_DEFUN([gl_PREREQ_FCHDIR], [:]) |