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
This commit is contained in:
Hartmut Holzgraefe 2000-11-21 00:40:13 +00:00
parent ee23c53108
commit cedb39ee56
4 changed files with 109 additions and 86 deletions

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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:
*/