Browse Source

Added php_ob_handler_used to check if a specific output handler is used

in c.
experimental/new_apache_hooks
Marcus Boerger 24 years ago
parent
commit
6d21c9465d
  1. 34
      main/output.c
  2. 1
      main/php_output.h

34
main/output.c

@ -403,6 +403,40 @@ PHP_FUNCTION(ob_list_handlers)
}
/* }}} */
/* {{{ php_ob_used_each
Sets handler_name to NULL is found
*/
static int php_ob_handler_used_each(php_ob_buffer *ob_buffer, char **handler_name)
{
if ((!strcmp(ob_buffer->handler_name, "zlib output compression") && ob_buffer->internal_output_handler && !strcmp("ob_gzhandler", *handler_name))
|| !strcmp(ob_buffer->handler_name, *handler_name))
{
*handler_name = NULL;
return 1;
}
return 0;
}
/* }}} */
/* {{{ php_ob_used
returns 1 if given handler_name is used as output_handler
*/
PHPAPI int php_ob_handler_used(char *handler_name TSRMLS_DC)
{
char *tmp = handler_name;
if (OG(ob_nesting_level)) {
if (!strcmp(OG(active_ob_buffer).handler_name, handler_name)) {
return 1;
}
if (OG(ob_nesting_level)>1) {
zend_stack_apply_with_argument(&OG(ob_buffers), ZEND_STACK_APPLY_BOTTOMUP, (int (*)(void *element, void *)) php_ob_handler_used_each, &tmp);
}
}
return tmp ? 0 : 1;
}
/* }}} */
/* {{{ php_ob_append
*/
static void php_ob_append(const char *text, uint text_length TSRMLS_DC)

1
main/php_output.h

@ -39,6 +39,7 @@ PHPAPI void php_end_implicit_flush(TSRMLS_D);
PHPAPI char *php_get_output_start_filename(TSRMLS_D);
PHPAPI int php_get_output_start_lineno(TSRMLS_D);
PHPAPI void php_ob_set_internal_handler(php_output_handler_func_t internal_output_handler, uint buffer_size, char *handler_name, zend_bool erase TSRMLS_DC);
PHPAPI int php_ob_handler_used(char *handler_name TSRMLS_DC);
PHP_FUNCTION(ob_start);
PHP_FUNCTION(ob_flush);

Loading…
Cancel
Save