From: Ilia Alshanetsky Date: Tue, 16 Aug 2005 23:10:36 +0000 (+0000) Subject: Provide a common handler for "close". X-Git-Tag: PRE_NEW_OCI8_EXTENSION~207 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7ad6720faef47e94cb79a2506f5aebf95fb62ca;p=php Provide a common handler for "close". Macro the name validation. --- diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index 61f4b135bf..e9e632d23e 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -82,6 +82,7 @@ static void xmlwriter_object_free_storage(void *object TSRMLS_DC) } /* }}} */ + /* {{{ xmlwriter_object_new */ PHP_XMLWRITER_API zend_object_value xmlwriter_object_new(zend_class_entry *class_type TSRMLS_DC) { @@ -112,6 +113,12 @@ PHP_XMLWRITER_API zend_object_value xmlwriter_object_new(zend_class_entry *class /* }}} */ #endif +#define XMLW_NAME_CHK(__err) \ + if (xmlValidateName((xmlChar *) name, 0) != 0) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, #__err); \ + RETURN_FALSE; \ + } \ + /* {{{ xmlwriter_functions */ static zend_function_entry xmlwriter_functions[] = { PHP_FE(xmlwriter_open_uri, NULL) @@ -439,11 +446,7 @@ PHP_FUNCTION(xmlwriter_start_attribute) } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -458,9 +461,7 @@ PHP_FUNCTION(xmlwriter_start_attribute) } /* }}} */ -/* {{{ proto bool xmlwriter_end_attribute(resource xmlwriter) -End attribute - returns FALSE on error */ -PHP_FUNCTION(xmlwriter_end_attribute) +static void php_xmlwriter_end(INTERNAL_FUNCTION_PARAMETERS, int type) { zval *pind; xmlwriter_object *intern; @@ -483,7 +484,41 @@ PHP_FUNCTION(xmlwriter_end_attribute) ptr = intern->ptr; if (ptr) { - retval = xmlTextWriterEndAttribute(ptr); + switch (type) { + case 0: + retval = xmlTextWriterEndAttribute(ptr); + break; + case 1: + retval = xmlTextWriterEndElement(ptr); + break; + case 2: + retval = xmlTextWriterEndPI(ptr); + break; + case 3: + retval = xmlTextWriterEndCDATA(ptr); + break; + case 4: + retval = xmlTextWriterEndComment(ptr); + break; + case 5: + retval = xmlTextWriterEndDocument(ptr); + break; + case 6: + retval = xmlTextWriterEndDTD(ptr); + break; + case 7: + retval = xmlTextWriterEndDTDElement(ptr); + break; + case 8: + retval = xmlTextWriterEndDTDAttlist(ptr); + break; + case 9: + retval = xmlTextWriterEndDTDEntity(ptr); + break; + default: + retval = -1; + break; + } if (retval != -1) { RETURN_TRUE; } @@ -491,6 +526,14 @@ PHP_FUNCTION(xmlwriter_end_attribute) RETURN_FALSE; } + + +/* {{{ proto bool xmlwriter_end_attribute(resource xmlwriter) +End attribute - returns FALSE on error */ +PHP_FUNCTION(xmlwriter_end_attribute) +{ + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); +} /* }}} */ #if LIBXML_VERSION > 20617 @@ -522,12 +565,7 @@ PHP_FUNCTION(xmlwriter_start_attribute_ns) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } - + XMLW_NAME_CHK("Invalid Attribute Name"); ptr = intern->ptr; @@ -572,11 +610,7 @@ PHP_FUNCTION(xmlwriter_write_attribute) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Attribute Name"); ptr = intern->ptr; @@ -620,11 +654,7 @@ PHP_FUNCTION(xmlwriter_write_attribute_ns) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Attribute Name"); ptr = intern->ptr; @@ -665,11 +695,7 @@ PHP_FUNCTION(xmlwriter_start_element) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -684,6 +710,7 @@ PHP_FUNCTION(xmlwriter_start_element) } /* }}} */ + /* {{{ proto bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri) Create start namespaced element tag - returns FALSE on error */ PHP_FUNCTION(xmlwriter_start_element_ns) @@ -712,12 +739,7 @@ PHP_FUNCTION(xmlwriter_start_element_ns) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } - + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -726,6 +748,7 @@ PHP_FUNCTION(xmlwriter_start_element_ns) if (retval != -1) { RETURN_TRUE; } + } RETURN_FALSE; @@ -736,34 +759,7 @@ PHP_FUNCTION(xmlwriter_start_element_ns) End current element - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_element) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndElement(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); } /* }}} */ @@ -795,11 +791,7 @@ PHP_FUNCTION(xmlwriter_write_element) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -843,11 +835,7 @@ PHP_FUNCTION(xmlwriter_write_element_ns) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -869,36 +857,32 @@ PHP_FUNCTION(xmlwriter_start_pi) zval *pind; xmlwriter_object *intern; xmlTextWriterPtr ptr; - char *target; - int target_len, retval; + char *name; + int name_len, retval; #ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &target, &target_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) { return; } XMLWRITER_FROM_OBJECT(intern, this); } else #endif { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &pind, &target, &target_len) == FAILURE) { + 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); } - retval = xmlValidateName((xmlChar *) target, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid PI Target"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid PI Target"); ptr = intern->ptr; if (ptr) { - retval = xmlTextWriterStartPI(ptr, target); + retval = xmlTextWriterStartPI(ptr, name); if (retval != -1) { RETURN_TRUE; } @@ -912,35 +896,7 @@ PHP_FUNCTION(xmlwriter_start_pi) End current PI - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_pi) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndPI(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 2); } /* }}} */ @@ -951,15 +907,15 @@ PHP_FUNCTION(xmlwriter_write_pi) zval *pind; xmlwriter_object *intern; xmlTextWriterPtr ptr; - char *target, *content; - int target_len, content_len, retval; + char *name, *content; + int name_len, content_len, retval; #ifdef ZEND_ENGINE_2 zval *this = getThis(); if (this) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", - &target, &target_len, &content, &content_len) == FAILURE) { + &name, &name_len, &content, &content_len) == FAILURE) { return; } XMLWRITER_FROM_OBJECT(intern, this); @@ -967,22 +923,18 @@ PHP_FUNCTION(xmlwriter_write_pi) #endif { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &pind, - &target, &target_len, &content, &content_len) == FAILURE) { + &name, &name_len, &content, &content_len) == FAILURE) { return; } ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) target, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid PI Target"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid PI Target"); ptr = intern->ptr; if (ptr) { - retval = xmlTextWriterWritePI(ptr, target, content); + retval = xmlTextWriterWritePI(ptr, name, content); if (retval != -1) { RETURN_TRUE; } @@ -1031,35 +983,7 @@ PHP_FUNCTION(xmlwriter_start_cdata) End current CDATA - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_cdata) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndCDATA(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 3); } /* }}} */ @@ -1136,7 +1060,7 @@ PHP_FUNCTION(xmlwriter_text) if (ptr) { retval = xmlTextWriterWriteString(ptr, content); - if (retval != -1) { + if (retval) { RETURN_TRUE; } } @@ -1185,35 +1109,7 @@ PHP_FUNCTION(xmlwriter_start_comment) Create end comment - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_comment) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndComment(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 4); } /* }}} */ #endif /* LIBXML_VERSION >= 20607 */ @@ -1306,34 +1202,7 @@ PHP_FUNCTION(xmlwriter_start_document) End current document - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_document) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndDocument(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 5); } /* }}} */ @@ -1382,34 +1251,7 @@ PHP_FUNCTION(xmlwriter_start_dtd) End current DTD - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_dtd) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndDTD(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 6); } /* }}} */ @@ -1482,11 +1324,7 @@ PHP_FUNCTION(xmlwriter_start_dtd_element) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Attribute Name"); ptr = intern->ptr; @@ -1505,35 +1343,7 @@ PHP_FUNCTION(xmlwriter_start_dtd_element) End current DTD element - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_dtd_element) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndDTDElement(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 7); } /* }}} */ @@ -1565,11 +1375,7 @@ PHP_FUNCTION(xmlwriter_write_dtd_element) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -1611,11 +1417,7 @@ PHP_FUNCTION(xmlwriter_start_dtd_attlist) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Attribute Name"); ptr = intern->ptr; @@ -1634,35 +1436,7 @@ PHP_FUNCTION(xmlwriter_start_dtd_attlist) End current DTD AttList - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_dtd_attlist) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; - -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndDTDAttlist(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 8); } /* }}} */ @@ -1696,12 +1470,7 @@ PHP_FUNCTION(xmlwriter_write_dtd_attlist) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } - + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr; @@ -1745,11 +1514,7 @@ PHP_FUNCTION(xmlwriter_start_dtd_entity) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Attribute Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Attribute Name"); ptr = intern->ptr; @@ -1768,34 +1533,7 @@ PHP_FUNCTION(xmlwriter_start_dtd_entity) End current DTD Entity - returns FALSE on error */ PHP_FUNCTION(xmlwriter_end_dtd_entity) { - zval *pind; - xmlwriter_object *intern; - xmlTextWriterPtr ptr; - int retval; -#ifdef ZEND_ENGINE_2 - zval *this = getThis(); - - if (this) { - XMLWRITER_FROM_OBJECT(intern, this); - } else -#endif - { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pind) == FAILURE) { - return; - } - - ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); - } - ptr = intern->ptr; - - if (ptr) { - retval = xmlTextWriterEndDTDEntity(ptr); - if (retval != -1) { - RETURN_TRUE; - } - } - - RETURN_FALSE; + php_xmlwriter_end(INTERNAL_FUNCTION_PARAM_PASSTHRU, 9); } /* }}} */ @@ -1828,11 +1566,7 @@ PHP_FUNCTION(xmlwriter_write_dtd_entity) ZEND_FETCH_RESOURCE(intern,xmlwriter_object *, &pind, -1, "XMLWriter", le_xmlwriter); } - retval = xmlValidateName((xmlChar *) name, 0); - if (retval != 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Element Name"); - RETURN_FALSE; - } + XMLW_NAME_CHK("Invalid Element Name"); ptr = intern->ptr;