Skip to content

Commit 7e0bbbc

Browse files
committed
parser: New input API
Provide a new set of functions to create xmlParserInputs. These can be used for the document entity or from external entity loaders. - Don't require xmlParserInputBuffer. - All functions take a base URI. - All functions take an encoding as string. - xmlNewInputURL also takes a public ID. - xmlNewInputMemory takes a size_t. - Optimization hints for memory buffers. Improve documentation. Only call xmlInitParser before allocating a new parser context. Call xmlCtxtUseOptions as early as possible.
1 parent 4515726 commit 7e0bbbc

File tree

9 files changed

+1148
-1011
lines changed

9 files changed

+1148
-1011
lines changed

HTMLparser.c

+327-397
Large diffs are not rendered by default.

include/libxml/HTMLparser.h

+2
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ XMLPUBFUN htmlDocPtr
246246
const char *URL,
247247
const char *encoding,
248248
int options);
249+
XMLPUBFUN htmlDocPtr
250+
htmlCtxtParseDocument (htmlParserCtxtPtr ctxt);
249251
XMLPUBFUN htmlDocPtr
250252
htmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
251253
const xmlChar *cur,

include/libxml/parser.h

+42
Original file line numberDiff line numberDiff line change
@@ -1309,6 +1309,8 @@ XMLPUBFUN xmlDocPtr
13091309
const char *URL,
13101310
const char *encoding,
13111311
int options);
1312+
XMLPUBFUN xmlDocPtr
1313+
xmlCtxtParseDocument (xmlParserCtxtPtr ctxt);
13121314
XMLPUBFUN xmlDocPtr
13131315
xmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
13141316
const xmlChar *cur,
@@ -1342,6 +1344,46 @@ XMLPUBFUN xmlDocPtr
13421344
const char *encoding,
13431345
int options);
13441346

1347+
/**
1348+
* New input API (2.9.13)
1349+
*/
1350+
1351+
#define XML_INPUT_BUF_STATIC (1u << 1)
1352+
#define XML_INPUT_BUF_ZERO_TERMINATED (1u << 2)
1353+
1354+
XMLPUBFUN xmlParserInputPtr
1355+
xmlNewInputURL (xmlParserCtxtPtr ctxt,
1356+
const char *url,
1357+
const char *publicId,
1358+
const char *encoding,
1359+
int flags);
1360+
XMLPUBFUN xmlParserInputPtr
1361+
xmlNewInputMemory (xmlParserCtxtPtr ctxt,
1362+
const char *filename,
1363+
const void *mem, size_t size,
1364+
const char *encoding,
1365+
int flags);
1366+
XMLPUBFUN xmlParserInputPtr
1367+
xmlNewInputString (xmlParserCtxtPtr ctxt,
1368+
const char *filename,
1369+
const char *str,
1370+
const char *encoding,
1371+
int flags);
1372+
XMLPUBFUN xmlParserInputPtr
1373+
xmlNewInputFd (xmlParserCtxtPtr ctxt,
1374+
const char *filename,
1375+
int fd,
1376+
const char *encoding,
1377+
int flags);
1378+
XMLPUBFUN xmlParserInputPtr
1379+
xmlNewInputIO (xmlParserCtxtPtr ctxt,
1380+
const char *url,
1381+
xmlInputReadCallback ioRead,
1382+
xmlInputCloseCallback ioClose,
1383+
void *ioCtxt,
1384+
const char *encoding,
1385+
int flags);
1386+
13451387
/*
13461388
* Library wide options
13471389
*/

include/private/io.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ xmlNoNetExists(const char *filename);
1717
XML_HIDDEN int
1818
xmlParserInputBufferCreateFilenameSafe(const char *URI, xmlCharEncoding enc,
1919
xmlParserInputBufferPtr *out);
20+
21+
XML_HIDDEN xmlParserInputBufferPtr
22+
xmlNewInputBufferString(const char *str, int flags);
2023
XML_HIDDEN xmlParserInputBufferPtr
21-
xmlParserInputBufferCreateString(const xmlChar *str);
24+
xmlNewInputBufferMemory(const void *mem, size_t size, int flags,
25+
xmlCharEncoding enc);
2226

2327
#ifdef LIBXML_OUTPUT_ENABLED
2428
XML_HIDDEN xmlOutputBufferPtr

include/private/parser.h

+4
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,8 @@ xmlParserNsUpdateSax(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
8383
XML_HIDDEN void *
8484
xmlParserNsLookupSax(xmlParserCtxtPtr ctxt, const xmlChar *prefix);
8585

86+
XML_HIDDEN xmlParserInputPtr
87+
xmlNewInputPush(xmlParserCtxtPtr ctxt, const char *url,
88+
const char *chunk, int size, const char *encoding);
89+
8690
#endif /* XML_PARSER_H_PRIVATE__ */

0 commit comments

Comments
 (0)