diff options
author | Stanley Sufficool <ssufficool@php.net> | 2014-10-20 21:33:32 -0700 |
---|---|---|
committer | Stanley Sufficool <ssufficool@php.net> | 2014-10-20 21:33:32 -0700 |
commit | 8defcb855ab01d9c8ab4759cb793d80149b55a8c (patch) | |
tree | ed51eb30a2cbc92b102557498fb3e4113da1bb07 /ext/xmlwriter/php_xmlwriter.c | |
parent | 9c7dbb0487f5991fde03873ea8f5e66d6688415f (diff) | |
parent | baddb1c73a170ef1d2c31bd54cddbc6e1ab596b9 (diff) | |
download | php-git-8defcb855ab01d9c8ab4759cb793d80149b55a8c.tar.gz |
Merge branch 'master' of https://git.php.net/push/php-src
* 'master' of https://git.php.net/push/php-src: (6215 commits)
Extra comma
Moved proxy object support in ASSIGN_ADD (and family) from VM to slow paths of corresponding operators
Simplification
zend_get_property_info_quick() cleanup and optimization
initialize lineno before calling compile file file in phar
Use ADDREF instead of DUP, it must be enough.
Removed old irrelevant comment
fixed compilation error
Fix bug #68262: Broken reference across cloned objects
export functions needed for phpdbg
Fixed compilation
Optimized property access handlers. Removed EG(std_property_info).
Fixed bug #68199 (PDO::pgsqlGetNotify doesn't support NOTIFY payloads)
Don't make difference between undefined and unaccessible properies when call __get() and family
Don't make useless CSE
array_pop/array_shift optimization
check for zlib headers as well as lib for mysqlnd
a realpath cache key can be int or float, catching this
News entry for new curl constants
News entry for new curl constants
...
Diffstat (limited to 'ext/xmlwriter/php_xmlwriter.c')
-rw-r--r-- | ext/xmlwriter/php_xmlwriter.c | 474 |
1 files changed, 160 insertions, 314 deletions
diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index 0a1439ced5..6e3475e8d0 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -1,8 +1,8 @@ /* +----------------------------------------------------------------------+ - | PHP Version 5 | + | PHP Version 7 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -84,7 +84,7 @@ static PHP_FUNCTION(xmlwriter_flush); static zend_class_entry *xmlwriter_class_entry_ce; static void xmlwriter_free_resource_ptr(xmlwriter_object *intern TSRMLS_DC); -static void xmlwriter_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC); +static void xmlwriter_dtor(zend_resource *rsrc TSRMLS_DC); typedef int (*xmlwriter_read_one_char_t)(xmlTextWriterPtr writer, const xmlChar *content); typedef int (*xmlwriter_read_int_t)(xmlTextWriterPtr writer); @@ -106,11 +106,10 @@ static void xmlwriter_free_resource_ptr(xmlwriter_object *intern TSRMLS_DC) } /* }}} */ -#ifdef ZEND_ENGINE_2 /* {{{ XMLWRITER_FROM_OBJECT */ #define XMLWRITER_FROM_OBJECT(intern, object) \ { \ - ze_xmlwriter_object *obj = (ze_xmlwriter_object*) zend_object_store_get_object(object TSRMLS_CC); \ + ze_xmlwriter_object *obj = Z_XMLWRITER_P(object); \ intern = obj->xmlwriter_ptr; \ if (!intern) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid or unitialized XMLWriter object"); \ @@ -122,9 +121,9 @@ static void xmlwriter_free_resource_ptr(xmlwriter_object *intern TSRMLS_DC) static zend_object_handlers xmlwriter_object_handlers; /* {{{ xmlwriter_object_free_storage */ -static void xmlwriter_object_free_storage(void *object TSRMLS_DC) +static void xmlwriter_object_free_storage(zend_object *object TSRMLS_DC) { - ze_xmlwriter_object * intern = (ze_xmlwriter_object *) object; + ze_xmlwriter_object *intern = php_xmlwriter_fetch_object(object); if (!intern) { return; } @@ -132,37 +131,24 @@ static void xmlwriter_object_free_storage(void *object TSRMLS_DC) xmlwriter_free_resource_ptr(intern->xmlwriter_ptr TSRMLS_CC); } intern->xmlwriter_ptr = NULL; - zend_object_std_dtor(&intern->zo TSRMLS_CC); - - efree(intern); + zend_object_std_dtor(&intern->std TSRMLS_CC); } /* }}} */ /* {{{ xmlwriter_object_new */ -static zend_object_value xmlwriter_object_new(zend_class_entry *class_type TSRMLS_DC) +static zend_object *xmlwriter_object_new(zend_class_entry *class_type TSRMLS_DC) { ze_xmlwriter_object *intern; - zend_object_value retval; - intern = emalloc(sizeof(ze_xmlwriter_object)); - memset(&intern->zo, 0, sizeof(zend_object)); - intern->xmlwriter_ptr = NULL; - - zend_object_std_init(&intern->zo, class_type TSRMLS_CC); - object_properties_init(&intern->zo, class_type); + intern = ecalloc(1, sizeof(ze_xmlwriter_object) + sizeof(zval) * (class_type->default_properties_count - 1)); + zend_object_std_init(&intern->std, class_type TSRMLS_CC); + object_properties_init(&intern->std, class_type); + intern->std.handlers = &xmlwriter_object_handlers; - retval.handle = zend_objects_store_put(intern, - NULL, - (zend_objects_free_object_storage_t) xmlwriter_object_free_storage, - NULL TSRMLS_CC); - - retval.handlers = (zend_object_handlers *) & xmlwriter_object_handlers; - - return retval; + return &intern->std; } /* }}} */ -#endif #define XMLW_NAME_CHK(__err) \ if (xmlValidateName((xmlChar *) name, 0) != 0) { \ @@ -530,7 +516,6 @@ static const zend_function_entry xmlwriter_functions[] = { }; /* }}} */ -#ifdef ZEND_ENGINE_2 /* {{{ xmlwriter_class_functions */ static const zend_function_entry xmlwriter_class_functions[] = { PHP_ME_MAPPING(openUri, xmlwriter_open_uri, arginfo_xmlwriter_open_uri, 0) @@ -586,7 +571,6 @@ static const zend_function_entry xmlwriter_class_functions[] = { {NULL, NULL, NULL} }; /* }}} */ -#endif /* {{{ function prototypes */ static PHP_MINIT_FUNCTION(xmlwriter); @@ -651,7 +635,7 @@ static char *_xmlwriter_get_valid_file_path(char *source, char *resolved_path, i dir_len = php_dirname(file_dirname, strlen(source)); if (dir_len > 0) { - struct stat buf; + zend_stat_t buf; if (php_sys_stat(file_dirname, &buf) != 0) { xmlFreeURI(uri); return NULL; @@ -669,38 +653,6 @@ static char *_xmlwriter_get_valid_file_path(char *source, char *resolved_path, i } /* }}} */ -#ifndef ZEND_ENGINE_2 -/* Channel libxml file io layer through the PHP streams subsystem. - * This allows use of ftps:// and https:// urls */ - -/* {{{ php_xmlwriter_streams_IO_open_write_wrapper */ -static void *php_xmlwriter_streams_IO_open_write_wrapper(const char *filename TSRMLS_DC) -{ - php_stream_wrapper *wrapper = NULL; - void *ret_val = NULL; - - ret_val = php_stream_open_wrapper_ex((char *)filename, "wb", REPORT_ERRORS, NULL, NULL); - return ret_val; -} -/* }}} */ - -/* {{{ php_xmlwriter_streams_IO_write */ -static int php_xmlwriter_streams_IO_write(void *context, const char *buffer, int len) -{ - TSRMLS_FETCH(); - return php_stream_write((php_stream*)context, buffer, len); -} -/* }}} */ - -/* {{{ php_xmlwriter_streams_IO_close */ -static int php_xmlwriter_streams_IO_close(void *context) -{ - TSRMLS_FETCH(); - return php_stream_close((php_stream*)context); -} -/* }}} */ -#endif - /* {{{ xmlwriter_module_entry */ zend_module_entry xmlwriter_module_entry = { @@ -729,7 +681,7 @@ static void xmlwriter_objects_clone(void *object, void **object_clone TSRMLS_DC) }}} */ /* {{{ xmlwriter_dtor */ -static void xmlwriter_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { +static void xmlwriter_dtor(zend_resource *rsrc TSRMLS_DC) { xmlwriter_object *intern; intern = (xmlwriter_object *) rsrc->ptr; @@ -743,24 +695,21 @@ static void php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_rea xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name; - int name_len, retval; + size_t name_len, retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &pind, &name, &name_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } if (err_string != NULL) { @@ -785,21 +734,18 @@ static void php_xmlwriter_end(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_read_int_t xmlwriter_object *intern; xmlTextWriterPtr ptr; int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); + if (self) { + XMLWRITER_FROM_OBJECT(intern, self); if (zend_parse_parameters_none() == FAILURE) { return; } - } else -#endif - { + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -825,21 +771,18 @@ static PHP_FUNCTION(xmlwriter_set_indent) int retval; zend_bool indent; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &indent) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &pind, &indent) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } @@ -890,24 +833,22 @@ static PHP_FUNCTION(xmlwriter_start_attribute_ns) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *prefix, *uri; - int name_len, prefix_len, uri_len, retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, prefix_len, uri_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss!", &prefix, &prefix_len, &name, &name_len, &uri, &uri_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsss!", &pind, &prefix, &prefix_len, &name, &name_len, &uri, &uri_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Attribute Name"); @@ -934,25 +875,22 @@ static PHP_FUNCTION(xmlwriter_write_attribute) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *content; - int name_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, content_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &pind, &name, &name_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Attribute Name"); @@ -979,25 +917,23 @@ static PHP_FUNCTION(xmlwriter_write_attribute_ns) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *prefix, *uri, *content; - int name_len, prefix_len, uri_len, content_len, retval; + size_t name_len, prefix_len, uri_len, content_len; + int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss!s", &prefix, &prefix_len, &name, &name_len, &uri, &uri_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsss!s", &pind, &prefix, &prefix_len, &name, &name_len, &uri, &uri_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Attribute Name"); @@ -1032,24 +968,22 @@ static PHP_FUNCTION(xmlwriter_start_element_ns) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *prefix, *uri; - int name_len, prefix_len, uri_len, retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, prefix_len, uri_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!ss!", &prefix, &prefix_len, &name, &name_len, &uri, &uri_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!ss!", &pind, &prefix, &prefix_len, &name, &name_len, &uri, &uri_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Element Name"); @@ -1092,25 +1026,22 @@ static PHP_FUNCTION(xmlwriter_write_element) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *content = NULL; - int name_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, content_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &name, &name_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s!", &pind, &name, &name_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Element Name"); @@ -1147,25 +1078,22 @@ static PHP_FUNCTION(xmlwriter_write_element_ns) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *prefix, *uri, *content = NULL; - int name_len, prefix_len, uri_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, prefix_len, uri_len, content_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!ss!|s!", &prefix, &prefix_len, &name, &name_len, &uri, &uri_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!ss!|s!", &pind, &prefix, &prefix_len, &name, &name_len, &uri, &uri_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Element Name"); @@ -1218,25 +1146,23 @@ static PHP_FUNCTION(xmlwriter_write_pi) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *content; - int name_len, content_len, retval; + size_t name_len, content_len; + int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &pind, &name, &name_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid PI Target"); @@ -1262,18 +1188,15 @@ static PHP_FUNCTION(xmlwriter_start_cdata) xmlwriter_object *intern; xmlTextWriterPtr ptr; int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + if (self) { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -1330,18 +1253,15 @@ static PHP_FUNCTION(xmlwriter_start_comment) xmlwriter_object *intern; xmlTextWriterPtr ptr; int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + if (self) { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -1383,23 +1303,21 @@ static PHP_FUNCTION(xmlwriter_start_document) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *version = NULL, *enc = NULL, *alone = NULL; - int version_len, enc_len, alone_len, retval; + size_t version_len, enc_len, alone_len; + int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!s!", &version, &version_len, &enc, &enc_len, &alone, &alone_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s!s!s!", &pind, &version, &version_len, &enc, &enc_len, &alone, &alone_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -1431,25 +1349,22 @@ static PHP_FUNCTION(xmlwriter_start_dtd) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *pubid = NULL, *sysid = NULL; - int name_len, pubid_len, sysid_len, retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, pubid_len, sysid_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!s!", &name, &name_len, &pubid, &pubid_len, &sysid, &sysid_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s!s!", &pind, &name, &name_len, &pubid, &pubid_len, &sysid, &sysid_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -1480,25 +1395,22 @@ static PHP_FUNCTION(xmlwriter_write_dtd) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *pubid = NULL, *sysid = NULL, *subset = NULL; - int name_len, pubid_len, sysid_len, subset_len, retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, pubid_len, sysid_len, subset_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!s!s!", &name, &name_len, &pubid, &pubid_len, &sysid, &sysid_len, &subset, &subset_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s!s!s!", &pind, &name, &name_len, &pubid, &pubid_len, &sysid, &sysid_len, &subset, &subset_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -1538,24 +1450,21 @@ static PHP_FUNCTION(xmlwriter_write_dtd_element) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *content; - int name_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, content_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &pind, &name, &name_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Element Name"); @@ -1598,26 +1507,22 @@ static PHP_FUNCTION(xmlwriter_write_dtd_attlist) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *content; - int name_len, content_len, retval; - - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t name_len, content_len; + int retval; + zval *self = getThis(); - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &content, &content_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &pind, &name, &name_len, &content, &content_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Element Name"); @@ -1643,25 +1548,20 @@ static PHP_FUNCTION(xmlwriter_start_dtd_entity) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name; - int name_len, retval; + size_t name_len, retval; zend_bool isparm; + zval *self = getThis(); - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sb", &name, &name_len, &isparm) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsb", &pind, &name, &name_len, &isparm) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Attribute Name"); @@ -1695,31 +1595,28 @@ static PHP_FUNCTION(xmlwriter_write_dtd_entity) xmlwriter_object *intern; xmlTextWriterPtr ptr; char *name, *content; - int name_len, content_len, retval; + size_t name_len, content_len; + int retval; /* Optional parameters */ char *pubid = NULL, *sysid = NULL, *ndataid = NULL; zend_bool pe = 0; - int pubid_len, sysid_len, ndataid_len; + size_t pubid_len, sysid_len, ndataid_len; + zval *self = getThis(); -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bsss", &name, &name_len, &content, &content_len, &pe, &pubid, &pubid_len, &sysid, &sysid_len, &ndataid, &ndataid_len) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|bsss", &pind, &name, &name_len, &content, &content_len, &pe, &pubid, &pubid_len, &sysid, &sysid_len, &ndataid, &ndataid_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } XMLW_NAME_CHK("Invalid Element Name"); @@ -1747,28 +1644,18 @@ static PHP_FUNCTION(xmlwriter_open_uri) xmlTextWriterPtr ptr; char *source; char resolved_path[MAXPATHLEN + 1]; - int source_len; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + size_t source_len; + zval *self = getThis(); ze_xmlwriter_object *ze_obj = NULL; -#endif - -#ifndef ZEND_ENGINE_2 - xmlOutputBufferPtr out_buffer; - void *ioctx; -#endif if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &source, &source_len) == FAILURE) { return; } -#ifdef ZEND_ENGINE_2 - if (this) { + if (self) { /* We do not use XMLWRITER_FROM_OBJECT, xmlwriter init function here */ - ze_obj = (ze_xmlwriter_object*) zend_object_store_get_object(this TSRMLS_CC); + ze_obj = Z_XMLWRITER_P(self); } -#endif if (source_len == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty string as source"); @@ -1781,26 +1668,7 @@ static PHP_FUNCTION(xmlwriter_open_uri) RETURN_FALSE; } - /* TODO: Fix either the PHP stream or libxml APIs: it can then detect when a given - path is valid and not report out of memory error. Once it is done, remove the - directory check in _xmlwriter_get_valid_file_path */ -#ifndef ZEND_ENGINE_2 - ioctx = php_xmlwriter_streams_IO_open_write_wrapper(valid_file TSRMLS_CC); - if (ioctx == NULL) { - RETURN_FALSE; - } - - out_buffer = xmlOutputBufferCreateIO(php_xmlwriter_streams_IO_write, - php_xmlwriter_streams_IO_close, ioctx, NULL); - - if (out_buffer == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create output buffer"); - RETURN_FALSE; - } - ptr = xmlNewTextWriter(out_buffer); -#else ptr = xmlNewTextWriterFilename(valid_file, 0); -#endif if (!ptr) { RETURN_FALSE; @@ -1809,18 +1677,13 @@ static PHP_FUNCTION(xmlwriter_open_uri) intern = emalloc(sizeof(xmlwriter_object)); intern->ptr = ptr; intern->output = NULL; -#ifndef ZEND_ENGINE_2 - intern->uri_output = out_buffer; -#else - if (this) { + if (self) { if (ze_obj->xmlwriter_ptr) { xmlwriter_free_resource_ptr(ze_obj->xmlwriter_ptr TSRMLS_CC); } ze_obj->xmlwriter_ptr = intern; RETURN_TRUE; - } else -#endif - { + } else { ZEND_REGISTER_RESOURCE(return_value,intern,le_xmlwriter); } } @@ -1833,18 +1696,13 @@ static PHP_FUNCTION(xmlwriter_open_memory) xmlwriter_object *intern; xmlTextWriterPtr ptr; xmlBufferPtr buffer; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); + zval *self = getThis(); ze_xmlwriter_object *ze_obj = NULL; -#endif -#ifdef ZEND_ENGINE_2 - if (this) { + if (self) { /* We do not use XMLWRITER_FROM_OBJECT, xmlwriter init function here */ - ze_obj = (ze_xmlwriter_object*) zend_object_store_get_object(this TSRMLS_CC); + ze_obj = Z_XMLWRITER_P(self); } -#endif buffer = xmlBufferCreate(); @@ -1862,18 +1720,13 @@ static PHP_FUNCTION(xmlwriter_open_memory) intern = emalloc(sizeof(xmlwriter_object)); intern->ptr = ptr; intern->output = buffer; -#ifndef ZEND_ENGINE_2 - intern->uri_output = NULL; -#else - if (this) { + if (self) { if (ze_obj->xmlwriter_ptr) { xmlwriter_free_resource_ptr(ze_obj->xmlwriter_ptr TSRMLS_CC); } ze_obj->xmlwriter_ptr = intern; RETURN_TRUE; - } else -#endif - { + } else { ZEND_REGISTER_RESOURCE(return_value,intern,le_xmlwriter); } @@ -1888,24 +1741,19 @@ static void php_xmlwriter_flush(INTERNAL_FUNCTION_PARAMETERS, int force_string) xmlBufferPtr buffer; zend_bool empty = 1; int output_bytes; + zval *self = getThis(); - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { + if (self) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &empty) == FAILURE) { return; } - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + XMLWRITER_FROM_OBJECT(intern, self); + } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|b", &pind, &empty) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); + ZEND_FETCH_RESOURCE(intern, xmlwriter_object *, pind, -1, "XMLWriter", le_xmlwriter); } ptr = intern->ptr; @@ -1916,7 +1764,7 @@ static void php_xmlwriter_flush(INTERNAL_FUNCTION_PARAMETERS, int force_string) } output_bytes = xmlTextWriterFlush(ptr); if (buffer) { - RETVAL_STRING((char *) buffer->content, 1); + RETVAL_STRING((char *) buffer->content); if (empty) { xmlBufferEmpty(buffer); } @@ -1950,19 +1798,17 @@ static PHP_FUNCTION(xmlwriter_flush) */ static PHP_MINIT_FUNCTION(xmlwriter) { -#ifdef ZEND_ENGINE_2 zend_class_entry ce; -#endif - le_xmlwriter = zend_register_list_destructors_ex(xmlwriter_dtor, NULL, "xmlwriter", module_number); -#ifdef ZEND_ENGINE_2 memcpy(&xmlwriter_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); - xmlwriter_object_handlers.clone_obj = NULL; + xmlwriter_object_handlers.offset = XtOffsetOf(ze_xmlwriter_object, std); + xmlwriter_object_handlers.free_obj = xmlwriter_object_free_storage; + xmlwriter_object_handlers.clone_obj = NULL; INIT_CLASS_ENTRY(ce, "XMLWriter", xmlwriter_class_functions); ce.create_object = xmlwriter_object_new; xmlwriter_class_entry_ce = zend_register_internal_class(&ce TSRMLS_CC); -#endif + return SUCCESS; } /* }}} */ |