cvs: php4 /ext/bz2 bz2.c php_bz2.h /ext/standard ftp_fopen_wrapper.c http_fopen_wrapper.c php_fopen_wrapper.c php_fopen_wrappers.h /ext/zlib
php_zlib.h zlib.c zlib_fopen_wrapper.c /main php_streams.h streams.c user_streams.c
| From: | Wez Furlong | Date: | Sun, 24 Mar 2002 18:05:58 +0000 |
| Subject: | cvs: php4 /ext/bz2 bz2.c php_bz2.h /ext/standard ftp_fopen_wrapper.c http_fopen_wrapper.c php_fopen_wrapper.c php_fopen_wrappers.h /ext/zlib php_zlib.h zlib.c zlib_fopen_wrapper.c /main php_streams.h streams.c user_streams.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-10660@lists.php.net to get a copy of this message | ||
wez Sun Mar 24 13:05:58 2002 EDT
Modified files:
/php4/ext/bz2 bz2.c php_bz2.h
/php4/ext/standard ftp_fopen_wrapper.c http_fopen_wrapper.c
php_fopen_wrapper.c php_fopen_wrappers.h
/php4/ext/zlib php_zlib.h zlib.c zlib_fopen_wrapper.c
/php4/main php_streams.h streams.c user_streams.c
Log:
Phase 1 of wrapper OO cleanup.
# Collecting underpants
Index: php4/ext/bz2/bz2.c diff -u php4/ext/bz2/bz2.c:1.43 php4/ext/bz2/bz2.c:1.44 --- php4/ext/bz2/bz2.c:1.43 Thu Mar 21 17:34:54 2002 +++ php4/ext/bz2/bz2.c Sun Mar 24 13:04:47 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bz2.c,v 1.43 2002/03/21 22:34:54 mfischer Exp $ */ +/* $Id: bz2.c,v 1.44 2002/03/24 18:04:47 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -150,11 +150,11 @@ return php_stream_alloc_rel(&php_stream_bz2io_ops, self, 0, mode); } -PHPAPI php_stream *_php_stream_bz2open(char *path, +PHPAPI php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, + char *path, char *mode, int options, - char **opened_path, - void *wrappercontext + char **opened_path STREAMS_DC TSRMLS_DC) { php_stream *retstream = NULL, *stream = NULL; @@ -207,9 +207,13 @@ /* }}} */ -php_stream_wrapper php_stream_bzip2_wrapper = { +static php_stream_wrapper_ops bzip2_stream_wops = { _php_stream_bz2open, - NULL, + NULL +}; + +php_stream_wrapper php_stream_bzip2_wrapper = { + &bzip2_stream_wops, NULL }; @@ -258,10 +262,10 @@ /* If it's not a resource its a string containing the filename to open */ if (Z_TYPE_PP(file) != IS_RESOURCE) { convert_to_string_ex(file); - stream = php_stream_bz2open(path, + stream = php_stream_bz2open(NULL, + path, Z_STRVAL_PP(mode), ENFORCE_SAFE_MODE|REPORT_ERRORS, - NULL, NULL); } else { /* If it is a resource, than its a stream resource */ Index: php4/ext/bz2/php_bz2.h diff -u php4/ext/bz2/php_bz2.h:1.8 php4/ext/bz2/php_bz2.h:1.9 --- php4/ext/bz2/php_bz2.h:1.8 Wed Mar 20 21:27:41 2002 +++ php4/ext/bz2/php_bz2.h Sun Mar 24 13:04:48 2002 @@ -47,7 +47,7 @@ #define phpext_bz2_ptr NULL #endif -PHPAPI php_stream *_php_stream_bz2open(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); +PHPAPI php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); PHPAPI php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, char *mode, php_stream *innerstream STREAMS_DC TSRMLS_DC); #define php_stream_bz2open_from_BZFILE(bz, mode, innerstream) _php_stream_bz2open_from_BZFILE((bz), (mode), (innerstream) STREAMS_CC TSRMLS_CC) Index: php4/ext/standard/ftp_fopen_wrapper.c diff -u php4/ext/standard/ftp_fopen_wrapper.c:1.19 php4/ext/standard/ftp_fopen_wrapper.c:1.20 --- php4/ext/standard/ftp_fopen_wrapper.c:1.19 Mon Mar 18 22:51:01 2002 +++ php4/ext/standard/ftp_fopen_wrapper.c Sun Mar 24 13:04:49 2002 @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: ftp_fopen_wrapper.c,v 1.19 2002/03/19 03:51:01 wez Exp $ */ +/* $Id: ftp_fopen_wrapper.c,v 1.20 2002/03/24 18:04:49 wez Exp $ */ #include "php.h" #include "php_globals.h" @@ -77,16 +77,20 @@ return strtol(tmp_line, NULL, 10); } -php_stream_wrapper php_stream_ftp_wrapper = { +static php_stream_wrapper_ops ftp_stream_wops = { php_stream_url_wrap_ftp, - NULL, + NULL +}; + +php_stream_wrapper php_stream_ftp_wrapper = { + &ftp_stream_wops, NULL }; /* {{{ php_fopen_url_wrap_ftp */ -php_stream * php_stream_url_wrap_ftp(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream * php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { php_stream *stream=NULL; php_url *resource=NULL; Index: php4/ext/standard/http_fopen_wrapper.c diff -u php4/ext/standard/http_fopen_wrapper.c:1.28 php4/ext/standard/http_fopen_wrapper.c:1.29 --- php4/ext/standard/http_fopen_wrapper.c:1.28 Mon Mar 18 22:51:01 2002 +++ php4/ext/standard/http_fopen_wrapper.c Sun Mar 24 13:04:49 2002 @@ -18,7 +18,7 @@ | Wez Furlong <wez@thebrainroom.com> | +----------------------------------------------------------------------+ */ -/* $Id: http_fopen_wrapper.c,v 1.28 2002/03/19 03:51:01 wez Exp $ */ +/* $Id: http_fopen_wrapper.c,v 1.29 2002/03/24 18:04:49 wez Exp $ */ #include "php.h" #include "php_globals.h" @@ -71,7 +71,7 @@ #define HTTP_HEADER_BLOCK_SIZE 1024 -php_stream *php_stream_url_wrap_http(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { php_stream *stream = NULL; php_url *resource = NULL; @@ -268,7 +268,7 @@ else { strlcpy(new_path, location, sizeof(new_path)); } - stream = php_stream_url_wrap_http(new_path, mode, options, opened_path, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_url_wrap_http(NULL, new_path, mode, options, opened_path STREAMS_CC TSRMLS_CC); if (stream->wrapperdata) { entryp = &entry; MAKE_STD_ZVAL(entry); @@ -309,12 +309,15 @@ return stream; } -php_stream_wrapper php_stream_http_wrapper = { +static php_stream_wrapper_ops http_stream_wops = { php_stream_url_wrap_http, - NULL, NULL }; +php_stream_wrapper php_stream_http_wrapper = { + &http_stream_wops, + NULL +}; /* * Local variables: Index: php4/ext/standard/php_fopen_wrapper.c diff -u php4/ext/standard/php_fopen_wrapper.c:1.16 php4/ext/standard/php_fopen_wrapper.c:1.17 --- php4/ext/standard/php_fopen_wrapper.c:1.16 Thu Mar 21 12:02:47 2002 +++ php4/ext/standard/php_fopen_wrapper.c Sun Mar 24 13:04:52 2002 @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrapper.c,v 1.16 2002/03/21 17:02:47 wez Exp $ */ +/* $Id: php_fopen_wrapper.c,v 1.17 2002/03/24 18:04:52 wez Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -30,7 +30,7 @@ #include "php_standard.h" #include "php_fopen_wrappers.h" -php_stream * php_stream_url_wrap_php(char * path, char * mode, int options, char ** opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { FILE * fp = NULL; php_stream * stream = NULL; @@ -55,9 +55,13 @@ return stream; } -php_stream_wrapper php_stream_php_wrapper = { +static php_stream_wrapper_ops php_stdio_wops = { php_stream_url_wrap_php, - NULL, + NULL +}; + +php_stream_wrapper php_stream_php_wrapper = { + &php_stdio_wops, NULL }; Index: php4/ext/standard/php_fopen_wrappers.h diff -u php4/ext/standard/php_fopen_wrappers.h:1.11 php4/ext/standard/php_fopen_wrappers.h:1.12 --- php4/ext/standard/php_fopen_wrappers.h:1.11 Mon Mar 18 22:51:01 2002 +++ php4/ext/standard/php_fopen_wrappers.h Sun Mar 24 13:04:54 2002 @@ -18,13 +18,13 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrappers.h,v 1.11 2002/03/19 03:51:01 wez Exp $ */ +/* $Id: php_fopen_wrappers.h,v 1.12 2002/03/24 18:04:54 wez Exp $ */ #ifndef PHP_FOPEN_WRAPPERS_H #define PHP_FOPEN_WRAPPERS_H -php_stream *php_stream_url_wrap_http(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); -php_stream *php_stream_url_wrap_ftp(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); +php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); +php_stream *php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); php_stream_wrapper php_stream_http_wrapper; php_stream_wrapper php_stream_ftp_wrapper; php_stream_wrapper php_stream_php_wrapper; Index: php4/ext/zlib/php_zlib.h diff -u php4/ext/zlib/php_zlib.h:1.27 php4/ext/zlib/php_zlib.h:1.28 --- php4/ext/zlib/php_zlib.h:1.27 Wed Mar 20 20:11:52 2002 +++ php4/ext/zlib/php_zlib.h Sun Mar 24 13:04:55 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_zlib.h,v 1.27 2002/03/21 01:11:52 wez Exp $ */ +/* $Id: php_zlib.h,v 1.28 2002/03/24 18:04:55 wez Exp $ */ #ifndef PHP_ZLIB_H #define PHP_ZLIB_H @@ -53,7 +53,7 @@ int php_enable_output_compression(int buffer_size TSRMLS_DC); -php_stream *php_stream_gzopen(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); +php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); extern php_stream_ops php_stream_gzio_ops; extern php_stream_wrapper php_stream_gzip_wrapper; Index: php4/ext/zlib/zlib.c diff -u php4/ext/zlib/zlib.c:1.120 php4/ext/zlib/zlib.c:1.121 --- php4/ext/zlib/zlib.c:1.120 Wed Mar 20 20:22:36 2002 +++ php4/ext/zlib/zlib.c Sun Mar 24 13:04:56 2002 @@ -18,7 +18,7 @@ | Jade Nicoletti <nicoletti@nns.ch> | +----------------------------------------------------------------------+ */ -/* $Id: zlib.c,v 1.120 2002/03/21 01:22:36 wez Exp $ */ +/* $Id: zlib.c,v 1.121 2002/03/24 18:04:56 wez Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -273,7 +273,7 @@ convert_to_string_ex(filename); /* using a stream here is a bit more efficient (resource wise) than php_gzopen_wrapper */ - stream = php_stream_gzopen(Z_STRVAL_PP(filename), "rb", use_include_path|ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_gzopen(NULL, Z_STRVAL_PP(filename), "rb", use_include_path|ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL STREAMS_CC TSRMLS_CC); if (stream == NULL) { php_error(E_WARNING,"gzFile(\"%s\") - %s",Z_STRVAL_PP(filename),strerror(errno)); RETURN_FALSE; @@ -329,7 +329,7 @@ convert_to_string_ex(arg2); p = estrndup(Z_STRVAL_PP(arg2),Z_STRLEN_PP(arg2)); - stream = php_stream_gzopen(Z_STRVAL_PP(arg1), p, use_include_path|ENFORCE_SAFE_MODE, NULL, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_gzopen(NULL, Z_STRVAL_PP(arg1), p, use_include_path|ENFORCE_SAFE_MODE, NULL STREAMS_CC TSRMLS_CC); if (!stream) { RETURN_FALSE; } @@ -370,7 +370,7 @@ } convert_to_string_ex(arg1); - stream = php_stream_gzopen(Z_STRVAL_PP(arg1), "rb", use_include_path|ENFORCE_SAFE_MODE, NULL, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_gzopen(NULL, Z_STRVAL_PP(arg1), "rb", use_include_path|ENFORCE_SAFE_MODE, NULL STREAMS_CC TSRMLS_CC); if (!stream) { RETURN_FALSE; } Index: php4/ext/zlib/zlib_fopen_wrapper.c diff -u php4/ext/zlib/zlib_fopen_wrapper.c:1.20 php4/ext/zlib/zlib_fopen_wrapper.c:1.21 --- php4/ext/zlib/zlib_fopen_wrapper.c:1.20 Thu Mar 21 12:02:47 2002 +++ php4/ext/zlib/zlib_fopen_wrapper.c Sun Mar 24 13:05:33 2002 @@ -16,7 +16,7 @@ | Hartmut Holzgraefe <hartmut@six.de> | +----------------------------------------------------------------------+ */ -/* $Id: zlib_fopen_wrapper.c,v 1.20 2002/03/21 17:02:47 wez Exp $ */ +/* $Id: zlib_fopen_wrapper.c,v 1.21 2002/03/24 18:05:33 wez Exp $ */ #define IS_EXT_MODULE #define _GNU_SOURCE @@ -92,7 +92,7 @@ NULL, "ZLIB" }; -php_stream *php_stream_gzopen(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { struct php_gz_stream_data_t *self; php_stream *stream = NULL; @@ -126,9 +126,13 @@ return NULL; } -php_stream_wrapper php_stream_gzip_wrapper = { +static php_stream_wrapper_ops gzip_stream_wops = { php_stream_gzopen, - NULL, + NULL +}; + +php_stream_wrapper php_stream_gzip_wrapper = { + &gzip_stream_wops, NULL }; Index: php4/main/php_streams.h diff -u php4/main/php_streams.h:1.25 php4/main/php_streams.h:1.26 --- php4/main/php_streams.h:1.25 Wed Mar 20 20:11:52 2002 +++ php4/main/php_streams.h Sun Mar 24 13:05:39 2002 @@ -86,6 +86,7 @@ * retrieve using fgetwrapperdata(). */ typedef struct _php_stream php_stream; +typedef struct _php_stream_wrapper php_stream_wrapper; typedef struct _php_stream_ops { /* stdio like functions - these are mandatory! */ @@ -100,15 +101,16 @@ const char *label; /* label for this ops structure */ } php_stream_ops; -/* options uses the IGNORE_URL family of defines from fopen_wrappers.h */ -typedef php_stream *(*php_stream_factory_func_t)(char *filename, char *mode, int options, char **opened_path, void * wrappercontext STREAMS_DC TSRMLS_DC); -typedef void (*php_stream_wrapper_dtor_func_t)(php_stream *stream TSRMLS_DC); +typedef struct _php_stream_wrapper_ops { + php_stream *(*opener)(php_stream_wrapper *wrapper, char *filename, char *mode, + int options, char **opened_path STREAMS_DC TSRMLS_DC); + php_stream *(*closer)(php_stream_wrapper *wrapper, php_stream *stream TSRMLS_DC); +} php_stream_wrapper_ops; -typedef struct _php_stream_wrapper { - php_stream_factory_func_t create; - php_stream_wrapper_dtor_func_t destroy; - void * wrappercontext; -} php_stream_wrapper; +struct _php_stream_wrapper { + php_stream_wrapper_ops *wops; /* operations the wrapper can perform */ + void *abstract; /* context for the wrapper */ +}; struct _php_stream { php_stream_ops *ops; Index: php4/main/streams.c diff -u php4/main/streams.c:1.42 php4/main/streams.c:1.43 --- php4/main/streams.c:1.42 Sat Mar 23 12:51:20 2002 +++ php4/main/streams.c Sun Mar 24 13:05:47 2002 @@ -126,8 +126,8 @@ if (close_options & PHP_STREAM_FREE_RELEASE_STREAM) { - if (stream->wrapper && stream->wrapper->destroy) { - stream->wrapper->destroy(stream TSRMLS_CC); + if (stream->wrapper && stream->wrapper->wops->closer) { + stream->wrapper->wops->closer(stream->wrapper, stream TSRMLS_CC); stream->wrapper = NULL; } @@ -1038,7 +1038,7 @@ protocol = NULL; } if (wrapper) { - php_stream *stream = wrapper->create(path, mode, options, opened_path, wrapper->wrappercontext STREAMS_REL_CC TSRMLS_CC); + php_stream *stream = wrapper->wops->opener(wrapper, path, mode, options, opened_path STREAMS_REL_CC TSRMLS_CC); if (stream) stream->wrapper = wrapper; return stream; Index: php4/main/user_streams.c diff -u php4/main/user_streams.c:1.7 php4/main/user_streams.c:1.8 --- php4/main/user_streams.c:1.7 Wed Mar 20 09:21:30 2002 +++ php4/main/user_streams.c Sun Mar 24 13:05:47 2002 @@ -29,7 +29,13 @@ php_stream_wrapper wrapper; }; -static php_stream *user_wrapper_factory(char *filename, char *mode, int options, char **opened_path, void * wrappercontext STREAMS_DC TSRMLS_DC); +static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, char *filename, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); + +static php_stream_wrapper_ops user_stream_wops = { + user_wrapper_opener, + NULL +}; + static void stream_wrapper_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { @@ -107,9 +113,9 @@ * */ -static php_stream *user_wrapper_factory(char *filename, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, char *filename, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { - struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrappercontext; + struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract; php_userstream_data_t *us; zval *zfilename, *zmode, *zopened, *zoptions, *zretval = NULL, *zfuncname; zval **args[4]; @@ -206,14 +212,14 @@ uwrap = (struct php_user_stream_wrapper *)ecalloc(1, sizeof(*uwrap)); uwrap->protoname = estrndup(protocol, protocol_len); uwrap->classname = estrndup(classname, classname_len); - uwrap->wrapper.create = user_wrapper_factory; - uwrap->wrapper.wrappercontext = uwrap; + uwrap->wrapper.wops = &user_stream_wops; + uwrap->wrapper.abstract = uwrap; zend_str_tolower(uwrap->classname, classname_len); rsrc_id = ZEND_REGISTER_RESOURCE(NULL, uwrap, le_protocols); if (zend_hash_find(EG(class_table), uwrap->classname, classname_len + 1, (void**)&uwrap->ce) == SUCCESS) { -#ifdef ZEND_ENGINE_2 +#if ZEND_ENGINE_2 uwrap->ce = *(zend_class_entry**)uwrap->ce; #endif if (php_register_url_stream_wrapper(protocol, &uwrap->wrapper TSRMLS_CC) == SUCCESS) {
Index: php4/ext/bz2/bz2.c diff -u php4/ext/bz2/bz2.c:1.43 php4/ext/bz2/bz2.c:1.44 --- php4/ext/bz2/bz2.c:1.43 Thu Mar 21 17:34:54 2002 +++ php4/ext/bz2/bz2.c Sun Mar 24 13:04:47 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bz2.c,v 1.43 2002/03/21 22:34:54 mfischer Exp $ */ +/* $Id: bz2.c,v 1.44 2002/03/24 18:04:47 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -150,11 +150,11 @@ return php_stream_alloc_rel(&php_stream_bz2io_ops, self, 0, mode); } -PHPAPI php_stream *_php_stream_bz2open(char *path, +PHPAPI php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, + char *path, char *mode, int options, - char **opened_path, - void *wrappercontext + char **opened_path STREAMS_DC TSRMLS_DC) { php_stream *retstream = NULL, *stream = NULL; @@ -207,9 +207,13 @@ /* }}} */ -php_stream_wrapper php_stream_bzip2_wrapper = { +static php_stream_wrapper_ops bzip2_stream_wops = { _php_stream_bz2open, - NULL, + NULL +}; + +php_stream_wrapper php_stream_bzip2_wrapper = { + &bzip2_stream_wops, NULL }; @@ -258,10 +262,10 @@ /* If it's not a resource its a string containing the filename to open */ if (Z_TYPE_PP(file) != IS_RESOURCE) { convert_to_string_ex(file); - stream = php_stream_bz2open(path, + stream = php_stream_bz2open(NULL, + path, Z_STRVAL_PP(mode), ENFORCE_SAFE_MODE|REPORT_ERRORS, - NULL, NULL); } else { /* If it is a resource, than its a stream resource */ Index: php4/ext/bz2/php_bz2.h diff -u php4/ext/bz2/php_bz2.h:1.8 php4/ext/bz2/php_bz2.h:1.9 --- php4/ext/bz2/php_bz2.h:1.8 Wed Mar 20 21:27:41 2002 +++ php4/ext/bz2/php_bz2.h Sun Mar 24 13:04:48 2002 @@ -47,7 +47,7 @@ #define phpext_bz2_ptr NULL #endif -PHPAPI php_stream *_php_stream_bz2open(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); +PHPAPI php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); PHPAPI php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, char *mode, php_stream *innerstream STREAMS_DC TSRMLS_DC); #define php_stream_bz2open_from_BZFILE(bz, mode, innerstream) _php_stream_bz2open_from_BZFILE((bz), (mode), (innerstream) STREAMS_CC TSRMLS_CC) Index: php4/ext/standard/ftp_fopen_wrapper.c diff -u php4/ext/standard/ftp_fopen_wrapper.c:1.19 php4/ext/standard/ftp_fopen_wrapper.c:1.20 --- php4/ext/standard/ftp_fopen_wrapper.c:1.19 Mon Mar 18 22:51:01 2002 +++ php4/ext/standard/ftp_fopen_wrapper.c Sun Mar 24 13:04:49 2002 @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: ftp_fopen_wrapper.c,v 1.19 2002/03/19 03:51:01 wez Exp $ */ +/* $Id: ftp_fopen_wrapper.c,v 1.20 2002/03/24 18:04:49 wez Exp $ */ #include "php.h" #include "php_globals.h" @@ -77,16 +77,20 @@ return strtol(tmp_line, NULL, 10); } -php_stream_wrapper php_stream_ftp_wrapper = { +static php_stream_wrapper_ops ftp_stream_wops = { php_stream_url_wrap_ftp, - NULL, + NULL +}; + +php_stream_wrapper php_stream_ftp_wrapper = { + &ftp_stream_wops, NULL }; /* {{{ php_fopen_url_wrap_ftp */ -php_stream * php_stream_url_wrap_ftp(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream * php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { php_stream *stream=NULL; php_url *resource=NULL; Index: php4/ext/standard/http_fopen_wrapper.c diff -u php4/ext/standard/http_fopen_wrapper.c:1.28 php4/ext/standard/http_fopen_wrapper.c:1.29 --- php4/ext/standard/http_fopen_wrapper.c:1.28 Mon Mar 18 22:51:01 2002 +++ php4/ext/standard/http_fopen_wrapper.c Sun Mar 24 13:04:49 2002 @@ -18,7 +18,7 @@ | Wez Furlong <wez@thebrainroom.com> | +----------------------------------------------------------------------+ */ -/* $Id: http_fopen_wrapper.c,v 1.28 2002/03/19 03:51:01 wez Exp $ */ +/* $Id: http_fopen_wrapper.c,v 1.29 2002/03/24 18:04:49 wez Exp $ */ #include "php.h" #include "php_globals.h" @@ -71,7 +71,7 @@ #define HTTP_HEADER_BLOCK_SIZE 1024 -php_stream *php_stream_url_wrap_http(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { php_stream *stream = NULL; php_url *resource = NULL; @@ -268,7 +268,7 @@ else { strlcpy(new_path, location, sizeof(new_path)); } - stream = php_stream_url_wrap_http(new_path, mode, options, opened_path, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_url_wrap_http(NULL, new_path, mode, options, opened_path STREAMS_CC TSRMLS_CC); if (stream->wrapperdata) { entryp = &entry; MAKE_STD_ZVAL(entry); @@ -309,12 +309,15 @@ return stream; } -php_stream_wrapper php_stream_http_wrapper = { +static php_stream_wrapper_ops http_stream_wops = { php_stream_url_wrap_http, - NULL, NULL }; +php_stream_wrapper php_stream_http_wrapper = { + &http_stream_wops, + NULL +}; /* * Local variables: Index: php4/ext/standard/php_fopen_wrapper.c diff -u php4/ext/standard/php_fopen_wrapper.c:1.16 php4/ext/standard/php_fopen_wrapper.c:1.17 --- php4/ext/standard/php_fopen_wrapper.c:1.16 Thu Mar 21 12:02:47 2002 +++ php4/ext/standard/php_fopen_wrapper.c Sun Mar 24 13:04:52 2002 @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrapper.c,v 1.16 2002/03/21 17:02:47 wez Exp $ */ +/* $Id: php_fopen_wrapper.c,v 1.17 2002/03/24 18:04:52 wez Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -30,7 +30,7 @@ #include "php_standard.h" #include "php_fopen_wrappers.h" -php_stream * php_stream_url_wrap_php(char * path, char * mode, int options, char ** opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { FILE * fp = NULL; php_stream * stream = NULL; @@ -55,9 +55,13 @@ return stream; } -php_stream_wrapper php_stream_php_wrapper = { +static php_stream_wrapper_ops php_stdio_wops = { php_stream_url_wrap_php, - NULL, + NULL +}; + +php_stream_wrapper php_stream_php_wrapper = { + &php_stdio_wops, NULL }; Index: php4/ext/standard/php_fopen_wrappers.h diff -u php4/ext/standard/php_fopen_wrappers.h:1.11 php4/ext/standard/php_fopen_wrappers.h:1.12 --- php4/ext/standard/php_fopen_wrappers.h:1.11 Mon Mar 18 22:51:01 2002 +++ php4/ext/standard/php_fopen_wrappers.h Sun Mar 24 13:04:54 2002 @@ -18,13 +18,13 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrappers.h,v 1.11 2002/03/19 03:51:01 wez Exp $ */ +/* $Id: php_fopen_wrappers.h,v 1.12 2002/03/24 18:04:54 wez Exp $ */ #ifndef PHP_FOPEN_WRAPPERS_H #define PHP_FOPEN_WRAPPERS_H -php_stream *php_stream_url_wrap_http(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); -php_stream *php_stream_url_wrap_ftp(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); +php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); +php_stream *php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); php_stream_wrapper php_stream_http_wrapper; php_stream_wrapper php_stream_ftp_wrapper; php_stream_wrapper php_stream_php_wrapper; Index: php4/ext/zlib/php_zlib.h diff -u php4/ext/zlib/php_zlib.h:1.27 php4/ext/zlib/php_zlib.h:1.28 --- php4/ext/zlib/php_zlib.h:1.27 Wed Mar 20 20:11:52 2002 +++ php4/ext/zlib/php_zlib.h Sun Mar 24 13:04:55 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_zlib.h,v 1.27 2002/03/21 01:11:52 wez Exp $ */ +/* $Id: php_zlib.h,v 1.28 2002/03/24 18:04:55 wez Exp $ */ #ifndef PHP_ZLIB_H #define PHP_ZLIB_H @@ -53,7 +53,7 @@ int php_enable_output_compression(int buffer_size TSRMLS_DC); -php_stream *php_stream_gzopen(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC); +php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); extern php_stream_ops php_stream_gzio_ops; extern php_stream_wrapper php_stream_gzip_wrapper; Index: php4/ext/zlib/zlib.c diff -u php4/ext/zlib/zlib.c:1.120 php4/ext/zlib/zlib.c:1.121 --- php4/ext/zlib/zlib.c:1.120 Wed Mar 20 20:22:36 2002 +++ php4/ext/zlib/zlib.c Sun Mar 24 13:04:56 2002 @@ -18,7 +18,7 @@ | Jade Nicoletti <nicoletti@nns.ch> | +----------------------------------------------------------------------+ */ -/* $Id: zlib.c,v 1.120 2002/03/21 01:22:36 wez Exp $ */ +/* $Id: zlib.c,v 1.121 2002/03/24 18:04:56 wez Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -273,7 +273,7 @@ convert_to_string_ex(filename); /* using a stream here is a bit more efficient (resource wise) than php_gzopen_wrapper */ - stream = php_stream_gzopen(Z_STRVAL_PP(filename), "rb", use_include_path|ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_gzopen(NULL, Z_STRVAL_PP(filename), "rb", use_include_path|ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL STREAMS_CC TSRMLS_CC); if (stream == NULL) { php_error(E_WARNING,"gzFile(\"%s\") - %s",Z_STRVAL_PP(filename),strerror(errno)); RETURN_FALSE; @@ -329,7 +329,7 @@ convert_to_string_ex(arg2); p = estrndup(Z_STRVAL_PP(arg2),Z_STRLEN_PP(arg2)); - stream = php_stream_gzopen(Z_STRVAL_PP(arg1), p, use_include_path|ENFORCE_SAFE_MODE, NULL, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_gzopen(NULL, Z_STRVAL_PP(arg1), p, use_include_path|ENFORCE_SAFE_MODE, NULL STREAMS_CC TSRMLS_CC); if (!stream) { RETURN_FALSE; } @@ -370,7 +370,7 @@ } convert_to_string_ex(arg1); - stream = php_stream_gzopen(Z_STRVAL_PP(arg1), "rb", use_include_path|ENFORCE_SAFE_MODE, NULL, NULL STREAMS_CC TSRMLS_CC); + stream = php_stream_gzopen(NULL, Z_STRVAL_PP(arg1), "rb", use_include_path|ENFORCE_SAFE_MODE, NULL STREAMS_CC TSRMLS_CC); if (!stream) { RETURN_FALSE; } Index: php4/ext/zlib/zlib_fopen_wrapper.c diff -u php4/ext/zlib/zlib_fopen_wrapper.c:1.20 php4/ext/zlib/zlib_fopen_wrapper.c:1.21 --- php4/ext/zlib/zlib_fopen_wrapper.c:1.20 Thu Mar 21 12:02:47 2002 +++ php4/ext/zlib/zlib_fopen_wrapper.c Sun Mar 24 13:05:33 2002 @@ -16,7 +16,7 @@ | Hartmut Holzgraefe <hartmut@six.de> | +----------------------------------------------------------------------+ */ -/* $Id: zlib_fopen_wrapper.c,v 1.20 2002/03/21 17:02:47 wez Exp $ */ +/* $Id: zlib_fopen_wrapper.c,v 1.21 2002/03/24 18:05:33 wez Exp $ */ #define IS_EXT_MODULE #define _GNU_SOURCE @@ -92,7 +92,7 @@ NULL, "ZLIB" }; -php_stream *php_stream_gzopen(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { struct php_gz_stream_data_t *self; php_stream *stream = NULL; @@ -126,9 +126,13 @@ return NULL; } -php_stream_wrapper php_stream_gzip_wrapper = { +static php_stream_wrapper_ops gzip_stream_wops = { php_stream_gzopen, - NULL, + NULL +}; + +php_stream_wrapper php_stream_gzip_wrapper = { + &gzip_stream_wops, NULL }; Index: php4/main/php_streams.h diff -u php4/main/php_streams.h:1.25 php4/main/php_streams.h:1.26 --- php4/main/php_streams.h:1.25 Wed Mar 20 20:11:52 2002 +++ php4/main/php_streams.h Sun Mar 24 13:05:39 2002 @@ -86,6 +86,7 @@ * retrieve using fgetwrapperdata(). */ typedef struct _php_stream php_stream; +typedef struct _php_stream_wrapper php_stream_wrapper; typedef struct _php_stream_ops { /* stdio like functions - these are mandatory! */ @@ -100,15 +101,16 @@ const char *label; /* label for this ops structure */ } php_stream_ops; -/* options uses the IGNORE_URL family of defines from fopen_wrappers.h */ -typedef php_stream *(*php_stream_factory_func_t)(char *filename, char *mode, int options, char **opened_path, void * wrappercontext STREAMS_DC TSRMLS_DC); -typedef void (*php_stream_wrapper_dtor_func_t)(php_stream *stream TSRMLS_DC); +typedef struct _php_stream_wrapper_ops { + php_stream *(*opener)(php_stream_wrapper *wrapper, char *filename, char *mode, + int options, char **opened_path STREAMS_DC TSRMLS_DC); + php_stream *(*closer)(php_stream_wrapper *wrapper, php_stream *stream TSRMLS_DC); +} php_stream_wrapper_ops; -typedef struct _php_stream_wrapper { - php_stream_factory_func_t create; - php_stream_wrapper_dtor_func_t destroy; - void * wrappercontext; -} php_stream_wrapper; +struct _php_stream_wrapper { + php_stream_wrapper_ops *wops; /* operations the wrapper can perform */ + void *abstract; /* context for the wrapper */ +}; struct _php_stream { php_stream_ops *ops; Index: php4/main/streams.c diff -u php4/main/streams.c:1.42 php4/main/streams.c:1.43 --- php4/main/streams.c:1.42 Sat Mar 23 12:51:20 2002 +++ php4/main/streams.c Sun Mar 24 13:05:47 2002 @@ -126,8 +126,8 @@ if (close_options & PHP_STREAM_FREE_RELEASE_STREAM) { - if (stream->wrapper && stream->wrapper->destroy) { - stream->wrapper->destroy(stream TSRMLS_CC); + if (stream->wrapper && stream->wrapper->wops->closer) { + stream->wrapper->wops->closer(stream->wrapper, stream TSRMLS_CC); stream->wrapper = NULL; } @@ -1038,7 +1038,7 @@ protocol = NULL; } if (wrapper) { - php_stream *stream = wrapper->create(path, mode, options, opened_path, wrapper->wrappercontext STREAMS_REL_CC TSRMLS_CC); + php_stream *stream = wrapper->wops->opener(wrapper, path, mode, options, opened_path STREAMS_REL_CC TSRMLS_CC); if (stream) stream->wrapper = wrapper; return stream; Index: php4/main/user_streams.c diff -u php4/main/user_streams.c:1.7 php4/main/user_streams.c:1.8 --- php4/main/user_streams.c:1.7 Wed Mar 20 09:21:30 2002 +++ php4/main/user_streams.c Sun Mar 24 13:05:47 2002 @@ -29,7 +29,13 @@ php_stream_wrapper wrapper; }; -static php_stream *user_wrapper_factory(char *filename, char *mode, int options, char **opened_path, void * wrappercontext STREAMS_DC TSRMLS_DC); +static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, char *filename, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC); + +static php_stream_wrapper_ops user_stream_wops = { + user_wrapper_opener, + NULL +}; + static void stream_wrapper_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { @@ -107,9 +113,9 @@ * */ -static php_stream *user_wrapper_factory(char *filename, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, char *filename, char *mode, int options, char **opened_path STREAMS_DC TSRMLS_DC) { - struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrappercontext; + struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract; php_userstream_data_t *us; zval *zfilename, *zmode, *zopened, *zoptions, *zretval = NULL, *zfuncname; zval **args[4]; @@ -206,14 +212,14 @@ uwrap = (struct php_user_stream_wrapper *)ecalloc(1, sizeof(*uwrap)); uwrap->protoname = estrndup(protocol, protocol_len); uwrap->classname = estrndup(classname, classname_len); - uwrap->wrapper.create = user_wrapper_factory; - uwrap->wrapper.wrappercontext = uwrap; + uwrap->wrapper.wops = &user_stream_wops; + uwrap->wrapper.abstract = uwrap; zend_str_tolower(uwrap->classname, classname_len); rsrc_id = ZEND_REGISTER_RESOURCE(NULL, uwrap, le_protocols); if (zend_hash_find(EG(class_table), uwrap->classname, classname_len + 1, (void**)&uwrap->ce) == SUCCESS) { -#ifdef ZEND_ENGINE_2 +#if ZEND_ENGINE_2 uwrap->ce = *(zend_class_entry**)uwrap->ce; #endif if (php_register_url_stream_wrapper(protocol, &uwrap->wrapper TSRMLS_CC) == SUCCESS) {