summaryrefslogtreecommitdiff
path: root/xmllint.c
diff options
context:
space:
mode:
authorMike Hommey <mh@glandium.org>2004-07-06 12:57:17 +0000
committerMike Hommey <mh@glandium.org>2004-07-06 12:57:17 +0000
commitc14c53a3645d81281058d4bb4cff24fa8d6faf33 (patch)
tree29bccc2e7499af078a3d1cdcfb517a1dee891be5 /xmllint.c
parentd4e028c96af89ade493b440d4f2de6b684c03a06 (diff)
downloadlibxml2-c14c53a3645d81281058d4bb4cff24fa8d6faf33.tar.gz
Load /tmp/tmp.DIvcnD/libxml2-2.6.11 intoupstream/2.6.11
packages/libxml2/branches/upstream/current.
Diffstat (limited to 'xmllint.c')
-rw-r--r--xmllint.c82
1 files changed, 55 insertions, 27 deletions
diff --git a/xmllint.c b/xmllint.c
index e333a39..e91707c 100644
--- a/xmllint.c
+++ b/xmllint.c
@@ -97,6 +97,18 @@
#define XML_XML_DEFAULT_CATALOG "file:///etc/xml/catalog"
#endif
+typedef enum {
+ XMLLINT_RETURN_OK = 0, /* No error */
+ XMLLINT_ERR_UNCLASS, /* Unclassified */
+ XMLLINT_ERR_DTD, /* Error in DTD */
+ XMLLINT_ERR_VALID, /* Validation error */
+ XMLLINT_ERR_RDFILE, /* CtxtReadFile error */
+ XMLLINT_ERR_SCHEMACOMP, /* Schema compilation */
+ XMLLINT_ERR_OUT, /* Error writing output */
+ XMLLINT_ERR_SCHEMAPAT, /* Error in schema pattern */
+ XMLLINT_ERR_RDREGIS, /* Error in Reader registration */
+ XMLLINT_ERR_MEM /* Out of memory error */
+} xmllintReturnCode;
#ifdef LIBXML_DEBUG_ENABLED
static int shell = 0;
static int debugent = 0;
@@ -148,7 +160,7 @@ static int xinclude = 0;
#endif
static int dtdattrs = 0;
static int loaddtd = 0;
-static int progresult = 0;
+static xmllintReturnCode progresult = XMLLINT_RETURN_OK;
static int timing = 0;
static int generate = 0;
static int dropdtd = 0;
@@ -181,7 +193,7 @@ static void
OOM(void)
{
fprintf(stderr, "Ran out of memory needs > %d bytes\n", maxmem);
- progresult = 9;
+ progresult = XMLLINT_ERR_MEM;
}
static void
@@ -744,7 +756,7 @@ static void streamFile(char *filename) {
if (ret < 0) {
xmlGenericError(xmlGenericErrorContext,
"Relax-NG schema %s failed to compile\n", relaxng);
- progresult = 5;
+ progresult = XMLLINT_ERR_SCHEMACOMP;
relaxng = NULL;
}
if ((timing) && (!repeat)) {
@@ -788,7 +800,7 @@ static void streamFile(char *filename) {
if (xmlTextReaderIsValid(reader) != 1) {
xmlGenericError(xmlGenericErrorContext,
"Document %s does not validate\n", filename);
- progresult = 3;
+ progresult = XMLLINT_ERR_VALID;
}
}
#endif /* LIBXML_VALID_ENABLED */
@@ -796,7 +808,7 @@ static void streamFile(char *filename) {
if (relaxng != NULL) {
if (xmlTextReaderIsValid(reader) != 1) {
fprintf(stderr, "%s fails to validate\n", filename);
- progresult = 3;
+ progresult = XMLLINT_ERR_VALID;
} else {
fprintf(stderr, "%s validates\n", filename);
}
@@ -808,11 +820,11 @@ static void streamFile(char *filename) {
xmlFreeTextReader(reader);
if (ret != 0) {
fprintf(stderr, "%s : failed to parse\n", filename);
- progresult = 1;
+ progresult = XMLLINT_ERR_UNCLASS;
}
} else {
fprintf(stderr, "Unable to open %s\n", filename);
- progresult = 1;
+ progresult = XMLLINT_ERR_UNCLASS;
}
#ifdef HAVE_SYS_MMAN_H
if (memory) {
@@ -848,11 +860,11 @@ static void walkDoc(xmlDocPtr doc) {
xmlFreeTextReader(reader);
if (ret != 0) {
fprintf(stderr, "failed to walk through the doc\n");
- progresult = 1;
+ progresult = XMLLINT_ERR_UNCLASS;
}
} else {
fprintf(stderr, "Failed to crate a reader from the document\n");
- progresult = 1;
+ progresult = XMLLINT_ERR_UNCLASS;
}
}
#endif /* LIBXML_READER_ENABLED */
@@ -889,7 +901,11 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
else if ((html) && (push)) {
FILE *f;
- f = fopen(filename, "r");
+#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
+ f = fopen(filename, "rb");
+#else
+ f = fopen(filename, "r");
+#endif
if (f != NULL) {
int res, size = 3;
char chars[4096];
@@ -928,7 +944,11 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if ((filename[0] == '-') && (filename[1] == 0)) {
f = stdin;
} else {
- f = fopen(filename, "r");
+#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
+ f = fopen(filename, "rb");
+#else
+ f = fopen(filename, "r");
+#endif
}
if (f != NULL) {
int ret;
@@ -963,7 +983,11 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
} else {
FILE *f;
+#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
+ f = fopen(filename, "rb");
+#else
f = fopen(filename, "r");
+#endif
if (f != NULL) {
if (rectxt == NULL)
doc = xmlReadIO((xmlInputReadCallback) myRead,
@@ -1033,7 +1057,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
doc = xmlCtxtReadFile(ctxt, filename, NULL, options);
if (ctxt->valid == 0)
- progresult = 4;
+ progresult = XMLLINT_ERR_RDFILE;
if (rectxt == NULL)
xmlFreeParserCtxt(ctxt);
}
@@ -1050,7 +1074,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
* If we don't have a document we might as well give up. Do we
* want an error message here? <sven@zen.org> */
if (doc == NULL) {
- progresult = 1;
+ progresult = XMLLINT_ERR_UNCLASS;
return;
}
@@ -1171,13 +1195,13 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
}
if (out != NULL) {
if (htmlDocDump(out, doc) < 0)
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
if (output != NULL)
fclose(out);
} else {
fprintf(stderr, "failed to open %s\n", output);
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
}
}
if ((timing) && (!repeat)) {
@@ -1224,7 +1248,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if (ret < 0) {
fprintf(stderr, "failed save to %s\n",
output ? output : "-");
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
}
}
else if (format) {
@@ -1232,7 +1256,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if (ret < 0) {
fprintf(stderr, "failed save to %s\n",
output ? output : "-");
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
}
}
else {
@@ -1244,13 +1268,13 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
}
if (out != NULL) {
if (xmlDocDump(out, doc) < 0)
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
if (output != NULL)
fclose(out);
} else {
fprintf(stderr, "failed to open %s\n", output);
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
}
}
if ((timing) && (!repeat)) {
@@ -1271,7 +1295,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
fclose(out);
} else {
fprintf(stderr, "failed to open %s\n", output);
- progresult = 6;
+ progresult = XMLLINT_ERR_OUT;
}
}
#endif
@@ -1302,7 +1326,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
else
xmlGenericError(xmlGenericErrorContext,
"Could not parse DTD %s\n", dtdvalidfpi);
- progresult = 2;
+ progresult = XMLLINT_ERR_DTD;
} else {
xmlValidCtxtPtr cvp;
@@ -1327,7 +1351,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
xmlGenericError(xmlGenericErrorContext,
"Document %s does not validate against %s\n",
filename, dtdvalidfpi);
- progresult = 3;
+ progresult = XMLLINT_ERR_VALID;
}
if ((timing) && (!repeat)) {
endTimer("Validating against DTD");
@@ -1353,7 +1377,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if (!xmlValidateDocument(cvp, doc)) {
xmlGenericError(xmlGenericErrorContext,
"Document %s does not validate\n", filename);
- progresult = 3;
+ progresult = XMLLINT_ERR_VALID;
}
if ((timing) && (!repeat)) {
endTimer("Validating");
@@ -1380,9 +1404,11 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
fprintf(stderr, "%s validates\n", filename);
} else if (ret > 0) {
fprintf(stderr, "%s fails to validate\n", filename);
+ progresult = XMLLINT_ERR_VALID;
} else {
fprintf(stderr, "%s validation generated an internal error\n",
filename);
+ progresult = XMLLINT_ERR_VALID;
}
xmlRelaxNGFreeValidCtxt(ctxt);
if ((timing) && (!repeat)) {
@@ -1406,9 +1432,11 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
fprintf(stderr, "%s validates\n", filename);
} else if (ret > 0) {
fprintf(stderr, "%s fails to validate\n", filename);
+ progresult = XMLLINT_ERR_VALID;
} else {
fprintf(stderr, "%s validation generated an internal error\n",
filename);
+ progresult = XMLLINT_ERR_VALID;
}
xmlSchemaFreeValidCtxt(ctxt);
if ((timing) && (!repeat)) {
@@ -1946,7 +1974,7 @@ main(int argc, char **argv) {
if (relaxngschemas == NULL) {
xmlGenericError(xmlGenericErrorContext,
"Relax-NG schema %s failed to compile\n", relaxng);
- progresult = 5;
+ progresult = XMLLINT_ERR_SCHEMACOMP;
relaxng = NULL;
}
xmlRelaxNGFreeParserCtxt(ctxt);
@@ -1972,7 +2000,7 @@ main(int argc, char **argv) {
if (wxschemas == NULL) {
xmlGenericError(xmlGenericErrorContext,
"WXS schema %s failed to compile\n", schema);
- progresult = 5;
+ progresult = XMLLINT_ERR_SCHEMACOMP;
schema = NULL;
}
xmlSchemaFreeParserCtxt(ctxt);
@@ -1987,7 +2015,7 @@ main(int argc, char **argv) {
if (patternc == NULL) {
xmlGenericError(xmlGenericErrorContext,
"Pattern %s failed to compile\n", pattern);
- progresult = 7;
+ progresult = XMLLINT_ERR_SCHEMAPAT;
pattern = NULL;
}
}
@@ -2071,7 +2099,7 @@ main(int argc, char **argv) {
if ((chkregister) && (nbregister != 0)) {
fprintf(stderr, "Registration count off: %d\n", nbregister);
- progresult = 8;
+ progresult = XMLLINT_ERR_RDREGIS;
}
}
files ++;