1# dup.m4 serial 4 2dnl Copyright (C) 2011-2017 Free Software Foundation, Inc. 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_DUP], 8[ 9 AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) 10 AC_REQUIRE([gl_MSVC_INVAL]) 11 if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then 12 REPLACE_DUP=1 13 fi 14 dnl Replace dup() for supporting the gnulib-defined fchdir() function, 15 dnl to keep fchdir's bookkeeping up-to-date. 16 m4_ifdef([gl_FUNC_FCHDIR], [ 17 gl_TEST_FCHDIR 18 if test $HAVE_FCHDIR = 0; then 19 REPLACE_DUP=1 20 fi 21 ]) 22 AC_CACHE_CHECK([whether dup works], [gl_cv_func_dup_works], 23 [AC_RUN_IFELSE( 24 [AC_LANG_PROGRAM([[#include <unistd.h> 25 #include <fcntl.h> 26 #include <errno.h>]], 27 [[/* On OS/2 kLIBC, dup does not work on a directory fd. */ 28 int fd = open (".", O_RDONLY); 29 return fd < 0 ? 1 : dup (fd) < 0 ? 2 : 0; 30 ]]) 31 ], 32 [gl_cv_func_dup_works=yes], 33 [gl_cv_func_dup_works=no], 34 [gl_cv_func_dup_works='guessing yes']) 35 ]) 36 case "$gl_cv_func_dup_works" in 37 *yes) ;; 38 *) 39 REPLACE_DUP=1 40 ;; 41 esac 42]) 43 44# Prerequisites of lib/dup.c. 45AC_DEFUN([gl_PREREQ_DUP], [:]) 46