OLD | NEW |
1 /* | 1 /* |
2 * xmllint.c : a small tester program for XML input. | 2 * xmllint.c : a small tester program for XML input. |
3 * | 3 * |
4 * See Copyright for the status of this software. | 4 * See Copyright for the status of this software. |
5 * | 5 * |
6 * daniel@veillard.com | 6 * daniel@veillard.com |
7 */ | 7 */ |
8 | 8 |
9 #include "libxml.h" | 9 #include "libxml.h" |
10 | 10 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 static int shell = 0; | 123 static int shell = 0; |
124 static int debugent = 0; | 124 static int debugent = 0; |
125 #endif | 125 #endif |
126 static int debug = 0; | 126 static int debug = 0; |
127 static int maxmem = 0; | 127 static int maxmem = 0; |
128 #ifdef LIBXML_TREE_ENABLED | 128 #ifdef LIBXML_TREE_ENABLED |
129 static int copy = 0; | 129 static int copy = 0; |
130 #endif /* LIBXML_TREE_ENABLED */ | 130 #endif /* LIBXML_TREE_ENABLED */ |
131 static int recovery = 0; | 131 static int recovery = 0; |
132 static int noent = 0; | 132 static int noent = 0; |
| 133 static int noenc = 0; |
133 static int noblanks = 0; | 134 static int noblanks = 0; |
134 static int noout = 0; | 135 static int noout = 0; |
135 static int nowrap = 0; | 136 static int nowrap = 0; |
136 #ifdef LIBXML_OUTPUT_ENABLED | 137 #ifdef LIBXML_OUTPUT_ENABLED |
137 static int format = 0; | 138 static int format = 0; |
138 static const char *output = NULL; | 139 static const char *output = NULL; |
139 static int compress = 0; | 140 static int compress = 0; |
140 static int oldout = 0; | 141 static int oldout = 0; |
141 #endif /* LIBXML_OUTPUT_ENABLED */ | 142 #endif /* LIBXML_OUTPUT_ENABLED */ |
142 #ifdef LIBXML_VALID_ENABLED | 143 #ifdef LIBXML_VALID_ENABLED |
(...skipping 12 matching lines...) Expand all Loading... |
155 static char * schematron = NULL; | 156 static char * schematron = NULL; |
156 static xmlSchematronPtr wxschematron = NULL; | 157 static xmlSchematronPtr wxschematron = NULL; |
157 #endif | 158 #endif |
158 static int repeat = 0; | 159 static int repeat = 0; |
159 static int insert = 0; | 160 static int insert = 0; |
160 #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) | 161 #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) |
161 static int html = 0; | 162 static int html = 0; |
162 static int xmlout = 0; | 163 static int xmlout = 0; |
163 #endif | 164 #endif |
164 static int htmlout = 0; | 165 static int htmlout = 0; |
| 166 #if defined(LIBXML_HTML_ENABLED) |
| 167 static int nodefdtd = 0; |
| 168 #endif |
165 #ifdef LIBXML_PUSH_ENABLED | 169 #ifdef LIBXML_PUSH_ENABLED |
166 static int push = 0; | 170 static int push = 0; |
| 171 static int pushsize = 4096; |
167 #endif /* LIBXML_PUSH_ENABLED */ | 172 #endif /* LIBXML_PUSH_ENABLED */ |
168 #ifdef HAVE_SYS_MMAN_H | 173 #ifdef HAVE_MMAP |
169 static int memory = 0; | 174 static int memory = 0; |
170 #endif | 175 #endif |
171 static int testIO = 0; | 176 static int testIO = 0; |
172 static char *encoding = NULL; | 177 static char *encoding = NULL; |
173 #ifdef LIBXML_XINCLUDE_ENABLED | 178 #ifdef LIBXML_XINCLUDE_ENABLED |
174 static int xinclude = 0; | 179 static int xinclude = 0; |
175 #endif | 180 #endif |
176 static int dtdattrs = 0; | 181 static int dtdattrs = 0; |
177 static int loaddtd = 0; | 182 static int loaddtd = 0; |
178 static xmllintReturnCode progresult = XMLLINT_RETURN_OK; | 183 static xmllintReturnCode progresult = XMLLINT_RETURN_OK; |
(...skipping 19 matching lines...) Expand all Loading... |
198 static int sax1 = 0; | 203 static int sax1 = 0; |
199 #endif /* LIBXML_SAX1_ENABLED */ | 204 #endif /* LIBXML_SAX1_ENABLED */ |
200 #ifdef LIBXML_PATTERN_ENABLED | 205 #ifdef LIBXML_PATTERN_ENABLED |
201 static const char *pattern = NULL; | 206 static const char *pattern = NULL; |
202 static xmlPatternPtr patternc = NULL; | 207 static xmlPatternPtr patternc = NULL; |
203 static xmlStreamCtxtPtr patstream = NULL; | 208 static xmlStreamCtxtPtr patstream = NULL; |
204 #endif | 209 #endif |
205 #ifdef LIBXML_XPATH_ENABLED | 210 #ifdef LIBXML_XPATH_ENABLED |
206 static const char *xpathquery = NULL; | 211 static const char *xpathquery = NULL; |
207 #endif | 212 #endif |
208 static int options = XML_PARSE_COMPACT; | 213 static int options = XML_PARSE_COMPACT | XML_PARSE_BIG_LINES; |
209 static int sax = 0; | 214 static int sax = 0; |
210 static int oldxml10 = 0; | 215 static int oldxml10 = 0; |
211 | 216 |
212 /************************************************************************ | 217 /************************************************************************ |
213 * * | 218 * * |
214 * Entity loading control and customization. * | 219 * Entity loading control and customization. * |
215 * * | 220 * * |
216 ************************************************************************/ | 221 ************************************************************************/ |
217 #define MAX_PATHS 64 | 222 #define MAX_PATHS 64 |
218 #ifdef _WIN32 | 223 #ifdef _WIN32 |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
509 * Do nothing | 514 * Do nothing |
510 */ | 515 */ |
511 } | 516 } |
512 static void XMLCDECL | 517 static void XMLCDECL |
513 endTimer(char *format, ...) | 518 endTimer(char *format, ...) |
514 { | 519 { |
515 /* | 520 /* |
516 * We cannot do anything because we don't have a timing function | 521 * We cannot do anything because we don't have a timing function |
517 */ | 522 */ |
518 #ifdef HAVE_STDARG_H | 523 #ifdef HAVE_STDARG_H |
| 524 va_list ap; |
519 va_start(ap, format); | 525 va_start(ap, format); |
520 vfprintf(stderr, format, ap); | 526 vfprintf(stderr, format, ap); |
521 va_end(ap); | 527 va_end(ap); |
522 fprintf(stderr, " was not timed\n", msec); | 528 fprintf(stderr, " was not timed\n"); |
523 #else | 529 #else |
524 /* We don't have gettimeofday, time or stdarg.h, what crazy world is | 530 /* We don't have gettimeofday, time or stdarg.h, what crazy world is |
525 * this ?! | 531 * this ?! |
526 */ | 532 */ |
527 #endif | 533 #endif |
528 } | 534 } |
529 #endif | 535 #endif |
530 /************************************************************************ | 536 /************************************************************************ |
531 * * | 537 * * |
532 * HTML ouput * | 538 * HTML ouput * |
(...skipping 1124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1657 #ifdef LIBXML_SCHEMAS_ENABLED | 1663 #ifdef LIBXML_SCHEMAS_ENABLED |
1658 if (wxschemas != NULL) { | 1664 if (wxschemas != NULL) { |
1659 int ret; | 1665 int ret; |
1660 xmlSchemaValidCtxtPtr vctxt; | 1666 xmlSchemaValidCtxtPtr vctxt; |
1661 | 1667 |
1662 vctxt = xmlSchemaNewValidCtxt(wxschemas); | 1668 vctxt = xmlSchemaNewValidCtxt(wxschemas); |
1663 xmlSchemaSetValidErrors(vctxt, | 1669 xmlSchemaSetValidErrors(vctxt, |
1664 (xmlSchemaValidityErrorFunc) fprintf, | 1670 (xmlSchemaValidityErrorFunc) fprintf, |
1665 (xmlSchemaValidityWarningFunc) fprintf, | 1671 (xmlSchemaValidityWarningFunc) fprintf, |
1666 stderr); | 1672 stderr); |
| 1673 xmlSchemaValidateSetFilename(vctxt, filename); |
1667 | 1674 |
1668 ret = xmlSchemaValidateStream(vctxt, buf, 0, handler, | 1675 ret = xmlSchemaValidateStream(vctxt, buf, 0, handler, |
1669 (void *)user_data); | 1676 (void *)user_data); |
1670 if (repeat == 0) { | 1677 if (repeat == 0) { |
1671 if (ret == 0) { | 1678 if (ret == 0) { |
1672 fprintf(stderr, "%s validates\n", filename); | 1679 fprintf(stderr, "%s validates\n", filename); |
1673 } else if (ret > 0) { | 1680 } else if (ret > 0) { |
1674 fprintf(stderr, "%s fails to validate\n", filename); | 1681 fprintf(stderr, "%s fails to validate\n", filename); |
1675 progresult = XMLLINT_ERR_VALID; | 1682 progresult = XMLLINT_ERR_VALID; |
1676 } else { | 1683 } else { |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1811 } | 1818 } |
1812 if (path != NULL) | 1819 if (path != NULL) |
1813 xmlFree(path); | 1820 xmlFree(path); |
1814 } | 1821 } |
1815 #endif | 1822 #endif |
1816 } | 1823 } |
1817 | 1824 |
1818 static void streamFile(char *filename) { | 1825 static void streamFile(char *filename) { |
1819 xmlTextReaderPtr reader; | 1826 xmlTextReaderPtr reader; |
1820 int ret; | 1827 int ret; |
1821 #ifdef HAVE_SYS_MMAN_H | 1828 #ifdef HAVE_MMAP |
1822 int fd = -1; | 1829 int fd = -1; |
1823 struct stat info; | 1830 struct stat info; |
1824 const char *base = NULL; | 1831 const char *base = NULL; |
1825 xmlParserInputBufferPtr input = NULL; | 1832 xmlParserInputBufferPtr input = NULL; |
1826 | 1833 |
1827 if (memory) { | 1834 if (memory) { |
1828 if (stat(filename, &info) < 0) | 1835 if (stat(filename, &info) < 0) |
1829 return; | 1836 return; |
1830 if ((fd = open(filename, O_RDONLY)) < 0) | 1837 if ((fd = open(filename, O_RDONLY)) < 0) |
1831 return; | 1838 return; |
1832 base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; | 1839 base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; |
1833 » if (base == (void *) MAP_FAILED) | 1840 » if (base == (void *) MAP_FAILED) { |
| 1841 » close(fd); |
| 1842 » fprintf(stderr, "mmap failure for file %s\n", filename); |
| 1843 » progresult = XMLLINT_ERR_RDFILE; |
1834 return; | 1844 return; |
| 1845 } |
1835 | 1846 |
1836 reader = xmlReaderForMemory(base, info.st_size, filename, | 1847 reader = xmlReaderForMemory(base, info.st_size, filename, |
1837 NULL, options); | 1848 NULL, options); |
1838 } else | 1849 } else |
1839 #endif | 1850 #endif |
1840 reader = xmlReaderForFile(filename, NULL, options); | 1851 reader = xmlReaderForFile(filename, NULL, options); |
1841 #ifdef LIBXML_PATTERN_ENABLED | 1852 #ifdef LIBXML_PATTERN_ENABLED |
1842 if (pattern != NULL) { | 1853 if (pattern != NULL) { |
1843 patternc = xmlPatterncompile((const xmlChar *) pattern, NULL, 0, NULL); | 1854 patternc = xmlPatterncompile((const xmlChar *) pattern, NULL, 0, NULL); |
1844 if (patternc == NULL) { | 1855 if (patternc == NULL) { |
(...skipping 16 matching lines...) Expand all Loading... |
1861 } | 1872 } |
1862 #endif | 1873 #endif |
1863 | 1874 |
1864 | 1875 |
1865 if (reader != NULL) { | 1876 if (reader != NULL) { |
1866 #ifdef LIBXML_VALID_ENABLED | 1877 #ifdef LIBXML_VALID_ENABLED |
1867 if (valid) | 1878 if (valid) |
1868 xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1); | 1879 xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1); |
1869 else | 1880 else |
1870 #endif /* LIBXML_VALID_ENABLED */ | 1881 #endif /* LIBXML_VALID_ENABLED */ |
1871 » xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1); | 1882 » if (loaddtd) |
| 1883 » » xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1); |
1872 #ifdef LIBXML_SCHEMAS_ENABLED | 1884 #ifdef LIBXML_SCHEMAS_ENABLED |
1873 if (relaxng != NULL) { | 1885 if (relaxng != NULL) { |
1874 if ((timing) && (!repeat)) { | 1886 if ((timing) && (!repeat)) { |
1875 startTimer(); | 1887 startTimer(); |
1876 } | 1888 } |
1877 ret = xmlTextReaderRelaxNGValidate(reader, relaxng); | 1889 ret = xmlTextReaderRelaxNGValidate(reader, relaxng); |
1878 if (ret < 0) { | 1890 if (ret < 0) { |
1879 xmlGenericError(xmlGenericErrorContext, | 1891 xmlGenericError(xmlGenericErrorContext, |
1880 "Relax-NG schema %s failed to compile\n", relaxng); | 1892 "Relax-NG schema %s failed to compile\n", relaxng); |
1881 progresult = XMLLINT_ERR_SCHEMACOMP; | 1893 progresult = XMLLINT_ERR_SCHEMACOMP; |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1962 } else { | 1974 } else { |
1963 fprintf(stderr, "Unable to open %s\n", filename); | 1975 fprintf(stderr, "Unable to open %s\n", filename); |
1964 progresult = XMLLINT_ERR_UNCLASS; | 1976 progresult = XMLLINT_ERR_UNCLASS; |
1965 } | 1977 } |
1966 #ifdef LIBXML_PATTERN_ENABLED | 1978 #ifdef LIBXML_PATTERN_ENABLED |
1967 if (patstream != NULL) { | 1979 if (patstream != NULL) { |
1968 xmlFreeStreamCtxt(patstream); | 1980 xmlFreeStreamCtxt(patstream); |
1969 patstream = NULL; | 1981 patstream = NULL; |
1970 } | 1982 } |
1971 #endif | 1983 #endif |
1972 #ifdef HAVE_SYS_MMAN_H | 1984 #ifdef HAVE_MMAP |
1973 if (memory) { | 1985 if (memory) { |
1974 xmlFreeParserInputBuffer(input); | 1986 xmlFreeParserInputBuffer(input); |
1975 munmap((char *) base, info.st_size); | 1987 munmap((char *) base, info.st_size); |
1976 close(fd); | 1988 close(fd); |
1977 } | 1989 } |
1978 #endif | 1990 #endif |
1979 } | 1991 } |
1980 | 1992 |
1981 static void walkDoc(xmlDocPtr doc) { | 1993 static void walkDoc(xmlDocPtr doc) { |
1982 xmlTextReaderPtr reader; | 1994 xmlTextReaderPtr reader; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2062 ************************************************************************/ | 2074 ************************************************************************/ |
2063 | 2075 |
2064 static void doXPathDump(xmlXPathObjectPtr cur) { | 2076 static void doXPathDump(xmlXPathObjectPtr cur) { |
2065 switch(cur->type) { | 2077 switch(cur->type) { |
2066 case XPATH_NODESET: { | 2078 case XPATH_NODESET: { |
2067 int i; | 2079 int i; |
2068 xmlNodePtr node; | 2080 xmlNodePtr node; |
2069 #ifdef LIBXML_OUTPUT_ENABLED | 2081 #ifdef LIBXML_OUTPUT_ENABLED |
2070 xmlSaveCtxtPtr ctxt; | 2082 xmlSaveCtxtPtr ctxt; |
2071 | 2083 |
2072 if (cur->nodesetval->nodeNr <= 0) { | 2084 if ((cur->nodesetval == NULL) || (cur->nodesetval->nodeNr <= 0)) { |
2073 fprintf(stderr, "XPath set is empty\n"); | 2085 fprintf(stderr, "XPath set is empty\n"); |
2074 progresult = XMLLINT_ERR_XPATH; | 2086 progresult = XMLLINT_ERR_XPATH; |
2075 break; | 2087 break; |
2076 } | 2088 } |
2077 ctxt = xmlSaveToFd(1, NULL, 0); | 2089 ctxt = xmlSaveToFd(1, NULL, 0); |
2078 if (ctxt == NULL) { | 2090 if (ctxt == NULL) { |
2079 fprintf(stderr, "Out of memory for XPath\n"); | 2091 fprintf(stderr, "Out of memory for XPath\n"); |
2080 progresult = XMLLINT_ERR_MEM; | 2092 progresult = XMLLINT_ERR_MEM; |
2081 return; | 2093 return; |
2082 } | 2094 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2127 static void doXPathQuery(xmlDocPtr doc, const char *query) { | 2139 static void doXPathQuery(xmlDocPtr doc, const char *query) { |
2128 xmlXPathContextPtr ctxt; | 2140 xmlXPathContextPtr ctxt; |
2129 xmlXPathObjectPtr res; | 2141 xmlXPathObjectPtr res; |
2130 | 2142 |
2131 ctxt = xmlXPathNewContext(doc); | 2143 ctxt = xmlXPathNewContext(doc); |
2132 if (ctxt == NULL) { | 2144 if (ctxt == NULL) { |
2133 fprintf(stderr, "Out of memory for XPath\n"); | 2145 fprintf(stderr, "Out of memory for XPath\n"); |
2134 progresult = XMLLINT_ERR_MEM; | 2146 progresult = XMLLINT_ERR_MEM; |
2135 return; | 2147 return; |
2136 } | 2148 } |
2137 ctxt->node = xmlDocGetRootElement(doc); | 2149 ctxt->node = (xmlNodePtr) doc; |
2138 res = xmlXPathEval(BAD_CAST query, ctxt); | 2150 res = xmlXPathEval(BAD_CAST query, ctxt); |
2139 xmlXPathFreeContext(ctxt); | 2151 xmlXPathFreeContext(ctxt); |
2140 | 2152 |
2141 if (res == NULL) { | 2153 if (res == NULL) { |
2142 fprintf(stderr, "XPath evaluation failure\n"); | 2154 fprintf(stderr, "XPath evaluation failure\n"); |
2143 progresult = XMLLINT_ERR_XPATH; | 2155 progresult = XMLLINT_ERR_XPATH; |
2144 return; | 2156 return; |
2145 } | 2157 } |
2146 doXPathDump(res); | 2158 doXPathDump(res); |
2147 xmlXPathFreeObject(res); | 2159 xmlXPathFreeObject(res); |
(...skipping 27 matching lines...) Expand all Loading... |
2175 } | 2187 } |
2176 } | 2188 } |
2177 #endif /* LIBXML_TREE_ENABLED */ | 2189 #endif /* LIBXML_TREE_ENABLED */ |
2178 #ifdef LIBXML_HTML_ENABLED | 2190 #ifdef LIBXML_HTML_ENABLED |
2179 #ifdef LIBXML_PUSH_ENABLED | 2191 #ifdef LIBXML_PUSH_ENABLED |
2180 else if ((html) && (push)) { | 2192 else if ((html) && (push)) { |
2181 FILE *f; | 2193 FILE *f; |
2182 | 2194 |
2183 #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) | 2195 #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) |
2184 f = fopen(filename, "rb"); | 2196 f = fopen(filename, "rb"); |
| 2197 #elif defined(__OS400__) |
| 2198 f = fopen(filename, "rb"); |
2185 #else | 2199 #else |
2186 f = fopen(filename, "r"); | 2200 f = fopen(filename, "r"); |
2187 #endif | 2201 #endif |
2188 if (f != NULL) { | 2202 if (f != NULL) { |
2189 int res, size = 3; | 2203 int res; |
2190 char chars[4096]; | 2204 char chars[4096]; |
2191 htmlParserCtxtPtr ctxt; | 2205 htmlParserCtxtPtr ctxt; |
2192 | 2206 |
2193 /* if (repeat) */ | |
2194 size = 4096; | |
2195 res = fread(chars, 1, 4, f); | 2207 res = fread(chars, 1, 4, f); |
2196 if (res > 0) { | 2208 if (res > 0) { |
2197 ctxt = htmlCreatePushParserCtxt(NULL, NULL, | 2209 ctxt = htmlCreatePushParserCtxt(NULL, NULL, |
2198 chars, res, filename, XML_CHAR_ENCODING_NONE); | 2210 chars, res, filename, XML_CHAR_ENCODING_NONE); |
2199 while ((res = fread(chars, 1, size, f)) > 0) { | 2211 xmlCtxtUseOptions(ctxt, options); |
| 2212 while ((res = fread(chars, 1, pushsize, f)) > 0) { |
2200 htmlParseChunk(ctxt, chars, res, 0); | 2213 htmlParseChunk(ctxt, chars, res, 0); |
2201 } | 2214 } |
2202 htmlParseChunk(ctxt, chars, 0, 1); | 2215 htmlParseChunk(ctxt, chars, 0, 1); |
2203 doc = ctxt->myDoc; | 2216 doc = ctxt->myDoc; |
2204 htmlFreeParserCtxt(ctxt); | 2217 htmlFreeParserCtxt(ctxt); |
2205 } | 2218 } |
2206 fclose(f); | 2219 fclose(f); |
2207 } | 2220 } |
2208 } | 2221 } |
2209 #endif /* LIBXML_PUSH_ENABLED */ | 2222 #endif /* LIBXML_PUSH_ENABLED */ |
2210 #ifdef HAVE_SYS_MMAN_H | 2223 #ifdef HAVE_MMAP |
2211 else if ((html) && (memory)) { | 2224 else if ((html) && (memory)) { |
2212 int fd; | 2225 int fd; |
2213 struct stat info; | 2226 struct stat info; |
2214 const char *base; | 2227 const char *base; |
2215 if (stat(filename, &info) < 0) | 2228 if (stat(filename, &info) < 0) |
2216 return; | 2229 return; |
2217 if ((fd = open(filename, O_RDONLY)) < 0) | 2230 if ((fd = open(filename, O_RDONLY)) < 0) |
2218 return; | 2231 return; |
2219 base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; | 2232 base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; |
2220 » if (base == (void *) MAP_FAILED) | 2233 » if (base == (void *) MAP_FAILED) { |
| 2234 » close(fd); |
| 2235 » fprintf(stderr, "mmap failure for file %s\n", filename); |
| 2236 » progresult = XMLLINT_ERR_RDFILE; |
2221 return; | 2237 return; |
| 2238 } |
2222 | 2239 |
2223 doc = htmlReadMemory((char *) base, info.st_size, filename, | 2240 doc = htmlReadMemory((char *) base, info.st_size, filename, |
2224 NULL, options); | 2241 NULL, options); |
2225 | 2242 |
2226 munmap((char *) base, info.st_size); | 2243 munmap((char *) base, info.st_size); |
2227 close(fd); | 2244 close(fd); |
2228 } | 2245 } |
2229 #endif | 2246 #endif |
2230 else if (html) { | 2247 else if (html) { |
2231 doc = htmlReadFile(filename, NULL, options); | 2248 doc = htmlReadFile(filename, NULL, options); |
2232 } | 2249 } |
2233 #endif /* LIBXML_HTML_ENABLED */ | 2250 #endif /* LIBXML_HTML_ENABLED */ |
2234 else { | 2251 else { |
2235 #ifdef LIBXML_PUSH_ENABLED | 2252 #ifdef LIBXML_PUSH_ENABLED |
2236 /* | 2253 /* |
2237 * build an XML tree from a string; | 2254 * build an XML tree from a string; |
2238 */ | 2255 */ |
2239 if (push) { | 2256 if (push) { |
2240 FILE *f; | 2257 FILE *f; |
2241 | 2258 |
2242 /* '-' Usually means stdin -<sven@zen.org> */ | 2259 /* '-' Usually means stdin -<sven@zen.org> */ |
2243 if ((filename[0] == '-') && (filename[1] == 0)) { | 2260 if ((filename[0] == '-') && (filename[1] == 0)) { |
2244 f = stdin; | 2261 f = stdin; |
2245 } else { | 2262 } else { |
2246 #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) | 2263 #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) |
2247 f = fopen(filename, "rb"); | 2264 f = fopen(filename, "rb"); |
| 2265 #elif defined(__OS400__) |
| 2266 f = fopen(filename, "rb"); |
2248 #else | 2267 #else |
2249 f = fopen(filename, "r"); | 2268 f = fopen(filename, "r"); |
2250 #endif | 2269 #endif |
2251 } | 2270 } |
2252 if (f != NULL) { | 2271 if (f != NULL) { |
2253 int ret; | 2272 int ret; |
2254 int res, size = 1024; | 2273 int res, size = 1024; |
2255 char chars[1024]; | 2274 char chars[1024]; |
2256 xmlParserCtxtPtr ctxt; | 2275 xmlParserCtxtPtr ctxt; |
2257 | 2276 |
(...skipping 21 matching lines...) Expand all Loading... |
2279 } else | 2298 } else |
2280 #endif /* LIBXML_PUSH_ENABLED */ | 2299 #endif /* LIBXML_PUSH_ENABLED */ |
2281 if (testIO) { | 2300 if (testIO) { |
2282 if ((filename[0] == '-') && (filename[1] == 0)) { | 2301 if ((filename[0] == '-') && (filename[1] == 0)) { |
2283 doc = xmlReadFd(0, NULL, NULL, options); | 2302 doc = xmlReadFd(0, NULL, NULL, options); |
2284 } else { | 2303 } else { |
2285 FILE *f; | 2304 FILE *f; |
2286 | 2305 |
2287 #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) | 2306 #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) |
2288 f = fopen(filename, "rb"); | 2307 f = fopen(filename, "rb"); |
| 2308 #elif defined(__OS400__) |
| 2309 f = fopen(filename, "rb"); |
2289 #else | 2310 #else |
2290 f = fopen(filename, "r"); | 2311 f = fopen(filename, "r"); |
2291 #endif | 2312 #endif |
2292 if (f != NULL) { | 2313 if (f != NULL) { |
2293 if (rectxt == NULL) | 2314 if (rectxt == NULL) |
2294 doc = xmlReadIO((xmlInputReadCallback) myRead, | 2315 doc = xmlReadIO((xmlInputReadCallback) myRead, |
2295 (xmlInputCloseCallback) myClose, f, | 2316 (xmlInputCloseCallback) myClose, f, |
2296 filename, NULL, options); | 2317 filename, NULL, options); |
2297 else | 2318 else |
2298 doc = xmlCtxtReadIO(rectxt, | 2319 doc = xmlCtxtReadIO(rectxt, |
(...skipping 16 matching lines...) Expand all Loading... |
2315 ctxt->sax->error = xmlHTMLError; | 2336 ctxt->sax->error = xmlHTMLError; |
2316 ctxt->sax->warning = xmlHTMLWarning; | 2337 ctxt->sax->warning = xmlHTMLWarning; |
2317 ctxt->vctxt.error = xmlHTMLValidityError; | 2338 ctxt->vctxt.error = xmlHTMLValidityError; |
2318 ctxt->vctxt.warning = xmlHTMLValidityWarning; | 2339 ctxt->vctxt.warning = xmlHTMLValidityWarning; |
2319 | 2340 |
2320 doc = xmlCtxtReadFile(ctxt, filename, NULL, options); | 2341 doc = xmlCtxtReadFile(ctxt, filename, NULL, options); |
2321 | 2342 |
2322 if (rectxt == NULL) | 2343 if (rectxt == NULL) |
2323 xmlFreeParserCtxt(ctxt); | 2344 xmlFreeParserCtxt(ctxt); |
2324 } | 2345 } |
2325 #ifdef HAVE_SYS_MMAN_H | 2346 #ifdef HAVE_MMAP |
2326 } else if (memory) { | 2347 } else if (memory) { |
2327 int fd; | 2348 int fd; |
2328 struct stat info; | 2349 struct stat info; |
2329 const char *base; | 2350 const char *base; |
2330 if (stat(filename, &info) < 0) | 2351 if (stat(filename, &info) < 0) |
2331 return; | 2352 return; |
2332 if ((fd = open(filename, O_RDONLY)) < 0) | 2353 if ((fd = open(filename, O_RDONLY)) < 0) |
2333 return; | 2354 return; |
2334 base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; | 2355 base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; |
2335 » if (base == (void *) MAP_FAILED) | 2356 » if (base == (void *) MAP_FAILED) { |
| 2357 » close(fd); |
| 2358 » fprintf(stderr, "mmap failure for file %s\n", filename); |
| 2359 » » progresult = XMLLINT_ERR_RDFILE; |
2336 return; | 2360 return; |
| 2361 } |
2337 | 2362 |
2338 if (rectxt == NULL) | 2363 if (rectxt == NULL) |
2339 doc = xmlReadMemory((char *) base, info.st_size, | 2364 doc = xmlReadMemory((char *) base, info.st_size, |
2340 filename, NULL, options); | 2365 filename, NULL, options); |
2341 else | 2366 else |
2342 doc = xmlCtxtReadMemory(rectxt, (char *) base, info.st_size, | 2367 doc = xmlCtxtReadMemory(rectxt, (char *) base, info.st_size, |
2343 filename, NULL, options); | 2368 filename, NULL, options); |
2344 | 2369 |
2345 munmap((char *) base, info.st_size); | 2370 munmap((char *) base, info.st_size); |
2346 close(fd); | 2371 close(fd); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2500 #endif | 2525 #endif |
2501 if ((timing) && (!repeat)) { | 2526 if ((timing) && (!repeat)) { |
2502 startTimer(); | 2527 startTimer(); |
2503 } | 2528 } |
2504 #ifdef LIBXML_HTML_ENABLED | 2529 #ifdef LIBXML_HTML_ENABLED |
2505 if ((html) && (!xmlout)) { | 2530 if ((html) && (!xmlout)) { |
2506 if (compress) { | 2531 if (compress) { |
2507 htmlSaveFile(output ? output : "-", doc); | 2532 htmlSaveFile(output ? output : "-", doc); |
2508 } | 2533 } |
2509 else if (encoding != NULL) { | 2534 else if (encoding != NULL) { |
2510 » » if ( format ) { | 2535 » » if (format == 1) { |
2511 htmlSaveFileFormat(output ? output : "-", doc, encoding,
1); | 2536 htmlSaveFileFormat(output ? output : "-", doc, encoding,
1); |
2512 } | 2537 } |
2513 else { | 2538 else { |
2514 htmlSaveFileFormat(output ? output : "-", doc, encoding,
0); | 2539 htmlSaveFileFormat(output ? output : "-", doc, encoding,
0); |
2515 } | 2540 } |
2516 } | 2541 } |
2517 » » else if (format) { | 2542 » » else if (format == 1) { |
2518 htmlSaveFileFormat(output ? output : "-", doc, NULL, 1); | 2543 htmlSaveFileFormat(output ? output : "-", doc, NULL, 1); |
2519 } | 2544 } |
2520 else { | 2545 else { |
2521 FILE *out; | 2546 FILE *out; |
2522 if (output == NULL) | 2547 if (output == NULL) |
2523 out = stdout; | 2548 out = stdout; |
2524 else { | 2549 else { |
2525 out = fopen(output,"wb"); | 2550 out = fopen(output,"wb"); |
2526 } | 2551 } |
2527 if (out != NULL) { | 2552 if (out != NULL) { |
(...skipping 12 matching lines...) Expand all Loading... |
2540 } | 2565 } |
2541 } else | 2566 } else |
2542 #endif | 2567 #endif |
2543 #ifdef LIBXML_C14N_ENABLED | 2568 #ifdef LIBXML_C14N_ENABLED |
2544 if (canonical) { | 2569 if (canonical) { |
2545 xmlChar *result = NULL; | 2570 xmlChar *result = NULL; |
2546 int size; | 2571 int size; |
2547 | 2572 |
2548 size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_0, NULL, 1, &r
esult); | 2573 size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_0, NULL, 1, &r
esult); |
2549 if (size >= 0) { | 2574 if (size >= 0) { |
2550 » » write(1, result, size); | 2575 » » if (write(1, result, size) == -1) { |
| 2576 » » fprintf(stderr, "Can't write data\n"); |
| 2577 » » } |
2551 xmlFree(result); | 2578 xmlFree(result); |
2552 } else { | 2579 } else { |
2553 fprintf(stderr, "Failed to canonicalize\n"); | 2580 fprintf(stderr, "Failed to canonicalize\n"); |
2554 progresult = XMLLINT_ERR_OUT; | 2581 progresult = XMLLINT_ERR_OUT; |
2555 } | 2582 } |
2556 » } else if (canonical) { | 2583 » } else if (canonical_11) { |
2557 xmlChar *result = NULL; | 2584 xmlChar *result = NULL; |
2558 int size; | 2585 int size; |
2559 | 2586 |
2560 size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_1, NULL, 1, &r
esult); | 2587 size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_1, NULL, 1, &r
esult); |
2561 if (size >= 0) { | 2588 if (size >= 0) { |
2562 » » write(1, result, size); | 2589 » » if (write(1, result, size) == -1) { |
| 2590 » » fprintf(stderr, "Can't write data\n"); |
| 2591 » » } |
2563 xmlFree(result); | 2592 xmlFree(result); |
2564 } else { | 2593 } else { |
2565 fprintf(stderr, "Failed to canonicalize\n"); | 2594 fprintf(stderr, "Failed to canonicalize\n"); |
2566 progresult = XMLLINT_ERR_OUT; | 2595 progresult = XMLLINT_ERR_OUT; |
2567 } | 2596 } |
2568 } else | 2597 } else |
2569 if (exc_canonical) { | 2598 if (exc_canonical) { |
2570 xmlChar *result = NULL; | 2599 xmlChar *result = NULL; |
2571 int size; | 2600 int size; |
2572 | 2601 |
2573 size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_EXCLUSIVE_1_0, N
ULL, 1, &result); | 2602 size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_EXCLUSIVE_1_0, N
ULL, 1, &result); |
2574 if (size >= 0) { | 2603 if (size >= 0) { |
2575 » » write(1, result, size); | 2604 » » if (write(1, result, size) == -1) { |
| 2605 » » fprintf(stderr, "Can't write data\n"); |
| 2606 » » } |
2576 xmlFree(result); | 2607 xmlFree(result); |
2577 } else { | 2608 } else { |
2578 fprintf(stderr, "Failed to canonicalize\n"); | 2609 fprintf(stderr, "Failed to canonicalize\n"); |
2579 progresult = XMLLINT_ERR_OUT; | 2610 progresult = XMLLINT_ERR_OUT; |
2580 } | 2611 } |
2581 } else | 2612 } else |
2582 #endif | 2613 #endif |
2583 #ifdef HAVE_SYS_MMAN_H | 2614 #ifdef HAVE_MMAP |
2584 if (memory) { | 2615 if (memory) { |
2585 xmlChar *result; | 2616 xmlChar *result; |
2586 int len; | 2617 int len; |
2587 | 2618 |
2588 if (encoding != NULL) { | 2619 if (encoding != NULL) { |
2589 » » if ( format ) { | 2620 » » if (format == 1) { |
2590 xmlDocDumpFormatMemoryEnc(doc, &result, &len, encoding,
1); | 2621 xmlDocDumpFormatMemoryEnc(doc, &result, &len, encoding,
1); |
2591 } else { | 2622 } else { |
2592 xmlDocDumpMemoryEnc(doc, &result, &len, encoding); | 2623 xmlDocDumpMemoryEnc(doc, &result, &len, encoding); |
2593 } | 2624 } |
2594 } else { | 2625 } else { |
2595 » » if (format) | 2626 » » if (format == 1) |
2596 xmlDocDumpFormatMemory(doc, &result, &len, 1); | 2627 xmlDocDumpFormatMemory(doc, &result, &len, 1); |
2597 else | 2628 else |
2598 xmlDocDumpMemory(doc, &result, &len); | 2629 xmlDocDumpMemory(doc, &result, &len); |
2599 } | 2630 } |
2600 if (result == NULL) { | 2631 if (result == NULL) { |
2601 fprintf(stderr, "Failed to save\n"); | 2632 fprintf(stderr, "Failed to save\n"); |
2602 progresult = XMLLINT_ERR_OUT; | 2633 progresult = XMLLINT_ERR_OUT; |
2603 } else { | 2634 } else { |
2604 » » write(1, result, len); | 2635 » » if (write(1, result, len) == -1) { |
| 2636 » » fprintf(stderr, "Can't write data\n"); |
| 2637 » » } |
2605 xmlFree(result); | 2638 xmlFree(result); |
2606 } | 2639 } |
2607 | 2640 |
2608 } else | 2641 } else |
2609 #endif /* HAVE_SYS_MMAN_H */ | 2642 #endif /* HAVE_MMAP */ |
2610 if (compress) { | 2643 if (compress) { |
2611 xmlSaveFile(output ? output : "-", doc); | 2644 xmlSaveFile(output ? output : "-", doc); |
2612 } else if (oldout) { | 2645 } else if (oldout) { |
2613 if (encoding != NULL) { | 2646 if (encoding != NULL) { |
2614 » » if ( format ) { | 2647 » » if (format == 1) { |
2615 ret = xmlSaveFormatFileEnc(output ? output : "-", doc, | 2648 ret = xmlSaveFormatFileEnc(output ? output : "-", doc, |
2616 encoding, 1); | 2649 encoding, 1); |
2617 } | 2650 } |
2618 else { | 2651 else { |
2619 ret = xmlSaveFileEnc(output ? output : "-", doc, | 2652 ret = xmlSaveFileEnc(output ? output : "-", doc, |
2620 encoding); | 2653 encoding); |
2621 } | 2654 } |
2622 if (ret < 0) { | 2655 if (ret < 0) { |
2623 fprintf(stderr, "failed save to %s\n", | 2656 fprintf(stderr, "failed save to %s\n", |
2624 output ? output : "-"); | 2657 output ? output : "-"); |
2625 progresult = XMLLINT_ERR_OUT; | 2658 progresult = XMLLINT_ERR_OUT; |
2626 } | 2659 } |
2627 » » } else if (format) { | 2660 » » } else if (format == 1) { |
2628 ret = xmlSaveFormatFile(output ? output : "-", doc, 1); | 2661 ret = xmlSaveFormatFile(output ? output : "-", doc, 1); |
2629 if (ret < 0) { | 2662 if (ret < 0) { |
2630 fprintf(stderr, "failed save to %s\n", | 2663 fprintf(stderr, "failed save to %s\n", |
2631 output ? output : "-"); | 2664 output ? output : "-"); |
2632 progresult = XMLLINT_ERR_OUT; | 2665 progresult = XMLLINT_ERR_OUT; |
2633 } | 2666 } |
2634 } else { | 2667 } else { |
2635 FILE *out; | 2668 FILE *out; |
2636 if (output == NULL) | 2669 if (output == NULL) |
2637 out = stdout; | 2670 out = stdout; |
2638 else { | 2671 else { |
2639 out = fopen(output,"wb"); | 2672 out = fopen(output,"wb"); |
2640 } | 2673 } |
2641 if (out != NULL) { | 2674 if (out != NULL) { |
2642 if (xmlDocDump(out, doc) < 0) | 2675 if (xmlDocDump(out, doc) < 0) |
2643 progresult = XMLLINT_ERR_OUT; | 2676 progresult = XMLLINT_ERR_OUT; |
2644 | 2677 |
2645 if (output != NULL) | 2678 if (output != NULL) |
2646 fclose(out); | 2679 fclose(out); |
2647 } else { | 2680 } else { |
2648 fprintf(stderr, "failed to open %s\n", output); | 2681 fprintf(stderr, "failed to open %s\n", output); |
2649 progresult = XMLLINT_ERR_OUT; | 2682 progresult = XMLLINT_ERR_OUT; |
2650 } | 2683 } |
2651 } | 2684 } |
2652 } else { | 2685 } else { |
2653 xmlSaveCtxtPtr ctxt; | 2686 xmlSaveCtxtPtr ctxt; |
2654 int saveOpts = 0; | 2687 int saveOpts = 0; |
2655 | 2688 |
2656 if (format) | 2689 if (format == 1) |
2657 saveOpts |= XML_SAVE_FORMAT; | 2690 saveOpts |= XML_SAVE_FORMAT; |
| 2691 else if (format == 2) |
| 2692 saveOpts |= XML_SAVE_WSNONSIG; |
2658 | 2693 |
2659 #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) | 2694 #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) |
2660 if (xmlout) | 2695 if (xmlout) |
2661 saveOpts |= XML_SAVE_AS_XML; | 2696 saveOpts |= XML_SAVE_AS_XML; |
2662 #endif | 2697 #endif |
2663 | 2698 |
2664 if (output == NULL) | 2699 if (output == NULL) |
2665 ctxt = xmlSaveToFd(1, encoding, saveOpts); | 2700 ctxt = xmlSaveToFd(1, encoding, saveOpts); |
2666 else | 2701 else |
2667 ctxt = xmlSaveToFilename(output, encoding, saveOpts); | 2702 ctxt = xmlSaveToFilename(output, encoding, saveOpts); |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2937 if (xmlHasFeature(XML_WITH_REGEXP)) fprintf(stderr, "Regexps "); | 2972 if (xmlHasFeature(XML_WITH_REGEXP)) fprintf(stderr, "Regexps "); |
2938 if (xmlHasFeature(XML_WITH_AUTOMATA)) fprintf(stderr, "Automata "); | 2973 if (xmlHasFeature(XML_WITH_AUTOMATA)) fprintf(stderr, "Automata "); |
2939 if (xmlHasFeature(XML_WITH_EXPR)) fprintf(stderr, "Expr "); | 2974 if (xmlHasFeature(XML_WITH_EXPR)) fprintf(stderr, "Expr "); |
2940 if (xmlHasFeature(XML_WITH_SCHEMAS)) fprintf(stderr, "Schemas "); | 2975 if (xmlHasFeature(XML_WITH_SCHEMAS)) fprintf(stderr, "Schemas "); |
2941 if (xmlHasFeature(XML_WITH_SCHEMATRON)) fprintf(stderr, "Schematron "); | 2976 if (xmlHasFeature(XML_WITH_SCHEMATRON)) fprintf(stderr, "Schematron "); |
2942 if (xmlHasFeature(XML_WITH_MODULES)) fprintf(stderr, "Modules "); | 2977 if (xmlHasFeature(XML_WITH_MODULES)) fprintf(stderr, "Modules "); |
2943 if (xmlHasFeature(XML_WITH_DEBUG)) fprintf(stderr, "Debug "); | 2978 if (xmlHasFeature(XML_WITH_DEBUG)) fprintf(stderr, "Debug "); |
2944 if (xmlHasFeature(XML_WITH_DEBUG_MEM)) fprintf(stderr, "MemDebug "); | 2979 if (xmlHasFeature(XML_WITH_DEBUG_MEM)) fprintf(stderr, "MemDebug "); |
2945 if (xmlHasFeature(XML_WITH_DEBUG_RUN)) fprintf(stderr, "RunDebug "); | 2980 if (xmlHasFeature(XML_WITH_DEBUG_RUN)) fprintf(stderr, "RunDebug "); |
2946 if (xmlHasFeature(XML_WITH_ZLIB)) fprintf(stderr, "Zlib "); | 2981 if (xmlHasFeature(XML_WITH_ZLIB)) fprintf(stderr, "Zlib "); |
| 2982 if (xmlHasFeature(XML_WITH_LZMA)) fprintf(stderr, "Lzma "); |
2947 fprintf(stderr, "\n"); | 2983 fprintf(stderr, "\n"); |
2948 } | 2984 } |
2949 | 2985 |
2950 static void usage(const char *name) { | 2986 static void usage(const char *name) { |
2951 printf("Usage : %s [options] XMLfiles ...\n", name); | 2987 printf("Usage : %s [options] XMLfiles ...\n", name); |
2952 #ifdef LIBXML_OUTPUT_ENABLED | 2988 #ifdef LIBXML_OUTPUT_ENABLED |
2953 printf("\tParse the XML files and output the result of the parsing\n"); | 2989 printf("\tParse the XML files and output the result of the parsing\n"); |
2954 #else | 2990 #else |
2955 printf("\tParse the XML files\n"); | 2991 printf("\tParse the XML files\n"); |
2956 #endif /* LIBXML_OUTPUT_ENABLED */ | 2992 #endif /* LIBXML_OUTPUT_ENABLED */ |
2957 printf("\t--version : display the version of the XML library used\n"); | 2993 printf("\t--version : display the version of the XML library used\n"); |
2958 #ifdef LIBXML_DEBUG_ENABLED | 2994 #ifdef LIBXML_DEBUG_ENABLED |
2959 printf("\t--debug : dump a debug tree of the in-memory document\n"); | 2995 printf("\t--debug : dump a debug tree of the in-memory document\n"); |
2960 printf("\t--shell : run a navigating shell\n"); | 2996 printf("\t--shell : run a navigating shell\n"); |
2961 printf("\t--debugent : debug the entities defined in the document\n"); | 2997 printf("\t--debugent : debug the entities defined in the document\n"); |
2962 #else | 2998 #else |
2963 #ifdef LIBXML_READER_ENABLED | 2999 #ifdef LIBXML_READER_ENABLED |
2964 printf("\t--debug : dump the nodes content when using --stream\n"); | 3000 printf("\t--debug : dump the nodes content when using --stream\n"); |
2965 #endif /* LIBXML_READER_ENABLED */ | 3001 #endif /* LIBXML_READER_ENABLED */ |
2966 #endif | 3002 #endif |
2967 #ifdef LIBXML_TREE_ENABLED | 3003 #ifdef LIBXML_TREE_ENABLED |
2968 printf("\t--copy : used to test the internal copy implementation\n"); | 3004 printf("\t--copy : used to test the internal copy implementation\n"); |
2969 #endif /* LIBXML_TREE_ENABLED */ | 3005 #endif /* LIBXML_TREE_ENABLED */ |
2970 printf("\t--recover : output what was parsable on broken XML documents\n"); | 3006 printf("\t--recover : output what was parsable on broken XML documents\n"); |
2971 printf("\t--huge : remove any internal arbitrary parser limits\n"); | 3007 printf("\t--huge : remove any internal arbitrary parser limits\n"); |
2972 printf("\t--noent : substitute entity references by their value\n"); | 3008 printf("\t--noent : substitute entity references by their value\n"); |
| 3009 printf("\t--noenc : ignore any encoding specified inside the document\n"); |
2973 printf("\t--noout : don't output the result tree\n"); | 3010 printf("\t--noout : don't output the result tree\n"); |
2974 printf("\t--path 'paths': provide a set of paths for resources\n"); | 3011 printf("\t--path 'paths': provide a set of paths for resources\n"); |
2975 printf("\t--load-trace : print trace of all external entites loaded\n"); | 3012 printf("\t--load-trace : print trace of all external entities loaded\n"); |
2976 printf("\t--nonet : refuse to fetch DTDs or entities over network\n"); | 3013 printf("\t--nonet : refuse to fetch DTDs or entities over network\n"); |
2977 printf("\t--nocompact : do not generate compact text nodes\n"); | 3014 printf("\t--nocompact : do not generate compact text nodes\n"); |
2978 printf("\t--htmlout : output results as HTML\n"); | 3015 printf("\t--htmlout : output results as HTML\n"); |
2979 printf("\t--nowrap : do not put HTML doc wrapper\n"); | 3016 printf("\t--nowrap : do not put HTML doc wrapper\n"); |
2980 #ifdef LIBXML_VALID_ENABLED | 3017 #ifdef LIBXML_VALID_ENABLED |
2981 printf("\t--valid : validate the document in addition to std well-formed che
ck\n"); | 3018 printf("\t--valid : validate the document in addition to std well-formed che
ck\n"); |
2982 printf("\t--postvalid : do a posteriori validation, i.e after parsing\n"); | 3019 printf("\t--postvalid : do a posteriori validation, i.e after parsing\n"); |
2983 printf("\t--dtdvalid URL : do a posteriori validation against a given DTD\n"
); | 3020 printf("\t--dtdvalid URL : do a posteriori validation against a given DTD\n"
); |
2984 printf("\t--dtdvalidfpi FPI : same but name the DTD with a Public Identifier
\n"); | 3021 printf("\t--dtdvalidfpi FPI : same but name the DTD with a Public Identifier
\n"); |
2985 #endif /* LIBXML_VALID_ENABLED */ | 3022 #endif /* LIBXML_VALID_ENABLED */ |
2986 printf("\t--timing : print some timings\n"); | 3023 printf("\t--timing : print some timings\n"); |
2987 printf("\t--output file or -o file: save to a given file\n"); | 3024 printf("\t--output file or -o file: save to a given file\n"); |
2988 printf("\t--repeat : repeat 100 times, for timing or profiling\n"); | 3025 printf("\t--repeat : repeat 100 times, for timing or profiling\n"); |
2989 printf("\t--insert : ad-hoc test for valid insertions\n"); | 3026 printf("\t--insert : ad-hoc test for valid insertions\n"); |
2990 #ifdef LIBXML_OUTPUT_ENABLED | 3027 #ifdef LIBXML_OUTPUT_ENABLED |
2991 #ifdef HAVE_ZLIB_H | 3028 #ifdef HAVE_ZLIB_H |
2992 printf("\t--compress : turn on gzip compression of output\n"); | 3029 printf("\t--compress : turn on gzip compression of output\n"); |
2993 #endif | 3030 #endif |
2994 #endif /* LIBXML_OUTPUT_ENABLED */ | 3031 #endif /* LIBXML_OUTPUT_ENABLED */ |
2995 #ifdef LIBXML_HTML_ENABLED | 3032 #ifdef LIBXML_HTML_ENABLED |
2996 printf("\t--html : use the HTML parser\n"); | 3033 printf("\t--html : use the HTML parser\n"); |
2997 printf("\t--xmlout : force to use the XML serializer when using --html\n"); | 3034 printf("\t--xmlout : force to use the XML serializer when using --html\n"); |
| 3035 printf("\t--nodefdtd : do not default HTML doctype\n"); |
2998 #endif | 3036 #endif |
2999 #ifdef LIBXML_PUSH_ENABLED | 3037 #ifdef LIBXML_PUSH_ENABLED |
3000 printf("\t--push : use the push mode of the parser\n"); | 3038 printf("\t--push : use the push mode of the parser\n"); |
| 3039 printf("\t--pushsmall : use the push mode of the parser using tiny increment
s\n"); |
3001 #endif /* LIBXML_PUSH_ENABLED */ | 3040 #endif /* LIBXML_PUSH_ENABLED */ |
3002 #ifdef HAVE_SYS_MMAN_H | 3041 #ifdef HAVE_MMAP |
3003 printf("\t--memory : parse from memory\n"); | 3042 printf("\t--memory : parse from memory\n"); |
3004 #endif | 3043 #endif |
3005 printf("\t--maxmem nbbytes : limits memory allocation to nbbytes bytes\n"); | 3044 printf("\t--maxmem nbbytes : limits memory allocation to nbbytes bytes\n"); |
3006 printf("\t--nowarning : do not emit warnings from parser/validator\n"); | 3045 printf("\t--nowarning : do not emit warnings from parser/validator\n"); |
3007 printf("\t--noblanks : drop (ignorable?) blanks spaces\n"); | 3046 printf("\t--noblanks : drop (ignorable?) blanks spaces\n"); |
3008 printf("\t--nocdata : replace cdata section with text nodes\n"); | 3047 printf("\t--nocdata : replace cdata section with text nodes\n"); |
3009 #ifdef LIBXML_OUTPUT_ENABLED | 3048 #ifdef LIBXML_OUTPUT_ENABLED |
3010 printf("\t--format : reformat/reindent the input\n"); | 3049 printf("\t--format : reformat/reindent the input\n"); |
3011 printf("\t--encode encoding : output in the given encoding\n"); | 3050 printf("\t--encode encoding : output in the given encoding\n"); |
3012 printf("\t--dropdtd : remove the DOCTYPE of the input docs\n"); | 3051 printf("\t--dropdtd : remove the DOCTYPE of the input docs\n"); |
| 3052 printf("\t--pretty STYLE : pretty-print in a particular style\n"); |
| 3053 printf("\t 0 Do not pretty print\n"); |
| 3054 printf("\t 1 Format the XML content, as --format\n"); |
| 3055 printf("\t 2 Add whitespace inside tags, preserving content\
n"); |
3013 #endif /* LIBXML_OUTPUT_ENABLED */ | 3056 #endif /* LIBXML_OUTPUT_ENABLED */ |
3014 printf("\t--c14n : save in W3C canonical format v1.0 (with comments)\n"); | 3057 printf("\t--c14n : save in W3C canonical format v1.0 (with comments)\n"); |
3015 printf("\t--c14n11 : save in W3C canonical format v1.1 (with comments)\n"); | 3058 printf("\t--c14n11 : save in W3C canonical format v1.1 (with comments)\n"); |
3016 printf("\t--exc-c14n : save in W3C exclusive canonical format (with comments
)\n"); | 3059 printf("\t--exc-c14n : save in W3C exclusive canonical format (with comments
)\n"); |
3017 #ifdef LIBXML_C14N_ENABLED | 3060 #ifdef LIBXML_C14N_ENABLED |
3018 #endif /* LIBXML_C14N_ENABLED */ | 3061 #endif /* LIBXML_C14N_ENABLED */ |
3019 printf("\t--nsclean : remove redundant namespace declarations\n"); | 3062 printf("\t--nsclean : remove redundant namespace declarations\n"); |
3020 printf("\t--testIO : test user I/O support\n"); | 3063 printf("\t--testIO : test user I/O support\n"); |
3021 #ifdef LIBXML_CATALOG_ENABLED | 3064 #ifdef LIBXML_CATALOG_ENABLED |
3022 printf("\t--catalogs : use SGML catalogs from $SGML_CATALOG_FILES\n"); | 3065 printf("\t--catalogs : use SGML catalogs from $SGML_CATALOG_FILES\n"); |
(...skipping 23 matching lines...) Expand all Loading... |
3046 #endif | 3089 #endif |
3047 #ifdef LIBXML_SCHEMATRON_ENABLED | 3090 #ifdef LIBXML_SCHEMATRON_ENABLED |
3048 printf("\t--schematron schema : do validation against a schematron\n"); | 3091 printf("\t--schematron schema : do validation against a schematron\n"); |
3049 #endif | 3092 #endif |
3050 #ifdef LIBXML_SAX1_ENABLED | 3093 #ifdef LIBXML_SAX1_ENABLED |
3051 printf("\t--sax1: use the old SAX1 interfaces for processing\n"); | 3094 printf("\t--sax1: use the old SAX1 interfaces for processing\n"); |
3052 #endif | 3095 #endif |
3053 printf("\t--sax: do not build a tree but work just at the SAX level\n"); | 3096 printf("\t--sax: do not build a tree but work just at the SAX level\n"); |
3054 printf("\t--oldxml10: use XML-1.0 parsing rules before the 5th edition\n"); | 3097 printf("\t--oldxml10: use XML-1.0 parsing rules before the 5th edition\n"); |
3055 #ifdef LIBXML_XPATH_ENABLED | 3098 #ifdef LIBXML_XPATH_ENABLED |
3056 printf("\t--xpath expr: evaluate the XPath expression, inply --noout\n"); | 3099 printf("\t--xpath expr: evaluate the XPath expression, imply --noout\n"); |
3057 #endif | 3100 #endif |
3058 | 3101 |
3059 printf("\nLibxml project home page: http://xmlsoft.org/\n"); | 3102 printf("\nLibxml project home page: http://xmlsoft.org/\n"); |
3060 printf("To report bugs or get some help check: http://xmlsoft.org/bugs.html\
n"); | 3103 printf("To report bugs or get some help check: http://xmlsoft.org/bugs.html\
n"); |
3061 } | 3104 } |
3062 | 3105 |
3063 static void registerNode(xmlNodePtr node) | 3106 static void registerNode(xmlNodePtr node) |
3064 { | 3107 { |
3065 node->_private = malloc(sizeof(long)); | 3108 node->_private = malloc(sizeof(long)); |
| 3109 if (node->_private == NULL) { |
| 3110 fprintf(stderr, "Out of memory in xmllint:registerNode()\n"); |
| 3111 exit(XMLLINT_ERR_MEM); |
| 3112 } |
3066 *(long*)node->_private = (long) 0x81726354; | 3113 *(long*)node->_private = (long) 0x81726354; |
3067 nbregister++; | 3114 nbregister++; |
3068 } | 3115 } |
3069 | 3116 |
3070 static void deregisterNode(xmlNodePtr node) | 3117 static void deregisterNode(xmlNodePtr node) |
3071 { | 3118 { |
3072 assert(node->_private != NULL); | 3119 assert(node->_private != NULL); |
3073 assert(*(long*)node->_private == (long) 0x81726354); | 3120 assert(*(long*)node->_private == (long) 0x81726354); |
3074 free(node->_private); | 3121 free(node->_private); |
3075 nbregister--; | 3122 nbregister--; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3112 (!strcmp(argv[i], "--recover"))) { | 3159 (!strcmp(argv[i], "--recover"))) { |
3113 recovery++; | 3160 recovery++; |
3114 options |= XML_PARSE_RECOVER; | 3161 options |= XML_PARSE_RECOVER; |
3115 } else if ((!strcmp(argv[i], "-huge")) || | 3162 } else if ((!strcmp(argv[i], "-huge")) || |
3116 (!strcmp(argv[i], "--huge"))) { | 3163 (!strcmp(argv[i], "--huge"))) { |
3117 options |= XML_PARSE_HUGE; | 3164 options |= XML_PARSE_HUGE; |
3118 } else if ((!strcmp(argv[i], "-noent")) || | 3165 } else if ((!strcmp(argv[i], "-noent")) || |
3119 (!strcmp(argv[i], "--noent"))) { | 3166 (!strcmp(argv[i], "--noent"))) { |
3120 noent++; | 3167 noent++; |
3121 options |= XML_PARSE_NOENT; | 3168 options |= XML_PARSE_NOENT; |
| 3169 } else if ((!strcmp(argv[i], "-noenc")) || |
| 3170 (!strcmp(argv[i], "--noenc"))) { |
| 3171 noenc++; |
| 3172 options |= XML_PARSE_IGNORE_ENC; |
3122 } else if ((!strcmp(argv[i], "-nsclean")) || | 3173 } else if ((!strcmp(argv[i], "-nsclean")) || |
3123 (!strcmp(argv[i], "--nsclean"))) { | 3174 (!strcmp(argv[i], "--nsclean"))) { |
3124 options |= XML_PARSE_NSCLEAN; | 3175 options |= XML_PARSE_NSCLEAN; |
3125 } else if ((!strcmp(argv[i], "-nocdata")) || | 3176 } else if ((!strcmp(argv[i], "-nocdata")) || |
3126 (!strcmp(argv[i], "--nocdata"))) { | 3177 (!strcmp(argv[i], "--nocdata"))) { |
3127 options |= XML_PARSE_NOCDATA; | 3178 options |= XML_PARSE_NOCDATA; |
3128 } else if ((!strcmp(argv[i], "-nodict")) || | 3179 } else if ((!strcmp(argv[i], "-nodict")) || |
3129 (!strcmp(argv[i], "--nodict"))) { | 3180 (!strcmp(argv[i], "--nodict"))) { |
3130 options |= XML_PARSE_NODICT; | 3181 options |= XML_PARSE_NODICT; |
3131 } else if ((!strcmp(argv[i], "-version")) || | 3182 } else if ((!strcmp(argv[i], "-version")) || |
(...skipping 18 matching lines...) Expand all Loading... |
3150 (!strcmp(argv[i], "--nowrap"))) | 3201 (!strcmp(argv[i], "--nowrap"))) |
3151 nowrap++; | 3202 nowrap++; |
3152 #ifdef LIBXML_HTML_ENABLED | 3203 #ifdef LIBXML_HTML_ENABLED |
3153 else if ((!strcmp(argv[i], "-html")) || | 3204 else if ((!strcmp(argv[i], "-html")) || |
3154 (!strcmp(argv[i], "--html"))) { | 3205 (!strcmp(argv[i], "--html"))) { |
3155 html++; | 3206 html++; |
3156 } | 3207 } |
3157 else if ((!strcmp(argv[i], "-xmlout")) || | 3208 else if ((!strcmp(argv[i], "-xmlout")) || |
3158 (!strcmp(argv[i], "--xmlout"))) { | 3209 (!strcmp(argv[i], "--xmlout"))) { |
3159 xmlout++; | 3210 xmlout++; |
| 3211 } else if ((!strcmp(argv[i], "-nodefdtd")) || |
| 3212 (!strcmp(argv[i], "--nodefdtd"))) { |
| 3213 nodefdtd++; |
| 3214 options |= HTML_PARSE_NODEFDTD; |
3160 } | 3215 } |
3161 #endif /* LIBXML_HTML_ENABLED */ | 3216 #endif /* LIBXML_HTML_ENABLED */ |
3162 else if ((!strcmp(argv[i], "-loaddtd")) || | 3217 else if ((!strcmp(argv[i], "-loaddtd")) || |
3163 (!strcmp(argv[i], "--loaddtd"))) { | 3218 (!strcmp(argv[i], "--loaddtd"))) { |
3164 loaddtd++; | 3219 loaddtd++; |
3165 options |= XML_PARSE_DTDLOAD; | 3220 options |= XML_PARSE_DTDLOAD; |
3166 } else if ((!strcmp(argv[i], "-dtdattr")) || | 3221 } else if ((!strcmp(argv[i], "-dtdattr")) || |
3167 (!strcmp(argv[i], "--dtdattr"))) { | 3222 (!strcmp(argv[i], "--dtdattr"))) { |
3168 loaddtd++; | 3223 loaddtd++; |
3169 dtdattrs++; | 3224 dtdattrs++; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3209 (!strcmp(argv[i], "--repeat"))) { | 3264 (!strcmp(argv[i], "--repeat"))) { |
3210 if (repeat) | 3265 if (repeat) |
3211 repeat *= 10; | 3266 repeat *= 10; |
3212 else | 3267 else |
3213 repeat = 100; | 3268 repeat = 100; |
3214 } | 3269 } |
3215 #ifdef LIBXML_PUSH_ENABLED | 3270 #ifdef LIBXML_PUSH_ENABLED |
3216 else if ((!strcmp(argv[i], "-push")) || | 3271 else if ((!strcmp(argv[i], "-push")) || |
3217 (!strcmp(argv[i], "--push"))) | 3272 (!strcmp(argv[i], "--push"))) |
3218 push++; | 3273 push++; |
| 3274 else if ((!strcmp(argv[i], "-pushsmall")) || |
| 3275 (!strcmp(argv[i], "--pushsmall"))) { |
| 3276 push++; |
| 3277 pushsize = 10; |
| 3278 } |
3219 #endif /* LIBXML_PUSH_ENABLED */ | 3279 #endif /* LIBXML_PUSH_ENABLED */ |
3220 #ifdef HAVE_SYS_MMAN_H | 3280 #ifdef HAVE_MMAP |
3221 else if ((!strcmp(argv[i], "-memory")) || | 3281 else if ((!strcmp(argv[i], "-memory")) || |
3222 (!strcmp(argv[i], "--memory"))) | 3282 (!strcmp(argv[i], "--memory"))) |
3223 memory++; | 3283 memory++; |
3224 #endif | 3284 #endif |
3225 else if ((!strcmp(argv[i], "-testIO")) || | 3285 else if ((!strcmp(argv[i], "-testIO")) || |
3226 (!strcmp(argv[i], "--testIO"))) | 3286 (!strcmp(argv[i], "--testIO"))) |
3227 testIO++; | 3287 testIO++; |
3228 #ifdef LIBXML_XINCLUDE_ENABLED | 3288 #ifdef LIBXML_XINCLUDE_ENABLED |
3229 else if ((!strcmp(argv[i], "-xinclude")) || | 3289 else if ((!strcmp(argv[i], "-xinclude")) || |
3230 (!strcmp(argv[i], "--xinclude"))) { | 3290 (!strcmp(argv[i], "--xinclude"))) { |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3302 (!strcmp(argv[i], "--encode"))) { | 3362 (!strcmp(argv[i], "--encode"))) { |
3303 i++; | 3363 i++; |
3304 encoding = argv[i]; | 3364 encoding = argv[i]; |
3305 /* | 3365 /* |
3306 * OK it's for testing purposes | 3366 * OK it's for testing purposes |
3307 */ | 3367 */ |
3308 xmlAddEncodingAlias("UTF-8", "DVEnc"); | 3368 xmlAddEncodingAlias("UTF-8", "DVEnc"); |
3309 } | 3369 } |
3310 else if ((!strcmp(argv[i], "-noblanks")) || | 3370 else if ((!strcmp(argv[i], "-noblanks")) || |
3311 (!strcmp(argv[i], "--noblanks"))) { | 3371 (!strcmp(argv[i], "--noblanks"))) { |
3312 » noblanks++; | 3372 » noblanks++; |
3313 » xmlKeepBlanksDefault(0); | 3373 » xmlKeepBlanksDefault(0); |
| 3374 » options |= XML_PARSE_NOBLANKS; |
3314 } | 3375 } |
3315 else if ((!strcmp(argv[i], "-maxmem")) || | 3376 else if ((!strcmp(argv[i], "-maxmem")) || |
3316 (!strcmp(argv[i], "--maxmem"))) { | 3377 (!strcmp(argv[i], "--maxmem"))) { |
3317 i++; | 3378 i++; |
3318 if (sscanf(argv[i], "%d", &maxmem) == 1) { | 3379 if (sscanf(argv[i], "%d", &maxmem) == 1) { |
3319 xmlMemSetup(myFreeFunc, myMallocFunc, myReallocFunc, | 3380 xmlMemSetup(myFreeFunc, myMallocFunc, myReallocFunc, |
3320 myStrdupFunc); | 3381 myStrdupFunc); |
3321 } else { | 3382 } else { |
3322 maxmem = 0; | 3383 maxmem = 0; |
3323 } | 3384 } |
3324 } | 3385 } |
3325 else if ((!strcmp(argv[i], "-format")) || | 3386 else if ((!strcmp(argv[i], "-format")) || |
3326 (!strcmp(argv[i], "--format"))) { | 3387 (!strcmp(argv[i], "--format"))) { |
3327 noblanks++; | 3388 noblanks++; |
3328 #ifdef LIBXML_OUTPUT_ENABLED | 3389 #ifdef LIBXML_OUTPUT_ENABLED |
3329 » format++; | 3390 » format = 1; |
3330 #endif /* LIBXML_OUTPUT_ENABLED */ | 3391 #endif /* LIBXML_OUTPUT_ENABLED */ |
3331 xmlKeepBlanksDefault(0); | 3392 xmlKeepBlanksDefault(0); |
3332 } | 3393 } |
| 3394 else if ((!strcmp(argv[i], "-pretty")) || |
| 3395 (!strcmp(argv[i], "--pretty"))) { |
| 3396 i++; |
| 3397 #ifdef LIBXML_OUTPUT_ENABLED |
| 3398 if (argv[i] != NULL) { |
| 3399 format = atoi(argv[i]); |
| 3400 if (format == 1) { |
| 3401 noblanks++; |
| 3402 xmlKeepBlanksDefault(0); |
| 3403 } |
| 3404 } |
| 3405 #endif /* LIBXML_OUTPUT_ENABLED */ |
| 3406 } |
3333 #ifdef LIBXML_READER_ENABLED | 3407 #ifdef LIBXML_READER_ENABLED |
3334 else if ((!strcmp(argv[i], "-stream")) || | 3408 else if ((!strcmp(argv[i], "-stream")) || |
3335 (!strcmp(argv[i], "--stream"))) { | 3409 (!strcmp(argv[i], "--stream"))) { |
3336 stream++; | 3410 stream++; |
3337 } | 3411 } |
3338 else if ((!strcmp(argv[i], "-walker")) || | 3412 else if ((!strcmp(argv[i], "-walker")) || |
3339 (!strcmp(argv[i], "--walker"))) { | 3413 (!strcmp(argv[i], "--walker"))) { |
3340 walker++; | 3414 walker++; |
3341 noout++; | 3415 noout++; |
3342 } | 3416 } |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3609 if ((!strcmp(argv[i], "-relaxng")) || | 3683 if ((!strcmp(argv[i], "-relaxng")) || |
3610 (!strcmp(argv[i], "--relaxng"))) { | 3684 (!strcmp(argv[i], "--relaxng"))) { |
3611 i++; | 3685 i++; |
3612 continue; | 3686 continue; |
3613 } | 3687 } |
3614 if ((!strcmp(argv[i], "-maxmem")) || | 3688 if ((!strcmp(argv[i], "-maxmem")) || |
3615 (!strcmp(argv[i], "--maxmem"))) { | 3689 (!strcmp(argv[i], "--maxmem"))) { |
3616 i++; | 3690 i++; |
3617 continue; | 3691 continue; |
3618 } | 3692 } |
| 3693 if ((!strcmp(argv[i], "-pretty")) || |
| 3694 (!strcmp(argv[i], "--pretty"))) { |
| 3695 i++; |
| 3696 continue; |
| 3697 } |
3619 if ((!strcmp(argv[i], "-schema")) || | 3698 if ((!strcmp(argv[i], "-schema")) || |
3620 (!strcmp(argv[i], "--schema"))) { | 3699 (!strcmp(argv[i], "--schema"))) { |
3621 i++; | 3700 i++; |
3622 continue; | 3701 continue; |
3623 } | 3702 } |
3624 if ((!strcmp(argv[i], "-schematron")) || | 3703 if ((!strcmp(argv[i], "-schematron")) || |
3625 (!strcmp(argv[i], "--schematron"))) { | 3704 (!strcmp(argv[i], "--schematron"))) { |
3626 i++; | 3705 i++; |
3627 continue; | 3706 continue; |
3628 } | 3707 } |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3713 #ifdef LIBXML_PATTERN_ENABLED | 3792 #ifdef LIBXML_PATTERN_ENABLED |
3714 if (patternc != NULL) | 3793 if (patternc != NULL) |
3715 xmlFreePattern(patternc); | 3794 xmlFreePattern(patternc); |
3716 #endif | 3795 #endif |
3717 xmlCleanupParser(); | 3796 xmlCleanupParser(); |
3718 xmlMemoryDump(); | 3797 xmlMemoryDump(); |
3719 | 3798 |
3720 return(progresult); | 3799 return(progresult); |
3721 } | 3800 } |
3722 | 3801 |
OLD | NEW |