diff options
author | Xinchen Hui <laruence@gmail.com> | 2014-05-04 11:33:17 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2014-05-04 11:33:17 +0800 |
commit | a275f4c64d8fbb741ddc453420d3571caf8ec6dc (patch) | |
tree | 3eff188218840105d04f06af5dd1afbad43c03d9 /ext/xmlwriter/php_xmlwriter.c | |
parent | 4778efc0090298b333219f655af0f633851f265d (diff) | |
download | php-git-a275f4c64d8fbb741ddc453420d3571caf8ec6dc.tar.gz |
Port XMLWriter
Diffstat (limited to 'ext/xmlwriter/php_xmlwriter.c')
-rw-r--r-- | ext/xmlwriter/php_xmlwriter.c | 289 |
1 files changed, 61 insertions, 228 deletions
diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index 7bc35dabc4..5fa80b3e87 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -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); @@ -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; @@ -745,7 +697,6 @@ static void php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_rea char *name; int name_len, retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -753,14 +704,12 @@ static void php_xmlwriter_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_rea return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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,7 +734,6 @@ 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(); if (this) { @@ -793,13 +741,11 @@ static void php_xmlwriter_end(INTERNAL_FUNCTION_PARAMETERS, xmlwriter_read_int_t 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,7 +771,6 @@ static PHP_FUNCTION(xmlwriter_set_indent) int retval; zend_bool indent; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -833,13 +778,11 @@ static PHP_FUNCTION(xmlwriter_set_indent) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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); } @@ -891,7 +834,6 @@ static PHP_FUNCTION(xmlwriter_start_attribute_ns) xmlTextWriterPtr ptr; char *name, *prefix, *uri; int name_len, prefix_len, uri_len, retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -900,14 +842,12 @@ static PHP_FUNCTION(xmlwriter_start_attribute_ns) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -935,8 +875,6 @@ static PHP_FUNCTION(xmlwriter_write_attribute) xmlTextWriterPtr ptr; char *name, *content; int name_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -945,14 +883,12 @@ static PHP_FUNCTION(xmlwriter_write_attribute) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -981,7 +917,6 @@ static PHP_FUNCTION(xmlwriter_write_attribute_ns) char *name, *prefix, *uri, *content; int name_len, prefix_len, uri_len, content_len, retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -990,14 +925,12 @@ static PHP_FUNCTION(xmlwriter_write_attribute_ns) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1033,7 +966,6 @@ static PHP_FUNCTION(xmlwriter_start_element_ns) xmlTextWriterPtr ptr; char *name, *prefix, *uri; int name_len, prefix_len, uri_len, retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1042,14 +974,12 @@ static PHP_FUNCTION(xmlwriter_start_element_ns) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1093,8 +1023,6 @@ static PHP_FUNCTION(xmlwriter_write_element) xmlTextWriterPtr ptr; char *name, *content = NULL; int name_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1103,14 +1031,12 @@ static PHP_FUNCTION(xmlwriter_write_element) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1148,8 +1074,6 @@ static PHP_FUNCTION(xmlwriter_write_element_ns) 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(); if (this) { @@ -1158,14 +1082,12 @@ static PHP_FUNCTION(xmlwriter_write_element_ns) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1220,7 +1142,6 @@ static PHP_FUNCTION(xmlwriter_write_pi) char *name, *content; int name_len, content_len, retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1229,14 +1150,12 @@ static PHP_FUNCTION(xmlwriter_write_pi) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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 +1181,15 @@ static PHP_FUNCTION(xmlwriter_start_cdata) xmlwriter_object *intern; xmlTextWriterPtr ptr; int retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { XMLWRITER_FROM_OBJECT(intern, this); - } 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; @@ -1330,18 +1246,15 @@ static PHP_FUNCTION(xmlwriter_start_comment) xmlwriter_object *intern; xmlTextWriterPtr ptr; int retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { XMLWRITER_FROM_OBJECT(intern, this); - } 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; @@ -1385,7 +1298,6 @@ static PHP_FUNCTION(xmlwriter_start_document) char *version = NULL, *enc = NULL, *alone = NULL; int version_len, enc_len, alone_len, retval; -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1393,13 +1305,11 @@ static PHP_FUNCTION(xmlwriter_start_document) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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; @@ -1432,8 +1342,6 @@ static PHP_FUNCTION(xmlwriter_start_dtd) xmlTextWriterPtr ptr; char *name, *pubid = NULL, *sysid = NULL; int name_len, pubid_len, sysid_len, retval; - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1442,14 +1350,12 @@ static PHP_FUNCTION(xmlwriter_start_dtd) } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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; @@ -1481,8 +1387,6 @@ static PHP_FUNCTION(xmlwriter_write_dtd) 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(); if (this) { @@ -1491,14 +1395,12 @@ static PHP_FUNCTION(xmlwriter_write_dtd) } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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; @@ -1539,8 +1441,6 @@ static PHP_FUNCTION(xmlwriter_write_dtd_element) xmlTextWriterPtr ptr; char *name, *content; int name_len, content_len, retval; - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1548,14 +1448,12 @@ static PHP_FUNCTION(xmlwriter_write_dtd_element) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1599,9 +1497,6 @@ static PHP_FUNCTION(xmlwriter_write_dtd_attlist) xmlTextWriterPtr ptr; char *name, *content; int name_len, content_len, retval; - - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1610,14 +1505,12 @@ static PHP_FUNCTION(xmlwriter_write_dtd_attlist) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1645,9 +1538,6 @@ static PHP_FUNCTION(xmlwriter_start_dtd_entity) char *name; int name_len, retval; zend_bool isparm; - - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1655,13 +1545,11 @@ static PHP_FUNCTION(xmlwriter_start_dtd_entity) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1700,8 +1588,6 @@ static PHP_FUNCTION(xmlwriter_write_dtd_entity) char *pubid = NULL, *sysid = NULL, *ndataid = NULL; zend_bool pe = 0; int pubid_len, sysid_len, ndataid_len; - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1711,15 +1597,13 @@ static PHP_FUNCTION(xmlwriter_write_dtd_entity) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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"); @@ -1748,27 +1632,17 @@ static PHP_FUNCTION(xmlwriter_open_uri) char *source; char resolved_path[MAXPATHLEN + 1]; int source_len; - -#ifdef ZEND_ENGINE_2 zval *this = 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) { /* 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(this); } -#endif if (source_len == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty string as source"); @@ -1781,26 +1655,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 +1664,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 (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 +1683,13 @@ static PHP_FUNCTION(xmlwriter_open_memory) xmlwriter_object *intern; xmlTextWriterPtr ptr; xmlBufferPtr buffer; - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); ze_xmlwriter_object *ze_obj = NULL; -#endif -#ifdef ZEND_ENGINE_2 if (this) { /* 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(this); } -#endif buffer = xmlBufferCreate(); @@ -1862,18 +1707,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 (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,9 +1728,6 @@ static void php_xmlwriter_flush(INTERNAL_FUNCTION_PARAMETERS, int force_string) xmlBufferPtr buffer; zend_bool empty = 1; int output_bytes; - - -#ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { @@ -1898,14 +1735,12 @@ static void php_xmlwriter_flush(INTERNAL_FUNCTION_PARAMETERS, int force_string) return; } XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { + } 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 +1751,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 +1785,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; } /* }}} */ |