bug-gnulib
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]