summaryrefslogtreecommitdiff
path: root/xmllint.c
diff options
context:
space:
mode:
Diffstat (limited to 'xmllint.c')
-rw-r--r--xmllint.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/xmllint.c b/xmllint.c
index e8d3b4d..79025f1 100644
--- a/xmllint.c
+++ b/xmllint.c
@@ -242,6 +242,7 @@ xmllintExternalEntityLoader(const char *URL, const char *ID,
xmlParserCtxtPtr ctxt) {
xmlParserInputPtr ret;
warningSAXFunc warning = NULL;
+ errorSAXFunc err = NULL;
int i;
const char *lastsegment = URL;
@@ -257,7 +258,9 @@ xmllintExternalEntityLoader(const char *URL, const char *ID,
if ((ctxt != NULL) && (ctxt->sax != NULL)) {
warning = ctxt->sax->warning;
+ err = ctxt->sax->error;
ctxt->sax->warning = NULL;
+ ctxt->sax->error = NULL;
}
if (defaultEntityLoader != NULL) {
@@ -265,6 +268,8 @@ xmllintExternalEntityLoader(const char *URL, const char *ID,
if (ret != NULL) {
if (warning != NULL)
ctxt->sax->warning = warning;
+ if (err != NULL)
+ ctxt->sax->error = err;
if (load_trace) {
fprintf \
(stderr,
@@ -286,6 +291,8 @@ xmllintExternalEntityLoader(const char *URL, const char *ID,
if (ret != NULL) {
if (warning != NULL)
ctxt->sax->warning = warning;
+ if (err != NULL)
+ ctxt->sax->error = err;
if (load_trace) {
fprintf \
(stderr,
@@ -299,6 +306,8 @@ xmllintExternalEntityLoader(const char *URL, const char *ID,
xmlFree(newURL);
}
}
+ if (err != NULL)
+ ctxt->sax->error = err;
if (warning != NULL) {
ctxt->sax->warning = warning;
if (URL != NULL)
@@ -3155,6 +3164,7 @@ main(int argc, char **argv) {
} else if ((!strcmp(argv[i], "-nonet")) ||
(!strcmp(argv[i], "--nonet"))) {
options |= XML_PARSE_NONET;
+ xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
} else if ((!strcmp(argv[i], "-nocompact")) ||
(!strcmp(argv[i], "--nocompact"))) {
options &= ~XML_PARSE_COMPACT;