Work around open() bug on HP-UX 11 and Solaris 9.
[gnulib.git] / m4 / open.m4
1 # open.m4 serial 2
2 dnl Copyright (C) 2007-2008 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([gl_FUNC_OPEN],
8 [
9   AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
10   AC_REQUIRE([AC_CANONICAL_HOST])
11   case "$host_os" in
12     mingw* | pw*)
13       REPLACE_OPEN=1
14       AC_LIBOBJ([open])
15       ;;
16     *)
17       dnl open("foo/") should not create a file when the file name has a
18       dnl trailing slash.
19       AC_CACHE_CHECK([whether open recognizes a trailing slash],
20         [gl_cv_func_open_slash],
21         [
22           AC_TRY_RUN([
23 #include <fcntl.h>
24 #if HAVE_UNISTD_H
25 # include <unistd.h>
26 #endif
27 int main ()
28 {
29   return open ("conftest.sl/", O_CREAT, 0600) >= 0;
30 }], [gl_cv_func_open_slash=yes], [gl_cv_func_open_slash=no],
31             [
32 changequote(,)dnl
33              case "$host_os" in
34                solaris2.[0-9]*) gl_cv_func_open_slash="guessing no" ;;
35                hpux*)           gl_cv_func_open_slash="guessing no" ;;
36                *)               gl_cv_func_open_slash="guessing yes" ;;
37              esac
38 changequote([,])dnl
39             ])
40           rm -f conftest.sl
41         ])
42       case "$gl_cv_func_open_slash" in
43         *no)
44           AC_DEFINE([OPEN_TRAILING_SLASH_BUG], 1,
45             [Define to 1 if open() fails to recognize a trailing slash.])
46           REPLACE_OPEN=1
47           AC_LIBOBJ([open])
48           ;;
49       esac
50       ;;
51   esac
52 ])