summaryrefslogtreecommitdiff
path: root/ext/xmlwriter/php_xmlwriter.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2014-05-04 11:33:17 +0800
committerXinchen Hui <laruence@gmail.com>2014-05-04 11:33:17 +0800
commita275f4c64d8fbb741ddc453420d3571caf8ec6dc (patch)
tree3eff188218840105d04f06af5dd1afbad43c03d9 /ext/xmlwriter/php_xmlwriter.c
parent4778efc0090298b333219f655af0f633851f265d (diff)
downloadphp-git-a275f4c64d8fbb741ddc453420d3571caf8ec6dc.tar.gz
Port XMLWriter
Diffstat (limited to 'ext/xmlwriter/php_xmlwriter.c')
-rw-r--r--ext/xmlwriter/php_xmlwriter.c289
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;
}
/* }}} */