Merge from gnulib
This incorporates: 2017-07-16 explicit_bzero: new module 2017-07-15 getdtablesize: Add minimal support for OpenVMS. * lib/getdtablesize.c, lib/string.in.h, m4/getdtablesize.m4: * m4/string_h.m4: Copy from Gnulib. * lib/gnulib.mk.in: Regenerate.
This commit is contained in:
parent
7463636591
commit
252444aaa3
5 changed files with 59 additions and 22 deletions
|
@ -1,4 +1,4 @@
|
|||
/* getdtablesize() function for platforms that don't have it.
|
||||
/* getdtablesize() function: Return maximum possible file descriptor value + 1.
|
||||
Copyright (C) 2008-2017 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2008.
|
||||
|
||||
|
|
|
@ -125,6 +125,7 @@ GNULIB_DUP2 = @GNULIB_DUP2@
|
|||
GNULIB_DUP3 = @GNULIB_DUP3@
|
||||
GNULIB_ENVIRON = @GNULIB_ENVIRON@
|
||||
GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
|
||||
GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@
|
||||
GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
|
||||
GNULIB_FCHDIR = @GNULIB_FCHDIR@
|
||||
GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
|
||||
|
@ -390,6 +391,7 @@ HAVE_DPRINTF = @HAVE_DPRINTF@
|
|||
HAVE_DUP2 = @HAVE_DUP2@
|
||||
HAVE_DUP3 = @HAVE_DUP3@
|
||||
HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
|
||||
HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
|
||||
HAVE_FACCESSAT = @HAVE_FACCESSAT@
|
||||
HAVE_FCHDIR = @HAVE_FCHDIR@
|
||||
HAVE_FCHMODAT = @HAVE_FCHMODAT@
|
||||
|
@ -2411,6 +2413,7 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
|
||||
-e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
|
||||
-e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
|
||||
-e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
|
||||
-e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
|
||||
|
@ -2449,7 +2452,8 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
|
|||
-e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
|
||||
-e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
|
||||
< $(srcdir)/string.in.h | \
|
||||
sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
|
||||
sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
|
||||
-e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
|
||||
-e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
|
||||
-e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
|
||||
-e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
|
||||
|
|
|
@ -74,6 +74,23 @@
|
|||
/* The definition of _GL_WARN_ON_USE is copied here. */
|
||||
|
||||
|
||||
/* Clear a block of memory. The compiler will not delete a call to
|
||||
this function, even if the block is dead after the call. */
|
||||
#if @GNULIB_EXPLICIT_BZERO@
|
||||
# if ! @HAVE_EXPLICIT_BZERO@
|
||||
_GL_FUNCDECL_SYS (explicit_bzero, void,
|
||||
(void *__dest, size_t __n) _GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (explicit_bzero, void, (void *__dest, size_t __n));
|
||||
_GL_CXXALIASWARN (explicit_bzero);
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef explicit_bzero
|
||||
# if HAVE_RAW_DECL_EXPLICIT_BZERO
|
||||
_GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is unportable - "
|
||||
"use gnulib module explicit_bzero for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Find the index of the least-significant set bit. */
|
||||
#if @GNULIB_FFSL@
|
||||
# if !@HAVE_FFSL@
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# getdtablesize.m4 serial 6
|
||||
# getdtablesize.m4 serial 7
|
||||
dnl Copyright (C) 2008-2017 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -12,29 +12,43 @@ AC_DEFUN([gl_FUNC_GETDTABLESIZE],
|
|||
AC_CHECK_DECLS_ONCE([getdtablesize])
|
||||
if test $ac_cv_func_getdtablesize = yes &&
|
||||
test $ac_cv_have_decl_getdtablesize = yes; then
|
||||
# Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft limit
|
||||
# up to an unchangeable hard limit; all other platforms correctly
|
||||
# require setrlimit before getdtablesize() can report a larger value.
|
||||
AC_CACHE_CHECK([whether getdtablesize works],
|
||||
[gl_cv_func_getdtablesize_works],
|
||||
[AC_RUN_IFELSE([
|
||||
AC_LANG_PROGRAM([[#include <unistd.h>]],
|
||||
[int size = getdtablesize();
|
||||
if (dup2 (0, getdtablesize()) != -1)
|
||||
return 1;
|
||||
if (size != getdtablesize())
|
||||
return 2;
|
||||
])],
|
||||
[gl_cv_func_getdtablesize_works=yes],
|
||||
[gl_cv_func_getdtablesize_works=no],
|
||||
[case "$host_os" in
|
||||
cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows
|
||||
gl_cv_func_getdtablesize_works="guessing no" ;;
|
||||
*) gl_cv_func_getdtablesize_works="guessing yes" ;;
|
||||
esac])
|
||||
[dnl There are two concepts: the "maximum possible file descriptor value + 1"
|
||||
dnl and the "maximum number of open file descriptors in a process".
|
||||
dnl Per SUSv2 and POSIX, getdtablesize() should return the first one.
|
||||
dnl On most platforms, the first and the second concept are the same.
|
||||
dnl On OpenVMS, however, they are different and getdtablesize() returns
|
||||
dnl the second one; thus the test below fails. But we don't care
|
||||
dnl because there's no good way to write a replacement getdtablesize().
|
||||
case "$host_os" in
|
||||
vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;;
|
||||
*)
|
||||
dnl Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft
|
||||
dnl limit up to an unchangeable hard limit; all other platforms
|
||||
dnl correctly require setrlimit before getdtablesize() can report
|
||||
dnl a larger value.
|
||||
AC_RUN_IFELSE([
|
||||
AC_LANG_PROGRAM([[#include <unistd.h>]],
|
||||
[int size = getdtablesize();
|
||||
if (dup2 (0, getdtablesize()) != -1)
|
||||
return 1;
|
||||
if (size != getdtablesize())
|
||||
return 2;
|
||||
])],
|
||||
[gl_cv_func_getdtablesize_works=yes],
|
||||
[gl_cv_func_getdtablesize_works=no],
|
||||
[case "$host_os" in
|
||||
cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows
|
||||
gl_cv_func_getdtablesize_works="guessing no" ;;
|
||||
*) gl_cv_func_getdtablesize_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
case "$gl_cv_func_getdtablesize_works" in
|
||||
*yes) ;;
|
||||
*yes | "no (limitation)") ;;
|
||||
*) REPLACE_GETDTABLESIZE=1 ;;
|
||||
esac
|
||||
else
|
||||
|
|
|
@ -43,6 +43,7 @@ AC_DEFUN([gl_STRING_MODULE_INDICATOR],
|
|||
|
||||
AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_EXPLICIT_BZERO=0; AC_SUBST([GNULIB_EXPLICIT_BZERO])
|
||||
GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL])
|
||||
GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL])
|
||||
GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR])
|
||||
|
@ -82,6 +83,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
|||
GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP])
|
||||
HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN])
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO])
|
||||
HAVE_FFSL=1; AC_SUBST([HAVE_FFSL])
|
||||
HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL])
|
||||
HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR])
|
||||
|
|
Loading…
Add table
Reference in a new issue