]> granicus.if.org Git - php/commitdiff
fixed a compile problem with glibc<=2.1.1 (#7327, #7892)
authorHartmut Holzgraefe <hholzgra@php.net>
Mon, 20 Nov 2000 21:36:38 +0000 (21:36 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Mon, 20 Nov 2000 21:36:38 +0000 (21:36 +0000)
# zlib.c still produces a warning, perhaps i should move
# the fopen wrapper to a seperate file to get things right
# but i think i will wait for the autoconf book to arrive

ext/zlib/config.m4
ext/zlib/zlib.c

index 1c4df2eee71ab2a15f3b0bb8451b1df235401f75..86a7106ebdbf5816fbfb0152427cd7113098b881 100644 (file)
@@ -42,5 +42,43 @@ if test "$PHP_ZLIB" != "no"; then
   
   AC_ADD_INCLUDE($ZLIB_INCDIR)
 
-       AC_CHECK_FUNC(fopencookie, [AC_DEFINE(HAVE_FOPENCOOKIE,1,[ ])])
+       dnl check for fopencookie() from glibc
+       AC_CHECK_FUNC(fopencookie, [ have_glibc_fopencookie=yes ])
+
+       if test "$have_glibc_fopencookie" = "yes" ; then
+               dnl this comes in two flavors:
+      dnl newer glibcs (since 2.1.2 ? )
+      dnl have a type called cookie_io_functions_t
+                 AC_TRY_COMPILE([ #define _GNU_SOURCE
+                       #include <stdio.h>
+                                                                          ],
+                          [ cookie_io_functions_t cookie; ],
+                     [ have_cookie_io_functions_t=yes ],
+                                                                                [ ] )
+
+                 if test "$have_cookie_io_functions_t" = "yes" ; then
+        cookie_io_functions_t=cookie_io_functions_t
+             have_fopen_cookie=yes
+      else
+           dnl older glibc versions (up to 2.1.2 ?)
+        dnl call it _IO_cookie_io_functions_t
+                   AC_TRY_COMPILE([ #define _GNU_SOURCE
+                       #include <stdio.h>
+                                                                          ],
+                          [ _IO_cookie_io_functions_t cookie; ],
+                     [ have_IO_cookie_io_functions_t=yes ],
+                                                                                [] )
+                   if test "$have_cookie_io_functions_t" = "yes" ; then
+          cookie_io_functions_t=_IO_cookie_io_functions_t
+               have_fopen_cookie=yes
+                   fi
+                       fi
+
+                 if test "$have_fopen_cookie" = "yes" ; then
+                   AC_DEFINE(HAVE_FOPENCOOKIE, 1, [ ])
+                         AC_DEFINE_UNQUOTED(COOKIE_IO_FUNCTIONS_T, $cookie_io_functions_t, [ ])
+      fi      
+
+       fi
+
 fi
index 3b706449f6cccea10e39c4203a79131c83f450d2..695fc37abf69bbd3de301b4c371c4d4f6061229d 100644 (file)
@@ -967,7 +967,8 @@ static int gz_closer(void *cookie) {
 }
 
 
-static cookie_io_functions_t gz_cookie_functions =   
+
+static COOKIE_IO_FUNCTIONS_T gz_cookie_functions =   
 { gz_reader 
 , gz_writer
 , gz_seeker