1
0
mirror of https://https.git.savannah.gnu.org/git/gnulib.git synced 2026-05-13 15:13:36 +00:00

dup2: Remove check for dup2, unless supporting old obsolete platforms.

* modules/dup2-obsolete: New file.
* m4/dup2-obsolete.m4: New file.
* m4/dup2.m4 (gl_FUNC_DUP2): Don't check whether dup2 exists if
gl_FUNC_DUP2_OBSOLETE is not also defined.
* modules/dup2 (Depends-on): Add dup2-obsolete.
* doc/posix-functions/dup2.texi: Mention module dup2-obsolete.
This commit is contained in:
Bruno Haible
2011-04-25 19:45:09 +02:00
parent e3a7a9fd96
commit 4a2a66e445
6 changed files with 66 additions and 7 deletions

View File

@@ -1,3 +1,13 @@
2011-04-25 Bruno Haible <bruno@clisp.org>
dup2: Remove check for dup2, unless supporting old obsolete platforms.
* modules/dup2-obsolete: New file.
* m4/dup2-obsolete.m4: New file.
* m4/dup2.m4 (gl_FUNC_DUP2): Don't check whether dup2 exists if
gl_FUNC_DUP2_OBSOLETE is not also defined.
* modules/dup2 (Depends-on): Add dup2-obsolete.
* doc/posix-functions/dup2.texi: Mention module dup2-obsolete.
2011-04-25 Bruno Haible <bruno@clisp.org>
strnlen: Avoid memchr related link error on old obsolete platforms.

View File

@@ -4,9 +4,9 @@
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/dup2.html}
Gnulib module: dup2
Gnulib module: dup2 or dup2-obsolete
Portability problems fixed by Gnulib:
Portability problems fixed by either Gnulib module @code{dup2} or @code{dup2-obsolete}:
@itemize
@item
This function always returns 0 for success on some platforms:
@@ -34,7 +34,10 @@ This function returns @code{EMFILE} instead of @code{EBADF} for
extremely large targets, which interferes with using
@code{dup2(fd,fd)==fd)} as the minimal @code{EBADF} filter:
FreeBSD 6.1, Cygwin 1.5.
@end itemize
Portability problems fixed by Gnulib module @code{dup2-obsolete}:
@itemize
@item
This function is missing on some older platforms.
@end itemize

11
m4/dup2-obsolete.m4 Normal file
View File

@@ -0,0 +1,11 @@
# dup2-obsolete.m4 serial 1
dnl Copyright (C) 2011 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_DUP2_OBSOLETE],
[
dnl The real code is in dup2.m4.
:
])

View File

@@ -8,11 +8,17 @@ AC_DEFUN([gl_FUNC_DUP2],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
AC_CHECK_FUNCS_ONCE([dup2 fcntl])
if test $ac_cv_func_dup2 = no; then
HAVE_DUP2=0
AC_LIBOBJ([dup2])
else
m4_ifdef([gl_FUNC_DUP2_OBSOLETE], [
AC_CHECK_FUNCS_ONCE([dup2])
if test $ac_cv_func_dup2 = no; then
HAVE_DUP2=0
AC_LIBOBJ([dup2])
fi
], [
AC_DEFINE([HAVE_DUP2], [1], [Define to 1 if you have the 'dup2' function.])
])
AC_CHECK_FUNCS_ONCE([fcntl])
if test $HAVE_DUP2 = 1; then
AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works],
[AC_RUN_IFELSE([
AC_LANG_PROGRAM([[#include <unistd.h>

View File

@@ -7,6 +7,7 @@ m4/dup2.m4
Depends-on:
unistd
dup2-obsolete
configure.ac:
gl_FUNC_DUP2

28
modules/dup2-obsolete Normal file
View File

@@ -0,0 +1,28 @@
Description:
dup2() function for old platforms.
Status:
obsolete
Notice:
This module is obsolete.
Files:
m4/dup2-obsolete.m4
Depends-on:
dup2
configure.ac:
gl_FUNC_DUP2_OBSOLETE
Makefile.am:
Include:
<unistd.h>
License:
LGPLv2+
Maintainer:
Bruno Haible