static const char *xml_parse_meta_tag(ACL_XML2 *xml, const char *data) { int ch; if (*data == 0) return data; if (xml->curr_node->ltag == xml->dummy) xml->curr_node->ltag = END(xml); while ((ch = *data) != 0) { if (END(xml) - xml->curr_node->ltag >= (ssize_t) CDATA_SIZE && IS_CDATA(xml->curr_node->ltag)) { xml->curr_node->ltag_size = END(xml) - xml->curr_node->ltag; ADD(xml, '\0'); xml->curr_node->text = END(xml); xml->curr_node->status = ACL_XML2_S_CDATA; xml->curr_node->flag |= ACL_XML2_F_CDATA; break; } else if (IS_SPACE(ch) || ch == '>') { xml->curr_node->ltag_size = END(xml) - xml->curr_node->ltag; if (NO_SPACE(xml)) return data; ADD(xml, '\0'); data++; xml->curr_node->status = ACL_XML2_S_MTXT; break; } if (NO_SPACE(xml)) return data; ADD(xml, ch); data++; } return data; }
static const char *xml_parse_meta_tag(ACL_XML2 *xml, const char *data) { int ch; if (*data == 0) return data; if (xml->curr_node->ltag == xml->addr) xml->curr_node->ltag = xml->ptr; while ((ch = *data) != 0) { #if 0 if (IS_SPACE(ch) || ch == '>') { if (xml->len < MIN_LEN) return data; data++; xml->curr_node->ltag_size = xml->ptr - xml->curr_node->ltag; if (IS_CDATA(xml->curr_node->ltag)) { cdata_prepare(xml, ch); xml->curr_node->status = ACL_XML2_S_CDATA; xml->curr_node->flag |= ACL_XML2_F_CDATA; } else { if (xml->len < MIN_LEN) return data; *xml->ptr++ = 0; xml->len--; xml->curr_node->status = ACL_XML2_S_MTXT; } break; } #else if (xml->ptr - xml->curr_node->ltag >= (ssize_t) CDATA_SIZE && IS_CDATA(xml->curr_node->ltag)) { xml->curr_node->ltag_size = xml->ptr - xml->curr_node->ltag; cdata_prepare(xml); xml->curr_node->status = ACL_XML2_S_CDATA; xml->curr_node->flag |= ACL_XML2_F_CDATA; break; } else if (IS_SPACE(ch) || ch == '>') { xml->curr_node->ltag_size = xml->ptr - xml->curr_node->ltag; if (xml->len < MIN_LEN) return data; data++; *xml->ptr++ = 0; xml->len--; xml->curr_node->status = ACL_XML2_S_MTXT; break; } #endif if (xml->len < MIN_LEN) return data; data++; xml->len--; *xml->ptr++ = ch; } return data; }