]> granicus.if.org Git - php/commitdiff
Provide a common handler for "close".
authorIlia Alshanetsky <iliaa@php.net>
Tue, 16 Aug 2005 23:10:36 +0000 (23:10 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 16 Aug 2005 23:10:36 +0000 (23:10 +0000)
Macro the name validation.

ext/xmlwriter/php_xmlwriter.c

index 61f4b135bfaef2d5bcf8ee82a4b484fcc923bea9..e9e632d23ea18f272a557944eca4548cd524ea43 100644 (file)
@@ -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;