summaryrefslogtreecommitdiff
path: root/main/streams/streams.c
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2004-09-14 03:48:17 +0000
committerSara Golemon <pollita@php.net>2004-09-14 03:48:17 +0000
commit34550382d89597552df369fe1d6318d32b5929cb (patch)
tree1e788daee0de5c28b2e81d6d23e851df346ecc4e /main/streams/streams.c
parent41c4fd66d96856cab3c39542486941e748706830 (diff)
downloadphp-git-34550382d89597552df369fe1d6318d32b5929cb.tar.gz
Added stream_filter_remove() to cancel a stream filter.
Register filters as resources when instantiated by stream_filter_(ap|pre)pend(). Export php_stream_filter_flush() internal function to wind buffered data out of a particular filter until consumed by a later filter or sent to stream->readbuffer or stream->ops->write()
Diffstat (limited to 'main/streams/streams.c')
-rwxr-xr-xmain/streams/streams.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c
index bb2b137c32..6242afcf82 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -38,6 +38,7 @@
static HashTable url_stream_wrappers_hash;
static int le_stream = FAILURE; /* true global */
static int le_pstream = FAILURE; /* true global */
+static int le_stream_filter = FAILURE; /* true global */
PHPAPI int php_file_le_stream(void)
{
@@ -49,6 +50,11 @@ PHPAPI int php_file_le_pstream(void)
return le_pstream;
}
+PHPAPI int php_file_le_stream_filter(void)
+{
+ return le_stream_filter;
+}
+
PHPAPI HashTable *_php_stream_get_url_stream_wrappers_hash(TSRMLS_D)
{
return (FG(stream_wrappers) ? FG(stream_wrappers) : &url_stream_wrappers_hash);
@@ -1370,6 +1376,9 @@ int php_init_stream_wrappers(int module_number TSRMLS_DC)
le_stream = zend_register_list_destructors_ex(stream_resource_regular_dtor, NULL, "stream", module_number);
le_pstream = zend_register_list_destructors_ex(NULL, stream_resource_persistent_dtor, "persistent stream", module_number);
+ /* Filters are cleaned up by the streams they're attached to */
+ le_stream_filter = zend_register_list_destructors_ex(NULL, NULL, "stream filter", module_number);
+
return (
zend_hash_init(&url_stream_wrappers_hash, 0, NULL, NULL, 1) == SUCCESS
&&