view m4/open.m4 @ 17185:dd46d4e6beea

dup, execute, fatal-signal, etc.: no 'static inline' * lib/dup.c (dup_nothrow): * lib/execute.c (nonintr_close, nonintr_open): * lib/fatal-signal.c (uninstall_handlers, install_handlers): * lib/fopen.c (orig_fopen): * lib/freadseek.c (freadptrinc): * lib/freopen.c (orig_freopen): * lib/fstat.c (orig_fstat, fstat_nothrow): * lib/get-rusage-as.c (get_rusage_as_via_setrlimit) (get_rusage_as_via_iterator): * lib/get-rusage-data.c (get_rusage_data_via_setrlimit): * lib/getdtablesize.c (_setmaxstdio_nothrow): * lib/isatty.c (_isatty_nothrow): * lib/open.c (orig_open): * lib/read.c (read_nothrow): * lib/sigprocmask.c (signal_nothrow): * lib/spawn-pipe.c (nonintr_close, nonintr_open): * lib/vasnprintf.c (MAX_ROOM_NEEDED): * lib/wait-process.c (unregister_slave_subprocess): * lib/write.c (write_nothrow): Now static, not static inline. * lib/spawn-pipe.c (nonintr_open): Define only if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__. * m4/dup.m4 (gl_PREREQ_DUP): * m4/execute.m4 (gl_EXECUTE): * m4/fatal-signal.m4 (gl_FATAL_SIGNAL): * m4/fopen.m4 (gl_PREREQ_FOPEN): * m4/freadseek.m4 (gl_FUNC_FREADSEEK): * m4/freopen.m4 (gl_PREREQ_FREOPEN): * m4/fstat.m4 (gl_PREREQ_FSTAT): * m4/getdtablesize.m4 (gl_PREREQ_GETDTABLESIZE): * m4/isatty.m4 (gl_PREREQ_ISATTY): * m4/open.m4 (gl_PREREQ_OPEN): * m4/read.m4 (gl_PREREQ_READ): * m4/signalblocking.m4 (gl_PREREQ_SIGPROCMASK): * m4/spawn-pipe.m4 (gl_SPAWN_PIPE): * m4/vasnprintf.m4 (gl_PREREQ_VASNPRINTF): * m4/wait-process.m4 (gl_WAIT_PROCESS): * m4/write.m4 (gl_PREREQ_WRITE): * modules/get-rusage-as, modules/get-rusage-data (configure.ac): Do not require AC_C_INLINE.
author Paul Eggert <eggert@cs.ucla.edu>
date Tue, 20 Nov 2012 22:25:09 -0800
parents 8250f2777afc
children e542fd46ad6f
line wrap: on
line source

# open.m4 serial 14
dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

AC_DEFUN([gl_FUNC_OPEN],
[
  AC_REQUIRE([AC_CANONICAL_HOST])
  case "$host_os" in
    mingw* | pw*)
      REPLACE_OPEN=1
      ;;
    *)
      dnl open("foo/") should not create a file when the file name has a
      dnl trailing slash.  FreeBSD only has the problem on symlinks.
      AC_CHECK_FUNCS_ONCE([lstat])
      AC_CACHE_CHECK([whether open recognizes a trailing slash],
        [gl_cv_func_open_slash],
        [# Assume that if we have lstat, we can also check symlinks.
          if test $ac_cv_func_lstat = yes; then
            touch conftest.tmp
            ln -s conftest.tmp conftest.lnk
          fi
          AC_RUN_IFELSE(
            [AC_LANG_SOURCE([[
#include <fcntl.h>
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
int main ()
{
  int result = 0;
#if HAVE_LSTAT
  if (open ("conftest.lnk/", O_RDONLY) != -1)
    result |= 1;
#endif
  if (open ("conftest.sl/", O_CREAT, 0600) >= 0)
    result |= 2;
  return result;
}]])],
            [gl_cv_func_open_slash=yes],
            [gl_cv_func_open_slash=no],
            [
changequote(,)dnl
             case "$host_os" in
               freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
                 gl_cv_func_open_slash="guessing no" ;;
               *)
                 gl_cv_func_open_slash="guessing yes" ;;
             esac
changequote([,])dnl
            ])
          rm -f conftest.sl conftest.tmp conftest.lnk
        ])
      case "$gl_cv_func_open_slash" in
        *no)
          AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1],
            [Define to 1 if open() fails to recognize a trailing slash.])
          REPLACE_OPEN=1
          ;;
      esac
      ;;
  esac
  dnl Replace open() for supporting the gnulib-defined fchdir() function,
  dnl to keep fchdir's bookkeeping up-to-date.
  m4_ifdef([gl_FUNC_FCHDIR], [
    if test $REPLACE_OPEN = 0; then
      gl_TEST_FCHDIR
      if test $HAVE_FCHDIR = 0; then
        REPLACE_OPEN=1
      fi
    fi
  ])
  dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag.
  m4_ifdef([gl_NONBLOCKING_IO], [
    if test $REPLACE_OPEN = 0; then
      gl_NONBLOCKING_IO
      if test $gl_cv_have_open_O_NONBLOCK != yes; then
        REPLACE_OPEN=1
      fi
    fi
  ])
])

# Prerequisites of lib/open.c.
AC_DEFUN([gl_PREREQ_OPEN],
[
  AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T])
  :
])