[PATCH v3 4/6] xmllite: Move reader_parse_dtd below reader_parse_qname.
Jeff Smith
whydoubt at gmail.com
Tue Oct 29 14:36:02 CDT 2019
Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
dlls/xmllite/reader.c | 96 +++++++++++++++++++++----------------------
1 file changed, 48 insertions(+), 48 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index 701dd9cc31..88db0df4c2 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -1846,54 +1846,6 @@ static HRESULT reader_parse_externalid(xmlreader *reader)
return S_FALSE;
}
-/* [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>' */
-static HRESULT reader_parse_dtd(xmlreader *reader)
-{
- static const WCHAR doctypeW[] = {'<','!','D','O','C','T','Y','P','E',0};
- strval name;
- WCHAR *cur;
- HRESULT hr;
-
- /* check if we have "<!DOCTYPE" */
- if (reader_cmp(reader, doctypeW)) return S_FALSE;
- reader_shrink(reader);
-
- /* DTD processing is not allowed by default */
- if (reader->dtdmode == DtdProcessing_Prohibit) return WC_E_DTDPROHIBITED;
-
- reader_skipn(reader, 9);
- if (!reader_skipspaces(reader)) return WC_E_WHITESPACE;
-
- /* name */
- hr = reader_parse_name(reader, &name);
- if (FAILED(hr)) return WC_E_DECLDOCTYPE;
-
- reader_skipspaces(reader);
-
- hr = reader_parse_externalid(reader);
- if (FAILED(hr)) return hr;
-
- reader_skipspaces(reader);
-
- cur = reader_get_ptr(reader);
- if (*cur != '>')
- {
- FIXME("internal subset parsing not implemented\n");
- return E_NOTIMPL;
- }
-
- /* skip '>' */
- reader_skipn(reader, 1);
-
- reader->nodetype = XmlNodeType_DocumentType;
- reader_free_strvalued(reader, &reader->empty_element.localname);
- reader_strvaldup(reader, &name, &reader->empty_element.localname);
- reader_free_strvalued(reader, &reader->empty_element.qname);
- reader_strvaldup(reader, &name, &reader->empty_element.qname);
-
- return S_OK;
-}
-
/* [11 NS] LocalPart ::= NCName */
static HRESULT reader_parse_local(xmlreader *reader, strval *local, BOOL check_for_separator)
{
@@ -2009,6 +1961,54 @@ static HRESULT reader_parse_qname(xmlreader *reader, strval *prefix, strval *loc
return S_OK;
}
+/* [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>' */
+static HRESULT reader_parse_dtd(xmlreader *reader)
+{
+ static const WCHAR doctypeW[] = {'<','!','D','O','C','T','Y','P','E',0};
+ strval name;
+ WCHAR *cur;
+ HRESULT hr;
+
+ /* check if we have "<!DOCTYPE" */
+ if (reader_cmp(reader, doctypeW)) return S_FALSE;
+ reader_shrink(reader);
+
+ /* DTD processing is not allowed by default */
+ if (reader->dtdmode == DtdProcessing_Prohibit) return WC_E_DTDPROHIBITED;
+
+ reader_skipn(reader, 9);
+ if (!reader_skipspaces(reader)) return WC_E_WHITESPACE;
+
+ /* name */
+ hr = reader_parse_name(reader, &name);
+ if (FAILED(hr)) return WC_E_DECLDOCTYPE;
+
+ reader_skipspaces(reader);
+
+ hr = reader_parse_externalid(reader);
+ if (FAILED(hr)) return hr;
+
+ reader_skipspaces(reader);
+
+ cur = reader_get_ptr(reader);
+ if (*cur != '>')
+ {
+ FIXME("internal subset parsing not implemented\n");
+ return E_NOTIMPL;
+ }
+
+ /* skip '>' */
+ reader_skipn(reader, 1);
+
+ reader->nodetype = XmlNodeType_DocumentType;
+ reader_free_strvalued(reader, &reader->empty_element.localname);
+ reader_strvaldup(reader, &name, &reader->empty_element.localname);
+ reader_free_strvalued(reader, &reader->empty_element.qname);
+ reader_strvaldup(reader, &name, &reader->empty_element.qname);
+
+ return S_OK;
+}
+
static WCHAR get_predefined_entity(const xmlreader *reader, const strval *name)
{
static const WCHAR entltW[] = {'l','t'};
--
2.21.0
More information about the wine-devel
mailing list