From: Bdale Garbee Date: Tue, 20 Apr 2010 09:16:46 +0000 (-0600) Subject: patch in missing getdtablesize from upstream gnulib X-Git-Tag: debian/1.4-1~25 X-Git-Url: https://git.gag.com/?p=debian%2Fgzip;a=commitdiff_plain;h=f48ba634b775a5c06c4bfcf113a25636c3b1c877 patch in missing getdtablesize from upstream gnulib --- diff --git a/debian/patches/getdtablesize-missing.diff b/debian/patches/getdtablesize-missing.diff new file mode 100644 index 0000000..11d72c6 --- /dev/null +++ b/debian/patches/getdtablesize-missing.diff @@ -0,0 +1,119 @@ +diff --git a/gzip/lib/getdtablesize.c b/gzip/lib/getdtablesize.c +new file mode 100644 +index 0000000..a565a2d +--- /dev/null ++++ b/gzip/lib/getdtablesize.c +@@ -0,0 +1,63 @@ ++/* getdtablesize() function for platforms that don't have it. ++ Copyright (C) 2008-2010 Free Software Foundation, Inc. ++ Written by Bruno Haible , 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 . */ ++ ++#include ++ ++/* Specification. */ ++#include ++ ++#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++#include ++ ++/* Cache for the previous getdtablesize () result. */ ++static int dtablesize; ++ ++int ++getdtablesize (void) ++{ ++ if (dtablesize == 0) ++ { ++ /* We are looking for the number N such that the valid file descriptors ++ are 0..N-1. It can be obtained through a loop as follows: ++ { ++ int fd; ++ for (fd = 3; fd < 65536; fd++) ++ if (dup2 (0, fd) == -1) ++ break; ++ return fd; ++ } ++ On Windows XP, the result is 2048. ++ The drawback of this loop is that it allocates memory for a libc ++ internal array that is never freed. ++ ++ The number N can also be obtained as the upper bound for ++ _getmaxstdio (). _getmaxstdio () returns the maximum number of open ++ FILE objects. The sanity check in _setmaxstdio reveals the maximum ++ number of file descriptors. This too allocates memory, but it is ++ freed when we call _setmaxstdio with the original value. */ ++ int orig_max_stdio = _getmaxstdio (); ++ unsigned int bound; ++ for (bound = 0x10000; _setmaxstdio (bound) < 0; bound = bound / 2) ++ ; ++ _setmaxstdio (orig_max_stdio); ++ dtablesize = bound; ++ } ++ return dtablesize; ++} ++ ++#endif +diff --git a/lib/Makefile.in b/lib/Makefile.in +index 1b42ddb..d71b78f 100644 +--- a/lib/Makefile.in ++++ b/lib/Makefile.in +@@ -95,6 +95,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/ftello.m4 \ + $(top_srcdir)/m4/getcwd-abort-bug.m4 \ + $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \ ++ $(top_srcdir)/m4/getdtablesize.m4 \ + $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gettime.m4 \ + $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/gnu-make.m4 $(top_srcdir)/m4/gnulib-common.m4 \ +@@ -901,7 +902,7 @@ EXTRA_DIST = alloca.in.h $(top_srcdir)/build-aux/announce-gen \ + fpucw.h fpurge.c stdio-impl.h freadahead.h stdio-impl.h \ + freading.h stdio-impl.h frexp.c frexp.c frexpl.c fseeko.c \ + stdio-impl.h fseterr.h stdio-impl.h ftello.c \ +- $(top_srcdir)/build-aux/gendocs.sh getcwd.c getopt.c \ ++ $(top_srcdir)/build-aux/gendocs.sh getcwd.c getopt.c getdtablesize.c \ + getopt.in.h getopt1.c getopt_int.h gettime.c gettimeofday.c \ + $(top_srcdir)/build-aux/git-version-gen \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ +@@ -975,6 +976,7 @@ EXTRA_libgzip_a_SOURCES = calloc.c calloc.c chdir-long.c chown.c \ + error.c exitfail.c fchdir.c fclose.c fcntl.c creat-safer.c \ + open-safer.c fdopendir.c openat-proc.c fflush.c fpending.c \ + fprintf.c fpurge.c frexp.c frexp.c frexpl.c fseeko.c ftello.c \ ++ getdtablesize.c \ + getcwd.c getopt.c getopt1.c gettime.c gettimeofday.c isnan.c \ + isnand.c isnan.c isnanf.c isnan.c isnanl.c lchown.c lseek.c \ + lstat.c malloc.c malloc.c mbrtowc.c mbsinit.c memchr.c \ +diff --git a/gzip/m4/getdtablesize.m4 b/gzip/m4/getdtablesize.m4 +new file mode 100644 +index 0000000..d238628 +--- /dev/null ++++ b/gzip/m4/getdtablesize.m4 +@@ -0,0 +1,15 @@ ++# getdtablesize.m4 serial 1 ++dnl Copyright (C) 2008, 2009, 2010 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 ++]) diff --git a/debian/patches/series b/debian/patches/series index e69de29..864a5ac 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -0,0 +1 @@ +getdtablesize-missing.diff