@@ -507,6 +507,20 @@ PHP_FUNCTION(stream_copy_to_stream)
507507}
508508/* }}} */
509509
510+ static void stream_fill_filters_array (zval * array , const char * name , const php_stream_filter_chain * chain )
511+ {
512+ if (chain -> head ) {
513+ zval filters ;
514+ array_init (& filters );
515+
516+ for (const php_stream_filter * filter = chain -> head ; filter != NULL ; filter = filter -> next ) {
517+ add_next_index_string (& filters , filter -> fops -> label );
518+ }
519+
520+ add_assoc_zval (array , name , & filters );
521+ }
522+ }
523+
510524/* {{{ Retrieves header/meta data from streams/file pointers */
511525PHP_FUNCTION (stream_get_meta_data )
512526{
@@ -535,20 +549,8 @@ PHP_FUNCTION(stream_get_meta_data)
535549
536550 add_assoc_string (return_value , "mode" , stream -> mode );
537551
538- #if 0 /* TODO: needs updating for new filter API */
539- if (stream -> filterhead ) {
540- php_stream_filter * filter ;
541-
542- MAKE_STD_ZVAL (newval );
543- array_init (newval );
544-
545- for (filter = stream -> filterhead ; filter != NULL ; filter = filter -> next ) {
546- add_next_index_string (newval , filter -> fops -> label );
547- }
548-
549- add_assoc_zval (return_value , "filters" , newval );
550- }
551- #endif
552+ stream_fill_filters_array (return_value , "read_filters" , & stream -> readfilters );
553+ stream_fill_filters_array (return_value , "write_filters" , & stream -> writefilters );
552554
553555 add_assoc_long (return_value , "unread_bytes" , stream -> writepos - stream -> readpos );
554556
0 commit comments