Mercurial > hg > octave-kai > gnulib-hg
changeset 11893:476cefda5290
Tolerate declared but missing pipe2 syscall.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 24 Aug 2009 00:42:22 +0200 |
parents | 26347f7d2cac |
children | 6b94c8deb683 |
files | ChangeLog lib/pipe2.c lib/unistd.in.h m4/pipe2.m4 modules/pipe2 |
diffstat | 5 files changed, 27 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-08-23 Bruno Haible <bruno@clisp.org> + + Tolerate declared but missing pipe2 syscall. + * lib/pipe2.c (pipe2): Invoke original pipe2 function first, if + available. + * lib/unistd.in.h (pipe2): If the function is already present, + override it. + * m4/pipe2.m4 (gl_FUNC_PIPE2): Remove AC_LIBOBJ invocation. + * modules/pipe2 (Makefile.am): Compile pipe2.c always. + Reported by Paolo Bonzini. + 2009-08-23 Bruno Haible <bruno@clisp.org> * lib/pipe2.c (pipe2): Move #ifs inside function.
--- a/lib/pipe2.c +++ b/lib/pipe2.c @@ -40,6 +40,17 @@ int pipe2 (int fd[2], int flags) { +#if HAVE_PIPE2 +# undef pipe2 + /* Try the system call first, if it exists. (We may be running with a glibc + that has the function but with an older kernel that lacks it.) */ + { + int result = pipe2 (fd, flags); + if (!(result < 0 && errno == ENOSYS)) + return result; + } +#endif + #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Native Woe32 API. */
--- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -562,9 +562,10 @@ Return 0 upon success, or -1 with errno set upon failure. See also the Linux man page at <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */ -# if !@HAVE_PIPE2@ +# if @HAVE_PIPE2@ +# define pipe2 rpl_pipe2 +# endif extern int pipe2 (int fd[2], int flags); -# endif #elif defined GNULIB_POSIXCHECK # undef pipe2 # define pipe2(f,o) \
--- a/m4/pipe2.m4 +++ b/m4/pipe2.m4 @@ -1,4 +1,4 @@ -# pipe2.m4 serial 1 +# pipe2.m4 serial 2 dnl Copyright (C) 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -14,6 +14,5 @@ AC_CHECK_FUNCS_ONCE([pipe2]) if test $ac_cv_func_pipe2 != yes; then HAVE_PIPE2=0 - AC_LIBOBJ([pipe2]) fi ])