diff options
| author | Hartmut Holzgraefe <hholzgra@php.net> | 2000-11-21 00:40:13 +0000 | 
|---|---|---|
| committer | Hartmut Holzgraefe <hholzgra@php.net> | 2000-11-21 00:40:13 +0000 | 
| commit | cedb39ee560fde66b7c5fddeaba2aeed0deffcf5 (patch) | |
| tree | db8e584984967ed7ea1a878dfbed13b963b0f85b /ext/zlib | |
| parent | ee23c5310860b42b0b028bdbc7ccc8d7c1b30ec0 (diff) | |
| download | php-git-cedb39ee560fde66b7c5fddeaba2aeed0deffcf5.tar.gz | |
all the _GNU_SOURCE dependant stuff is now in zlib_fopen_wrapper.c
so all the #define/#include workarounds in zlib.c are no longer needed
Diffstat (limited to 'ext/zlib')
| -rw-r--r-- | ext/zlib/Makefile.in | 2 | ||||
| -rw-r--r-- | ext/zlib/php_zlib.h | 3 | ||||
| -rw-r--r-- | ext/zlib/zlib.c | 85 | ||||
| -rw-r--r-- | ext/zlib/zlib_fopen_wrapper.c | 105 | 
4 files changed, 109 insertions, 86 deletions
diff --git a/ext/zlib/Makefile.in b/ext/zlib/Makefile.in index 3b767fb7fa..bda6385578 100644 --- a/ext/zlib/Makefile.in +++ b/ext/zlib/Makefile.in @@ -1,6 +1,6 @@  LTLIBRARY_NAME    = libzlib.la -LTLIBRARY_SOURCES = zlib.c +LTLIBRARY_SOURCES = zlib.c zlib_fopen_wrapper.c  LTLIBRARY_SHARED_NAME = zlib.la  LTLIBRARY_SHARED_LIBADD = $(ZLIB_SHARED_LIBADD) diff --git a/ext/zlib/php_zlib.h b/ext/zlib/php_zlib.h index b856fc9fd0..c977133bc5 100644 --- a/ext/zlib/php_zlib.h +++ b/ext/zlib/php_zlib.h @@ -61,6 +61,9 @@ PHP_FUNCTION(gzinflate);  PHP_FUNCTION(gzencode);  PHP_FUNCTION(ob_gzhandler); +FILE *zlib_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd, char **opened_path); + +  #ifdef ZTS  #define ZLIBLS_D php_zlib_globals *zlib_globals  #define ZLIBLS_DC , ZLIBLS_D diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 695fc37abf..5a8a634eab 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -19,15 +19,6 @@  /* $Id$ */  #define IS_EXT_MODULE -#ifndef PHP_WIN32 -#include "php_config.h" -#endif - -#if HAVE_FOPENCOOKIE  -#define _GNU_SOURCE -#include <stdio.h> -#endif  -  #include "php.h"  #include "SAPI.h" @@ -81,10 +72,6 @@ int zlib_globals_id;  static php_zlib_globals zlib_globals;  #endif -#if HAVE_FOPENCOOKIE  -static FILE *zlib_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd, char **opened_path); -#endif  -  #define OS_CODE			0x03 /* FIXME */  #define CODING_GZIP		1  #define CODING_DEFLATE	2 @@ -941,78 +928,6 @@ PHP_FUNCTION(gzinflate)  }  /* }}} */ -#if HAVE_FOPENCOOKIE -struct gz_cookie { -	gzFile gz_file; -}; - -static ssize_t gz_reader(void *cookie, char *buffer, size_t size) -{ -	return gzread(((struct gz_cookie *)cookie)->gz_file,buffer,size);  -} - -static ssize_t gz_writer(void *cookie, const char *buffer, size_t size) { -	return gzwrite(((struct gz_cookie *)cookie)->gz_file,(char *)buffer,size);  -} - -static int gz_seeker(void *cookie,off_t position, int whence) { -	return gzseek(((struct gz_cookie *)cookie)->gz_file,(z_off_t)position,whence);  -} - -static int gz_closer(void *cookie) { -	int ret=gzclose(((struct gz_cookie *)cookie)->gz_file); -	efree(cookie); -	cookie=NULL;   -	return ret; -} - - - -static COOKIE_IO_FUNCTIONS_T gz_cookie_functions =    -{ gz_reader  -, gz_writer -, gz_seeker -, gz_closer -}; - -static FILE *zlib_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd, char **opened_path) -{ -	struct gz_cookie *gc = NULL; -	FILE *fp; -    int fissock=0, fsocketd=0; - -	gc = (struct gz_cookie *)emalloc(sizeof(struct gz_cookie)); - -	if(gc) { -		*issock = 0; -		 -		while(*path!=':')  -			path++; -		 -		path++; - -		fp = php_fopen_wrapper(path, mode, options|IGNORE_URL, &fissock, &fsocketd, NULL); -		 -		if (!fp) { -			efree(gc); -			return NULL; -		} -		 -		gc->gz_file = gzdopen(fileno(fp), mode); -                 -		if(gc->gz_file) { -			return fopencookie(gc,mode,gz_cookie_functions);		 -		} else { -			efree(gc); -			return NULL; -		} -	} -	errno = ENOENT; -	return NULL; -} - - -#endif  static int php_do_deflate(uint str_length, Bytef **p_buffer, uint *p_buf_used ZLIBLS_DC) diff --git a/ext/zlib/zlib_fopen_wrapper.c b/ext/zlib/zlib_fopen_wrapper.c new file mode 100644 index 0000000000..d2eab5939f --- /dev/null +++ b/ext/zlib/zlib_fopen_wrapper.c @@ -0,0 +1,105 @@ +/* +   +----------------------------------------------------------------------+ +   | PHP version 4.0                                                      | +   +----------------------------------------------------------------------+ +   | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group                   | +   +----------------------------------------------------------------------+ +   | This source file is subject to version 2.02 of the PHP license,      | +   | that is bundled with this package in the file LICENSE, and is        | +   | available at through the world-wide-web at                           | +   | http://www.php.net/license/2_02.txt.                                 | +   | If you did not receive a copy of the PHP license and are unable to   | +   | obtain it through the world-wide-web, please send a note to          | +   | license@php.net so we can mail you a copy immediately.               | +   +----------------------------------------------------------------------+ +   | Authors: Rasmus Lerdorf <rasmus@lerdorf.on.ca>                       | +   |          Stefan Röhrich <sr@linux.de>                                | +   +----------------------------------------------------------------------+ + */ +/* $Id$ */ +#define IS_EXT_MODULE +#define _GNU_SOURCE + +#include "php.h" +#include "php_zlib.h" +#include "fopen-wrappers.h" + +#if HAVE_FOPENCOOKIE  + + +struct gz_cookie { +	gzFile gz_file; +}; + +static ssize_t gz_reader(void *cookie, char *buffer, size_t size) +{ +	return gzread(((struct gz_cookie *)cookie)->gz_file,buffer,size);  +} + +static ssize_t gz_writer(void *cookie, const char *buffer, size_t size) { +	return gzwrite(((struct gz_cookie *)cookie)->gz_file,(char *)buffer,size);  +} + +static int gz_seeker(void *cookie,off_t position, int whence) { +	return gzseek(((struct gz_cookie *)cookie)->gz_file,(z_off_t)position,whence);  +} + +static int gz_closer(void *cookie) { +	int ret=gzclose(((struct gz_cookie *)cookie)->gz_file); +	free(cookie); +	cookie=NULL;   +	return ret; +} + + + +static COOKIE_IO_FUNCTIONS_T gz_cookie_functions =    +{ gz_reader  +, gz_writer +, gz_seeker +, gz_closer +}; + +FILE *zlib_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd, char **opened_path) +{ +	struct gz_cookie *gc = NULL; +	FILE *fp; +    int fissock=0, fsocketd=0; + +	gc = (struct gz_cookie *)malloc(sizeof(struct gz_cookie)); + +	if(gc) { +		*issock = 0; +		 +		while(*path!=':')  +			path++; +		 +		path++; + +		fp = php_fopen_wrapper(path, mode, options|IGNORE_URL, &fissock, &fsocketd, NULL); +		 +		if (!fp) { +			free(gc); +			return NULL; +		} +		 +		gc->gz_file = gzdopen(fileno(fp), mode); +                 +		if(gc->gz_file) { +			return fopencookie(gc,mode,gz_cookie_functions);		 +		} else { +		    free(gc); +			return NULL; +		} +	} +	errno = ENOENT; +	return NULL; +} +#endif + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + */  | 
