From f6bad798cf8f492eb96f7e267b07d8683bbd095e Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Fri, 11 Apr 2003 19:38:54 +0000 Subject: [PATCH] make sure xmllint --stream and xmllint --stream --valid returns errors * xmllint.c xmlreader.c include/libxml/xmlreader.h: make sure xmllint --stream and xmllint --stream --valid returns errors code appropriately Daniel --- ChangeLog | 6 ++++++ include/libxml/xmlreader.h | 1 + xmllint.c | 9 +++++++++ xmlreader.c | 14 ++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/ChangeLog b/ChangeLog index 882daed8..e3a5e655 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Apr 11 21:36:21 CEST 2003 Daniel Veillard + + * xmllint.c xmlreader.c include/libxml/xmlreader.h: make sure + xmllint --stream and xmllint --stream --valid returns errors + code appropriately + Fri Apr 11 10:59:24 CEST 2003 Daniel Veillard * xmlreader.c include/libxml/xmlreader.h: Added the Expand() diff --git a/include/libxml/xmlreader.h b/include/libxml/xmlreader.h index f035258f..de980616 100644 --- a/include/libxml/xmlreader.h +++ b/include/libxml/xmlreader.h @@ -108,6 +108,7 @@ xmlNodePtr xmlTextReaderCurrentNode (xmlTextReaderPtr reader); xmlDocPtr xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); xmlNodePtr xmlTextReaderExpand (xmlTextReaderPtr reader); int xmlTextReaderNext (xmlTextReaderPtr reader); +int xmlTextReaderIsValid (xmlTextReaderPtr reader); /* * Error handling extensions diff --git a/xmllint.c b/xmllint.c index 9021b19e..fb9141bc 100644 --- a/xmllint.c +++ b/xmllint.c @@ -635,15 +635,24 @@ static void streamFile(char *filename) { ret = xmlTextReaderRead(reader); } + if (valid) { + if (xmlTextReaderIsValid(reader) != 1) { + xmlGenericError(xmlGenericErrorContext, + "Document %s does not validate\n", filename); + progresult = 3; + } + } /* * Done, cleanup and status */ xmlFreeTextReader(reader); if (ret != 0) { printf("%s : failed to parse\n", filename); + progresult = 1; } } else { fprintf(stderr, "Unable to open %s\n", filename); + progresult = 1; } } diff --git a/xmlreader.c b/xmlreader.c index 529ef56f..4821b2a9 100644 --- a/xmlreader.c +++ b/xmlreader.c @@ -2611,6 +2611,20 @@ xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, } } +/** + * xmlTextReaderIsValid: + * @reader: the xmlTextReaderPtr used + * + * Retrieve the validity status from the parser context + * + * Returns the flag value 1 if valid, 0 if no, and -1 in case of error + */ +int +xmlTextReaderIsValid(xmlTextReaderPtr reader) { + if ((reader == NULL) || (reader->ctxt == NULL)) return(-1); + return(reader->ctxt->valid); +} + /** * xmlTextReaderGetErrorHandler: * @reader: the xmlTextReaderPtr used