Update gnulib to current upstream master
[deliverable/binutils-gdb.git] / gdb / gnulib / import / m4 / open.m4
CommitLineData
7a6dbc2f
SDJ
1# open.m4 serial 15
2dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
6ec2e0f5
SDJ
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([gl_FUNC_OPEN],
8[
9 AC_REQUIRE([AC_CANONICAL_HOST])
7a6dbc2f 10 AC_REQUIRE([gl_PREPROC_O_CLOEXEC])
6ec2e0f5
SDJ
11 case "$host_os" in
12 mingw* | pw*)
13 REPLACE_OPEN=1
14 ;;
15 *)
16 dnl open("foo/") should not create a file when the file name has a
17 dnl trailing slash. FreeBSD only has the problem on symlinks.
18 AC_CHECK_FUNCS_ONCE([lstat])
7a6dbc2f
SDJ
19 if test "$gl_cv_macro_O_CLOEXEC" != yes; then
20 REPLACE_OPEN=1
21 fi
6ec2e0f5
SDJ
22 AC_CACHE_CHECK([whether open recognizes a trailing slash],
23 [gl_cv_func_open_slash],
24 [# Assume that if we have lstat, we can also check symlinks.
25 if test $ac_cv_func_lstat = yes; then
26 touch conftest.tmp
27 ln -s conftest.tmp conftest.lnk
28 fi
29 AC_RUN_IFELSE(
30 [AC_LANG_SOURCE([[
31#include <fcntl.h>
32#if HAVE_UNISTD_H
33# include <unistd.h>
34#endif
35int main ()
36{
37 int result = 0;
38#if HAVE_LSTAT
39 if (open ("conftest.lnk/", O_RDONLY) != -1)
40 result |= 1;
41#endif
42 if (open ("conftest.sl/", O_CREAT, 0600) >= 0)
43 result |= 2;
44 return result;
45}]])],
46 [gl_cv_func_open_slash=yes],
47 [gl_cv_func_open_slash=no],
48 [
49changequote(,)dnl
50 case "$host_os" in
51 freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
52 gl_cv_func_open_slash="guessing no" ;;
53 *)
54 gl_cv_func_open_slash="guessing yes" ;;
55 esac
56changequote([,])dnl
57 ])
58 rm -f conftest.sl conftest.tmp conftest.lnk
59 ])
60 case "$gl_cv_func_open_slash" in
61 *no)
62 AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1],
63 [Define to 1 if open() fails to recognize a trailing slash.])
64 REPLACE_OPEN=1
65 ;;
66 esac
67 ;;
68 esac
69 dnl Replace open() for supporting the gnulib-defined fchdir() function,
70 dnl to keep fchdir's bookkeeping up-to-date.
71 m4_ifdef([gl_FUNC_FCHDIR], [
72 if test $REPLACE_OPEN = 0; then
73 gl_TEST_FCHDIR
74 if test $HAVE_FCHDIR = 0; then
75 REPLACE_OPEN=1
76 fi
77 fi
78 ])
79 dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag.
80 m4_ifdef([gl_NONBLOCKING_IO], [
81 if test $REPLACE_OPEN = 0; then
82 gl_NONBLOCKING_IO
83 if test $gl_cv_have_open_O_NONBLOCK != yes; then
84 REPLACE_OPEN=1
85 fi
86 fi
87 ])
88])
89
90# Prerequisites of lib/open.c.
91AC_DEFUN([gl_PREREQ_OPEN],
92[
93 AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T])
94 :
95])
This page took 0.11063 seconds and 4 git commands to generate.