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:
10
ChangeLog
10
ChangeLog
@@ -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.
|
||||
|
||||
@@ -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
11
m4/dup2-obsolete.m4
Normal 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.
|
||||
:
|
||||
])
|
||||
16
m4/dup2.m4
16
m4/dup2.m4
@@ -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>
|
||||
|
||||
@@ -7,6 +7,7 @@ m4/dup2.m4
|
||||
|
||||
Depends-on:
|
||||
unistd
|
||||
dup2-obsolete
|
||||
|
||||
configure.ac:
|
||||
gl_FUNC_DUP2
|
||||
|
||||
28
modules/dup2-obsolete
Normal file
28
modules/dup2-obsolete
Normal 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
|
||||
Reference in New Issue
Block a user