diff options
author | Aron Xu <aron@debian.org> | 2015-09-21 22:58:06 +0800 |
---|---|---|
committer | Aron Xu <aron@debian.org> | 2015-09-21 22:58:06 +0800 |
commit | 2ee13d9e464a1f5daccaff58f5d09d36b7c4f667 (patch) | |
tree | b022967f880b7fb1e56c8cc4c3f200d6ffbc9efd /xmllint.c | |
parent | 7300193becde71a344c8ac0973dc290fa24d800d (diff) | |
download | libxml2-upstream.tar.gz |
Revert "Imported Upstream version 2.9.1+dfsg1"upstream
This reverts commit 7300193becde71a344c8ac0973dc290fa24d800d.
Diffstat (limited to 'xmllint.c')
-rw-r--r-- | xmllint.c | 45 |
1 files changed, 35 insertions, 10 deletions
@@ -1837,8 +1837,12 @@ static void streamFile(char *filename) { if ((fd = open(filename, O_RDONLY)) < 0) return; base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; - if (base == (void *) MAP_FAILED) + if (base == (void *) MAP_FAILED) { + close(fd); + fprintf(stderr, "mmap failure for file %s\n", filename); + progresult = XMLLINT_ERR_RDFILE; return; + } reader = xmlReaderForMemory(base, info.st_size, filename, NULL, options); @@ -2190,6 +2194,8 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) f = fopen(filename, "rb"); +#elif defined(__OS400__) + f = fopen(filename, "rb"); #else f = fopen(filename, "r"); #endif @@ -2202,6 +2208,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { if (res > 0) { ctxt = htmlCreatePushParserCtxt(NULL, NULL, chars, res, filename, XML_CHAR_ENCODING_NONE); + xmlCtxtUseOptions(ctxt, options); while ((res = fread(chars, 1, pushsize, f)) > 0) { htmlParseChunk(ctxt, chars, res, 0); } @@ -2223,8 +2230,12 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { if ((fd = open(filename, O_RDONLY)) < 0) return; base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; - if (base == (void *) MAP_FAILED) + if (base == (void *) MAP_FAILED) { + close(fd); + fprintf(stderr, "mmap failure for file %s\n", filename); + progresult = XMLLINT_ERR_RDFILE; return; + } doc = htmlReadMemory((char *) base, info.st_size, filename, NULL, options); @@ -2251,6 +2262,8 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { } else { #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) f = fopen(filename, "rb"); +#elif defined(__OS400__) + f = fopen(filename, "rb"); #else f = fopen(filename, "r"); #endif @@ -2292,6 +2305,8 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) f = fopen(filename, "rb"); +#elif defined(__OS400__) + f = fopen(filename, "rb"); #else f = fopen(filename, "r"); #endif @@ -2338,8 +2353,12 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { if ((fd = open(filename, O_RDONLY)) < 0) return; base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; - if (base == (void *) MAP_FAILED) + if (base == (void *) MAP_FAILED) { + close(fd); + fprintf(stderr, "mmap failure for file %s\n", filename); + progresult = XMLLINT_ERR_RDFILE; return; + } if (rectxt == NULL) doc = xmlReadMemory((char *) base, info.st_size, @@ -2561,7 +2580,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { fprintf(stderr, "Failed to canonicalize\n"); progresult = XMLLINT_ERR_OUT; } - } else if (canonical) { + } else if (canonical_11) { xmlChar *result = NULL; int size; @@ -2990,7 +3009,7 @@ static void usage(const char *name) { printf("\t--noenc : ignore any encoding specified inside the document\n"); printf("\t--noout : don't output the result tree\n"); printf("\t--path 'paths': provide a set of paths for resources\n"); - printf("\t--load-trace : print trace of all external entites loaded\n"); + printf("\t--load-trace : print trace of all external entities loaded\n"); printf("\t--nonet : refuse to fetch DTDs or entities over network\n"); printf("\t--nocompact : do not generate compact text nodes\n"); printf("\t--htmlout : output results as HTML\n"); @@ -3087,6 +3106,10 @@ static void usage(const char *name) { static void registerNode(xmlNodePtr node) { node->_private = malloc(sizeof(long)); + if (node->_private == NULL) { + fprintf(stderr, "Out of memory in xmllint:registerNode()\n"); + exit(XMLLINT_ERR_MEM); + } *(long*)node->_private = (long) 0x81726354; nbregister++; } @@ -3372,11 +3395,13 @@ main(int argc, char **argv) { (!strcmp(argv[i], "--pretty"))) { i++; #ifdef LIBXML_OUTPUT_ENABLED - format = atoi(argv[i]); - if (format == 1) { - noblanks++; - xmlKeepBlanksDefault(0); - } + if (argv[i] != NULL) { + format = atoi(argv[i]); + if (format == 1) { + noblanks++; + xmlKeepBlanksDefault(0); + } + } #endif /* LIBXML_OUTPUT_ENABLED */ } #ifdef LIBXML_READER_ENABLED |