[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
new module 'getdtablesize'
From: |
Bruno Haible |
Subject: |
new module 'getdtablesize' |
Date: |
Sun, 5 Oct 2008 16:50:50 +0200 |
User-agent: |
KMail/1.5.4 |
This is a low-hanging fruit. But it allows to simplify the posix_spawn_* modules
a bit.
2008-10-05 Bruno Haible <address@hidden>
New module 'getdtablesize'.
* lib/unistd.in.h (getdtablesize): New declaration.
* lib/getdtablesize.c: New file.
* m4/getdtablesize.m4: New file.
* modules/getdtablesize: New file.
* m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Initialize
GNULIB_GETDTABLESIZE, HAVE_GETDTABLESIZE.
* modules/unistd (Makefile.am): Substitute GNULIB_GETDTABLESIZE,
HAVE_GETDTABLESIZE.
* doc/glibc-functions/getdtablesize.texi: Mention the new module.
========================== lib/getdtablesize.c ===============================
/* getdtablesize() function for platforms that don't have it.
Copyright (C) 2008 Free Software Foundation, Inc.
Written by Bruno Haible <address@hidden>, 2008.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
/* Specification. */
#include <unistd.h>
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
#include <stdio.h>
int
getdtablesize (void)
{
return _getmaxstdio ();
}
#endif
========================== m4/getdtablesize.m4 ===============================
# getdtablesize.m4 serial 1
dnl Copyright (C) 2008 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_GETDTABLESIZE],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_CHECK_FUNCS_ONCE([getdtablesize])
if test $ac_cv_func_getdtablesize != yes; then
HAVE_GETDTABLESIZE=0
AC_LIBOBJ([getdtablesize])
fi
])
========================= modules/getdtablesize ==============================
Description:
getdtablesize() function: return maximum number of file descriptors.
Files:
lib/getdtablesize.c
m4/getdtablesize.m4
Depends-on:
unistd
configure.ac:
gl_FUNC_GETDTABLESIZE
gl_UNISTD_MODULE_INDICATOR([getdtablesize])
Makefile.am:
Include:
<unistd.h>
License:
LGPL
Maintainer:
Bruno Haible
==============================================================================
*** lib/unistd.in.h.orig 2008-10-05 16:48:17.000000000 +0200
--- lib/unistd.in.h 2008-10-05 16:29:47.000000000 +0200
***************
*** 201,206 ****
--- 201,220 ----
#endif
+ #if @GNULIB_GETDTABLESIZE@
+ # if address@hidden@
+ /* Return the maximum number of file descriptors in the current process. */
+ extern int getdtablesize (void);
+ # endif
+ #elif defined GNULIB_POSIXCHECK
+ # undef getdtablesize
+ # define getdtablesize() \
+ (GL_LINK_WARNING ("getdtablesize is unportable - " \
+ "use gnulib module getdtablesize for portability"), \
+ getdtablesize ())
+ #endif
+
+
#if @GNULIB_GETLOGIN_R@
/* Copies the user's login name to NAME.
The array pointed to by NAME has room for SIZE bytes.
*** m4/unistd_h.m4.orig 2008-10-05 16:48:17.000000000 +0200
--- m4/unistd_h.m4 2008-10-05 16:27:17.000000000 +0200
***************
*** 1,4 ****
! # unistd_h.m4 serial 12
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
--- 1,4 ----
! # unistd_h.m4 serial 13
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
***************
*** 39,44 ****
--- 39,45 ----
GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+ GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
***************
*** 51,56 ****
--- 52,58 ----
HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
+ HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
*** modules/unistd.orig 2008-10-05 16:48:17.000000000 +0200
--- modules/unistd 2008-10-05 16:26:29.000000000 +0200
***************
*** 31,36 ****
--- 31,37 ----
-e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
-e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
-e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
-e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
-e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
-e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
***************
*** 42,47 ****
--- 43,49 ----
-e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
-e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
-e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
-e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
-e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
-e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
*** doc/glibc-functions/getdtablesize.texi.orig 2008-10-05 16:48:16.000000000
+0200
--- doc/glibc-functions/getdtablesize.texi 2008-10-05 16:25:29.000000000
+0200
***************
*** 2,16 ****
@subsection @code{getdtablesize}
@findex getdtablesize
! Gnulib module: ---
Portability problems fixed by Gnulib:
@itemize
@end itemize
Portability problems not fixed by Gnulib:
@itemize
- @item
- This function is missing on some platforms:
- mingw.
@end itemize
--- 2,16 ----
@subsection @code{getdtablesize}
@findex getdtablesize
! Gnulib module: getdtablesize
Portability problems fixed by Gnulib:
@itemize
+ @item
+ This function is missing on some platforms:
+ mingw.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@end itemize
- new module 'getdtablesize',
Bruno Haible <=