rsvg2 2.0.2-x86-mingw32 → 2.0.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (370) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +63 -7
  3. data/ext/rsvg2/extconf.rb +4 -1
  4. data/lib/1.9/rsvg2.so +0 -0
  5. data/lib/2.0/rsvg2.so +0 -0
  6. data/vendor/local/bin/croco-0.6-config +87 -0
  7. data/vendor/local/bin/csslint-0.6.exe +0 -0
  8. data/vendor/local/bin/libcroco-0.6-3.dll +0 -0
  9. data/vendor/local/bin/librsvg-2-2.dll +0 -0
  10. data/vendor/local/bin/rsvg-convert.exe +0 -0
  11. data/vendor/local/include/libcroco-0.6/libcroco/cr-cascade.h +1 -1
  12. data/vendor/local/include/libcroco-0.6/libcroco/cr-enc-handler.h +1 -1
  13. data/vendor/local/include/libcroco-0.6/libcroco/cr-om-parser.h +1 -1
  14. data/vendor/local/include/libcroco-0.6/libcroco/cr-sel-eng.h +1 -5
  15. data/vendor/local/include/libcroco-0.6/libcroco/libcroco-config.h +4 -5
  16. data/vendor/local/include/librsvg-2.0/librsvg/librsvg-enum-types.h +4 -0
  17. data/vendor/local/include/librsvg-2.0/librsvg/librsvg-features.h +13 -10
  18. data/vendor/local/include/librsvg-2.0/librsvg/rsvg-cairo.h +4 -0
  19. data/vendor/local/include/librsvg-2.0/librsvg/rsvg.h +64 -34
  20. data/vendor/local/lib/girepository-1.0/Rsvg-2.0.typelib +0 -0
  21. data/vendor/local/lib/libcroco-0.6.a +0 -0
  22. data/vendor/local/lib/libcroco-0.6.dll.a +0 -0
  23. data/vendor/local/lib/libcroco-0.6.la +41 -0
  24. data/vendor/local/lib/librsvg-2.a +0 -0
  25. data/vendor/local/lib/librsvg-2.dll.a +0 -0
  26. data/vendor/local/lib/librsvg-2.la +41 -0
  27. data/vendor/local/lib/pkgconfig/libcroco-0.6.pc +3 -4
  28. data/vendor/local/lib/pkgconfig/librsvg-2.0.pc +1 -1
  29. data/vendor/local/share/gir-1.0/Rsvg-2.0.gir +693 -0
  30. data/vendor/local/share/gtk-doc/html/libcroco/ch01.html +113 -0
  31. data/vendor/local/share/{doc/libxml2-2.9.0/html/html → gtk-doc/html/libcroco}/home.png +0 -0
  32. data/vendor/local/share/gtk-doc/html/libcroco/index.html +109 -0
  33. data/vendor/local/share/gtk-doc/html/libcroco/index.sgml +582 -0
  34. data/vendor/local/share/{doc/libxml2-2.9.0/html/html → gtk-doc/html/libcroco}/left.png +0 -0
  35. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-additional-sel.html +337 -0
  36. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-attr-sel.html +203 -0
  37. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-cascade.html +240 -0
  38. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-declaration.html +642 -0
  39. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-doc-handler.html +517 -0
  40. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-enc-handler.html +164 -0
  41. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-fonts.html +670 -0
  42. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-input.html +1102 -0
  43. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-num.html +265 -0
  44. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-om-parser.html +380 -0
  45. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-parser.html +913 -0
  46. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-parsing-location.html +205 -0
  47. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-prop-list.html +421 -0
  48. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-pseudo.html +141 -0
  49. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-rgb.html +503 -0
  50. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-sel-eng.html +346 -0
  51. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-selector.html +246 -0
  52. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-simple-sel.html +240 -0
  53. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-statement.html +1408 -0
  54. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-string.html +137 -0
  55. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-style.html +384 -0
  56. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-stylesheet.html +158 -0
  57. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-term.html +304 -0
  58. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-tknzr.html +312 -0
  59. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-token.html +428 -0
  60. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-utils.html +334 -0
  61. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-libcroco-config.html +80 -0
  62. data/vendor/local/share/gtk-doc/html/libcroco/libcroco.devhelp2 +511 -0
  63. data/vendor/local/share/{doc/libxml2-2.9.0/html/html → gtk-doc/html/libcroco}/right.png +0 -0
  64. data/vendor/local/share/gtk-doc/html/libcroco/style.css +266 -0
  65. data/vendor/local/share/{doc/libxml2-2.9.0/html/html → gtk-doc/html/libcroco}/up.png +0 -0
  66. data/vendor/local/share/gtk-doc/html/rsvg-2.0/RsvgHandle.html +1073 -0
  67. data/vendor/local/share/gtk-doc/html/rsvg-2.0/annotation-glossary.html +55 -0
  68. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-14.html +58 -0
  69. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-22.html +46 -0
  70. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-32.html +50 -0
  71. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-36.html +51 -0
  72. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-4.html +42 -0
  73. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-8.html +59 -0
  74. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-9.html +58 -0
  75. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-deprecated.html +105 -0
  76. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-full.html +328 -0
  77. data/vendor/local/share/gtk-doc/html/{libxml2 → rsvg-2.0}/home.png +0 -0
  78. data/vendor/local/share/gtk-doc/html/rsvg-2.0/index.html +88 -0
  79. data/vendor/local/share/gtk-doc/html/rsvg-2.0/index.sgml +101 -0
  80. data/vendor/local/share/gtk-doc/html/{libxml2 → rsvg-2.0}/left.png +0 -0
  81. data/vendor/local/share/gtk-doc/html/rsvg-2.0/licence.html +57 -0
  82. data/vendor/local/share/gtk-doc/html/rsvg-2.0/object-tree.html +38 -0
  83. data/vendor/local/share/gtk-doc/html/{libxml2 → rsvg-2.0}/right.png +0 -0
  84. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-2.0.devhelp2 +96 -0
  85. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-GIO.html +283 -0
  86. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-GdkPixbuf.html +386 -0
  87. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-cairo.html +126 -0
  88. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Version-check-and-feature-tests.html +109 -0
  89. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg.html +57 -0
  90. data/vendor/local/share/gtk-doc/html/rsvg-2.0/style.css +266 -0
  91. data/vendor/local/share/gtk-doc/html/{libxml2 → rsvg-2.0}/up.png +0 -0
  92. data/vendor/local/share/license/libcroco/AUTHORS +13 -0
  93. data/vendor/local/share/license/libcroco/COPYING +481 -0
  94. data/vendor/local/share/license/libcroco/COPYING.LIB +481 -0
  95. data/vendor/local/share/license/librsvg/AUTHORS +1 -0
  96. data/vendor/local/share/license/librsvg/COPYING +340 -0
  97. data/vendor/local/share/license/librsvg/COPYING.LIB +482 -0
  98. data/vendor/local/share/man/man1/rsvg-convert.1 +55 -0
  99. metadata +90 -299
  100. data/vendor/local/bin/libxml2-2.dll +0 -0
  101. data/vendor/local/bin/rsvg-view.exe +0 -0
  102. data/vendor/local/bin/xmlcatalog.exe +0 -0
  103. data/vendor/local/bin/xmllint.exe +0 -0
  104. data/vendor/local/include/libxml2/libxml/DOCBparser.h +0 -96
  105. data/vendor/local/include/libxml2/libxml/HTMLparser.h +0 -306
  106. data/vendor/local/include/libxml2/libxml/HTMLtree.h +0 -147
  107. data/vendor/local/include/libxml2/libxml/SAX.h +0 -173
  108. data/vendor/local/include/libxml2/libxml/SAX2.h +0 -176
  109. data/vendor/local/include/libxml2/libxml/c14n.h +0 -126
  110. data/vendor/local/include/libxml2/libxml/catalog.h +0 -182
  111. data/vendor/local/include/libxml2/libxml/chvalid.h +0 -230
  112. data/vendor/local/include/libxml2/libxml/debugXML.h +0 -217
  113. data/vendor/local/include/libxml2/libxml/dict.h +0 -80
  114. data/vendor/local/include/libxml2/libxml/encoding.h +0 -240
  115. data/vendor/local/include/libxml2/libxml/entities.h +0 -150
  116. data/vendor/local/include/libxml2/libxml/globals.h +0 -502
  117. data/vendor/local/include/libxml2/libxml/hash.h +0 -233
  118. data/vendor/local/include/libxml2/libxml/list.h +0 -137
  119. data/vendor/local/include/libxml2/libxml/nanoftp.h +0 -163
  120. data/vendor/local/include/libxml2/libxml/nanohttp.h +0 -81
  121. data/vendor/local/include/libxml2/libxml/parser.h +0 -1240
  122. data/vendor/local/include/libxml2/libxml/parserInternals.h +0 -644
  123. data/vendor/local/include/libxml2/libxml/pattern.h +0 -100
  124. data/vendor/local/include/libxml2/libxml/relaxng.h +0 -213
  125. data/vendor/local/include/libxml2/libxml/schemasInternals.h +0 -958
  126. data/vendor/local/include/libxml2/libxml/schematron.h +0 -142
  127. data/vendor/local/include/libxml2/libxml/threads.h +0 -84
  128. data/vendor/local/include/libxml2/libxml/tree.h +0 -1303
  129. data/vendor/local/include/libxml2/libxml/uri.h +0 -94
  130. data/vendor/local/include/libxml2/libxml/valid.h +0 -458
  131. data/vendor/local/include/libxml2/libxml/xinclude.h +0 -129
  132. data/vendor/local/include/libxml2/libxml/xlink.h +0 -189
  133. data/vendor/local/include/libxml2/libxml/xmlIO.h +0 -366
  134. data/vendor/local/include/libxml2/libxml/xmlautomata.h +0 -146
  135. data/vendor/local/include/libxml2/libxml/xmlerror.h +0 -944
  136. data/vendor/local/include/libxml2/libxml/xmlexports.h +0 -162
  137. data/vendor/local/include/libxml2/libxml/xmlmemory.h +0 -224
  138. data/vendor/local/include/libxml2/libxml/xmlmodule.h +0 -57
  139. data/vendor/local/include/libxml2/libxml/xmlreader.h +0 -428
  140. data/vendor/local/include/libxml2/libxml/xmlregexp.h +0 -222
  141. data/vendor/local/include/libxml2/libxml/xmlsave.h +0 -88
  142. data/vendor/local/include/libxml2/libxml/xmlschemas.h +0 -246
  143. data/vendor/local/include/libxml2/libxml/xmlschemastypes.h +0 -151
  144. data/vendor/local/include/libxml2/libxml/xmlstring.h +0 -140
  145. data/vendor/local/include/libxml2/libxml/xmlunicode.h +0 -202
  146. data/vendor/local/include/libxml2/libxml/xmlversion.h +0 -480
  147. data/vendor/local/include/libxml2/libxml/xmlwriter.h +0 -488
  148. data/vendor/local/include/libxml2/libxml/xpath.h +0 -550
  149. data/vendor/local/include/libxml2/libxml/xpathInternals.h +0 -632
  150. data/vendor/local/include/libxml2/libxml/xpointer.h +0 -114
  151. data/vendor/local/lib/libxml2.def +0 -1659
  152. data/vendor/local/lib/libxml2.dll.a +0 -0
  153. data/vendor/local/lib/libxml2.lib +0 -0
  154. data/vendor/local/lib/pkgconfig/libxml-2.0.pc +0 -13
  155. data/vendor/local/manifest/libcroco-dev_0.6.2-1_win32.mft +0 -36
  156. data/vendor/local/manifest/libcroco_0.6.2-1_win32.mft +0 -2
  157. data/vendor/local/manifest/librsvg-dev_2.32.1-1_win32.mft +0 -11
  158. data/vendor/local/manifest/librsvg_2.32.1-1_win32.mft +0 -2
  159. data/vendor/local/manifest/libxml2-dev_2.9.0-1_win32.mft +0 -268
  160. data/vendor/local/manifest/libxml2_2.9.0-1_win32.mft +0 -2
  161. data/vendor/local/share/aclocal/libxml.m4 +0 -188
  162. data/vendor/local/share/doc/libxml2-2.9.0/Copyright +0 -27
  163. data/vendor/local/share/doc/libxml2-2.9.0/examples/testHTML.c +0 -880
  164. data/vendor/local/share/doc/libxml2-2.9.0/examples/testSAX.c +0 -1198
  165. data/vendor/local/share/doc/libxml2-2.9.0/examples/testXPath.c +0 -229
  166. data/vendor/local/share/doc/libxml2-2.9.0/examples/xmllint.c +0 -3770
  167. data/vendor/local/share/doc/libxml2-2.9.0/html/DOM.gif +0 -0
  168. data/vendor/local/share/doc/libxml2-2.9.0/html/FAQ.html +0 -282
  169. data/vendor/local/share/doc/libxml2-2.9.0/html/Libxml2-Logo-180x168.gif +0 -0
  170. data/vendor/local/share/doc/libxml2-2.9.0/html/Libxml2-Logo-90x34.gif +0 -0
  171. data/vendor/local/share/doc/libxml2-2.9.0/html/encoding.html +0 -207
  172. data/vendor/local/share/doc/libxml2-2.9.0/html/examples.xml +0 -751
  173. data/vendor/local/share/doc/libxml2-2.9.0/html/examples.xsl +0 -174
  174. data/vendor/local/share/doc/libxml2-2.9.0/html/html/book1.html +0 -13
  175. data/vendor/local/share/doc/libxml2-2.9.0/html/html/index.html +0 -13
  176. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-DOCBparser.html +0 -51
  177. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-HTMLparser.html +0 -184
  178. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-HTMLtree.html +0 -73
  179. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-SAX.html +0 -125
  180. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-SAX2.html +0 -128
  181. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-c14n.html +0 -38
  182. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-catalog.html +0 -142
  183. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-chvalid.html +0 -72
  184. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-debugXML.html +0 -120
  185. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-dict.html +0 -58
  186. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-encoding.html +0 -124
  187. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-entities.html +0 -79
  188. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-globals.html +0 -152
  189. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-hash.html +0 -116
  190. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-lib.html +0 -13
  191. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-list.html +0 -120
  192. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-nanoftp.html +0 -94
  193. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-nanohttp.html +0 -65
  194. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-parser.html +0 -559
  195. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-parserInternals.html +0 -322
  196. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-pattern.html +0 -76
  197. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-relaxng.html +0 -162
  198. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-schemasInternals.html +0 -373
  199. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-schematron.html +0 -81
  200. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-threads.html +0 -72
  201. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-tree.html +0 -989
  202. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-uri.html +0 -73
  203. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-valid.html +0 -289
  204. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xinclude.html +0 -59
  205. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xlink.html +0 -82
  206. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlIO.html +0 -212
  207. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlautomata.html +0 -85
  208. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlerror.html +0 -864
  209. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlexports.html +0 -20
  210. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlmemory.html +0 -107
  211. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlmodule.html +0 -38
  212. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlreader.html +0 -330
  213. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlregexp.html +0 -143
  214. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlsave.html +0 -60
  215. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlschemas.html +0 -185
  216. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlschemastypes.html +0 -123
  217. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlstring.html +0 -108
  218. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlunicode.html +0 -512
  219. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlversion.html +0 -62
  220. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlwriter.html +0 -261
  221. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xpath.html +0 -310
  222. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xpathInternals.html +0 -394
  223. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xpointer.html +0 -83
  224. data/vendor/local/share/doc/libxml2-2.9.0/html/index.html +0 -14
  225. data/vendor/local/share/doc/libxml2-2.9.0/html/io1.c +0 -166
  226. data/vendor/local/share/doc/libxml2-2.9.0/html/io1.res +0 -5
  227. data/vendor/local/share/doc/libxml2-2.9.0/html/io2.c +0 -58
  228. data/vendor/local/share/doc/libxml2-2.9.0/html/io2.res +0 -2
  229. data/vendor/local/share/doc/libxml2-2.9.0/html/libxml.gif +0 -0
  230. data/vendor/local/share/doc/libxml2-2.9.0/html/parse1.c +0 -56
  231. data/vendor/local/share/doc/libxml2-2.9.0/html/parse2.c +0 -72
  232. data/vendor/local/share/doc/libxml2-2.9.0/html/parse3.c +0 -60
  233. data/vendor/local/share/doc/libxml2-2.9.0/html/parse4.c +0 -143
  234. data/vendor/local/share/doc/libxml2-2.9.0/html/reader1.c +0 -107
  235. data/vendor/local/share/doc/libxml2-2.9.0/html/reader1.res +0 -14
  236. data/vendor/local/share/doc/libxml2-2.9.0/html/reader2.c +0 -122
  237. data/vendor/local/share/doc/libxml2-2.9.0/html/reader3.c +0 -120
  238. data/vendor/local/share/doc/libxml2-2.9.0/html/reader3.res +0 -13
  239. data/vendor/local/share/doc/libxml2-2.9.0/html/reader4.c +0 -122
  240. data/vendor/local/share/doc/libxml2-2.9.0/html/reader4.res +0 -3
  241. data/vendor/local/share/doc/libxml2-2.9.0/html/redhat.gif +0 -0
  242. data/vendor/local/share/doc/libxml2-2.9.0/html/smallfootonly.gif +0 -0
  243. data/vendor/local/share/doc/libxml2-2.9.0/html/structure.gif +0 -0
  244. data/vendor/local/share/doc/libxml2-2.9.0/html/test1.xml +0 -1
  245. data/vendor/local/share/doc/libxml2-2.9.0/html/test2.xml +0 -13
  246. data/vendor/local/share/doc/libxml2-2.9.0/html/test3.xml +0 -39
  247. data/vendor/local/share/doc/libxml2-2.9.0/html/testWriter.c +0 -1198
  248. data/vendor/local/share/doc/libxml2-2.9.0/html/tree1.c +0 -94
  249. data/vendor/local/share/doc/libxml2-2.9.0/html/tree1.res +0 -4
  250. data/vendor/local/share/doc/libxml2-2.9.0/html/tree2.c +0 -118
  251. data/vendor/local/share/doc/libxml2-2.9.0/html/tree2.res +0 -18
  252. data/vendor/local/share/doc/libxml2-2.9.0/html/tst.xml +0 -7
  253. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apa.html +0 -8
  254. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apb.html +0 -14
  255. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apc.html +0 -82
  256. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apd.html +0 -76
  257. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ape.html +0 -78
  258. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apf.html +0 -67
  259. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apg.html +0 -75
  260. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/aph.html +0 -76
  261. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/api.html +0 -4
  262. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s02.html +0 -14
  263. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s03.html +0 -47
  264. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s04.html +0 -54
  265. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s05.html +0 -55
  266. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s06.html +0 -35
  267. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s07.html +0 -30
  268. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s08.html +0 -38
  269. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s09.html +0 -63
  270. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/blank.png +0 -0
  271. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/1.png +0 -0
  272. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/10.png +0 -0
  273. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/2.png +0 -0
  274. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/3.png +0 -0
  275. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/4.png +0 -0
  276. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/5.png +0 -0
  277. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/6.png +0 -0
  278. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/7.png +0 -0
  279. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/8.png +0 -0
  280. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/9.png +0 -0
  281. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/caution.png +0 -0
  282. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/draft.png +0 -0
  283. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/home.png +0 -0
  284. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/important.png +0 -0
  285. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/next.png +0 -0
  286. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/note.png +0 -0
  287. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/prev.png +0 -0
  288. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/tip.png +0 -0
  289. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/toc-blank.png +0 -0
  290. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/toc-minus.png +0 -0
  291. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/toc-plus.png +0 -0
  292. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/up.png +0 -0
  293. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/warning.png +0 -0
  294. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includeaddattribute.c +0 -64
  295. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includeaddkeyword.c +0 -75
  296. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includeconvert.c +0 -73
  297. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includegetattribute.c +0 -72
  298. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includekeyword.c +0 -79
  299. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includexpath.c +0 -74
  300. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/index.html +0 -14
  301. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ix01.html +0 -1
  302. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/xmltutorial.pdf +0 -1336
  303. data/vendor/local/share/doc/libxml2-2.9.0/html/w3c.png +0 -0
  304. data/vendor/local/share/doc/libxml2-2.9.0/html/writer.xml +0 -2
  305. data/vendor/local/share/doc/libxml2-2.9.0/html/xml.html +0 -5715
  306. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath1.c +0 -250
  307. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath1.res +0 -5
  308. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath2.c +0 -190
  309. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath2.res +0 -30
  310. data/vendor/local/share/gtk-doc/html/libxml2/general.html +0 -38
  311. data/vendor/local/share/gtk-doc/html/libxml2/index.html +0 -67
  312. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-DOCBparser.html +0 -138
  313. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-HTMLparser.html +0 -373
  314. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-HTMLtree.html +0 -172
  315. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-SAX.html +0 -243
  316. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-SAX2.html +0 -247
  317. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-c14n.html +0 -91
  318. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-catalog.html +0 -278
  319. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-chvalid.html +0 -241
  320. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-debugXML.html +0 -225
  321. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-dict.html +0 -134
  322. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-encoding.html +0 -218
  323. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-entities.html +0 -166
  324. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-globals.html +0 -383
  325. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-hash.html +0 -214
  326. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-list.html +0 -226
  327. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-nanoftp.html +0 -187
  328. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-nanohttp.html +0 -142
  329. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-parser.html +0 -766
  330. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-parserInternals.html +0 -688
  331. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-pattern.html +0 -166
  332. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-relaxng.html +0 -278
  333. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-schemasInternals.html +0 -860
  334. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-schematron.html +0 -166
  335. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-threads.html +0 -161
  336. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-tree.html +0 -1596
  337. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-uri.html +0 -154
  338. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-valid.html +0 -528
  339. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xinclude.html +0 -169
  340. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xlink.html +0 -160
  341. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlIO.html +0 -347
  342. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlautomata.html +0 -176
  343. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlerror.html +0 -952
  344. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlexports.html +0 -87
  345. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlmemory.html +0 -186
  346. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlmodule.html +0 -97
  347. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlreader.html +0 -565
  348. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlregexp.html +0 -280
  349. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlsave.html +0 -133
  350. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlschemas.html +0 -314
  351. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlschemastypes.html +0 -237
  352. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlstring.html +0 -217
  353. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlunicode.html +0 -887
  354. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlversion.html +0 -287
  355. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlwriter.html +0 -479
  356. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpath.html +0 -532
  357. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpathInternals.html +0 -787
  358. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpointer.html +0 -171
  359. data/vendor/local/share/gtk-doc/html/libxml2/libxml2.devhelp +0 -3569
  360. data/vendor/local/share/gtk-doc/html/libxml2/style.css +0 -66
  361. data/vendor/local/share/man/man1/xml2-config.1 +0 -30
  362. data/vendor/local/share/man/man1/xmlcatalog.1 +0 -340
  363. data/vendor/local/share/man/man1/xmllint.1 +0 -427
  364. data/vendor/local/share/man/man3/libxml.3 +0 -71
  365. data/vendor/local/src/dieterv/packaging/libxml2_2.9.0-1_win32.log +0 -867
  366. data/vendor/local/src/dieterv/packaging/libxml2_2.9.0-1_win32.sh +0 -68
  367. data/vendor/local/src/tml/packaging/libcroco_0.6.2-1_win32.log +0 -471
  368. data/vendor/local/src/tml/packaging/libcroco_0.6.2-1_win32.sh +0 -61
  369. data/vendor/local/src/tml/packaging/librsvg_2.32.1-1_win32.log +0 -535
  370. data/vendor/local/src/tml/packaging/librsvg_2.32.1-1_win32.sh +0 -125
@@ -1,229 +0,0 @@
1
- /*
2
- * testXPath.c : a small tester program for XPath.
3
- *
4
- * See Copyright for the status of this software.
5
- *
6
- * daniel@veillard.com
7
- */
8
-
9
- #include "libxml.h"
10
- #if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED)
11
-
12
- #include <string.h>
13
-
14
- #ifdef HAVE_SYS_TYPES_H
15
- #include <sys/types.h>
16
- #endif
17
- #ifdef HAVE_SYS_STAT_H
18
- #include <sys/stat.h>
19
- #endif
20
- #ifdef HAVE_FCNTL_H
21
- #include <fcntl.h>
22
- #endif
23
- #ifdef HAVE_UNISTD_H
24
- #include <unistd.h>
25
- #endif
26
- #ifdef HAVE_STDLIB_H
27
- #include <stdlib.h>
28
- #endif
29
-
30
-
31
- #include <libxml/xpath.h>
32
- #include <libxml/tree.h>
33
- #include <libxml/parser.h>
34
- #include <libxml/debugXML.h>
35
- #include <libxml/xmlmemory.h>
36
- #include <libxml/parserInternals.h>
37
- #include <libxml/xpathInternals.h>
38
- #include <libxml/xmlerror.h>
39
- #include <libxml/globals.h>
40
- #if defined(LIBXML_XPTR_ENABLED)
41
- #include <libxml/xpointer.h>
42
- static int xptr = 0;
43
- #endif
44
- static int debug = 0;
45
- static int valid = 0;
46
- static int expr = 0;
47
- static int tree = 0;
48
- static int nocdata = 0;
49
- static xmlDocPtr document = NULL;
50
-
51
- /*
52
- * Default document
53
- */
54
- static xmlChar buffer[] =
55
- "<?xml version=\"1.0\"?>\n\
56
- <EXAMPLE prop1=\"gnome is great\" prop2=\"&amp; linux too\">\n\
57
- <head>\n\
58
- <title>Welcome to Gnome</title>\n\
59
- </head>\n\
60
- <chapter>\n\
61
- <title>The Linux adventure</title>\n\
62
- <p>bla bla bla ...</p>\n\
63
- <image href=\"linus.gif\"/>\n\
64
- <p>...</p>\n\
65
- </chapter>\n\
66
- <chapter>\n\
67
- <title>Chapter 2</title>\n\
68
- <p>this is chapter 2 ...</p>\n\
69
- </chapter>\n\
70
- <chapter>\n\
71
- <title>Chapter 3</title>\n\
72
- <p>this is chapter 3 ...</p>\n\
73
- </chapter>\n\
74
- </EXAMPLE>\n\
75
- ";
76
-
77
-
78
- static void
79
- testXPath(const char *str) {
80
- xmlXPathObjectPtr res;
81
- xmlXPathContextPtr ctxt;
82
-
83
- #if defined(LIBXML_XPTR_ENABLED)
84
- if (xptr) {
85
- ctxt = xmlXPtrNewContext(document, NULL, NULL);
86
- res = xmlXPtrEval(BAD_CAST str, ctxt);
87
- } else {
88
- #endif
89
- ctxt = xmlXPathNewContext(document);
90
- ctxt->node = xmlDocGetRootElement(document);
91
- if (expr)
92
- res = xmlXPathEvalExpression(BAD_CAST str, ctxt);
93
- else {
94
- /* res = xmlXPathEval(BAD_CAST str, ctxt); */
95
- xmlXPathCompExprPtr comp;
96
-
97
- comp = xmlXPathCompile(BAD_CAST str);
98
- if (comp != NULL) {
99
- if (tree)
100
- xmlXPathDebugDumpCompExpr(stdout, comp, 0);
101
-
102
- res = xmlXPathCompiledEval(comp, ctxt);
103
- xmlXPathFreeCompExpr(comp);
104
- } else
105
- res = NULL;
106
- }
107
- #if defined(LIBXML_XPTR_ENABLED)
108
- }
109
- #endif
110
- xmlXPathDebugDumpObject(stdout, res, 0);
111
- xmlXPathFreeObject(res);
112
- xmlXPathFreeContext(ctxt);
113
- }
114
-
115
- static void
116
- testXPathFile(const char *filename) {
117
- FILE *input;
118
- char expression[5000];
119
- int len;
120
-
121
- input = fopen(filename, "r");
122
- if (input == NULL) {
123
- xmlGenericError(xmlGenericErrorContext,
124
- "Cannot open %s for reading\n", filename);
125
- return;
126
- }
127
- while (fgets(expression, 4500, input) != NULL) {
128
- len = strlen(expression);
129
- len--;
130
- while ((len >= 0) &&
131
- ((expression[len] == '\n') || (expression[len] == '\t') ||
132
- (expression[len] == '\r') || (expression[len] == ' '))) len--;
133
- expression[len + 1] = 0;
134
- if (len >= 0) {
135
- printf("\n========================\nExpression: %s\n", expression) ;
136
- testXPath(expression);
137
- }
138
- }
139
-
140
- fclose(input);
141
- }
142
-
143
- int main(int argc, char **argv) {
144
- int i;
145
- int strings = 0;
146
- int usefile = 0;
147
- char *filename = NULL;
148
-
149
- for (i = 1; i < argc ; i++) {
150
- #if defined(LIBXML_XPTR_ENABLED)
151
- if ((!strcmp(argv[i], "-xptr")) || (!strcmp(argv[i], "--xptr")))
152
- xptr++;
153
- else
154
- #endif
155
- if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
156
- debug++;
157
- else if ((!strcmp(argv[i], "-valid")) || (!strcmp(argv[i], "--valid")))
158
- valid++;
159
- else if ((!strcmp(argv[i], "-expr")) || (!strcmp(argv[i], "--expr")))
160
- expr++;
161
- else if ((!strcmp(argv[i], "-tree")) || (!strcmp(argv[i], "--tree")))
162
- tree++;
163
- else if ((!strcmp(argv[i], "-nocdata")) ||
164
- (!strcmp(argv[i], "--nocdata")))
165
- nocdata++;
166
- else if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input")))
167
- filename = argv[++i];
168
- else if ((!strcmp(argv[i], "-f")) || (!strcmp(argv[i], "--file")))
169
- usefile++;
170
- }
171
- if (valid != 0) xmlDoValidityCheckingDefaultValue = 1;
172
- xmlLoadExtDtdDefaultValue |= XML_DETECT_IDS;
173
- xmlLoadExtDtdDefaultValue |= XML_COMPLETE_ATTRS;
174
- xmlSubstituteEntitiesDefaultValue = 1;
175
- #ifdef LIBXML_SAX1_ENABLED
176
- if (nocdata != 0) {
177
- xmlDefaultSAXHandlerInit();
178
- xmlDefaultSAXHandler.cdataBlock = NULL;
179
- }
180
- #endif
181
- if (document == NULL) {
182
- if (filename == NULL)
183
- document = xmlReadDoc(buffer,NULL,NULL,XML_PARSE_COMPACT);
184
- else
185
- document = xmlReadFile(filename,NULL,XML_PARSE_COMPACT);
186
- }
187
- for (i = 1; i < argc ; i++) {
188
- if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input"))) {
189
- i++; continue;
190
- }
191
- if (argv[i][0] != '-') {
192
- if (usefile)
193
- testXPathFile(argv[i]);
194
- else
195
- testXPath(argv[i]);
196
- strings ++;
197
- }
198
- }
199
- if (strings == 0) {
200
- printf("Usage : %s [--debug] [--copy] stringsorfiles ...\n",
201
- argv[0]);
202
- printf("\tParse the XPath strings and output the result of the parsing\n");
203
- printf("\t--debug : dump a debug version of the result\n");
204
- printf("\t--valid : switch on DTD support in the parser\n");
205
- #if defined(LIBXML_XPTR_ENABLED)
206
- printf("\t--xptr : expressions are XPointer expressions\n");
207
- #endif
208
- printf("\t--expr : debug XPath expressions only\n");
209
- printf("\t--tree : show the compiled XPath tree\n");
210
- printf("\t--nocdata : do not generate CDATA nodes\n");
211
- printf("\t--input filename : or\n");
212
- printf("\t-i filename : read the document from filename\n");
213
- printf("\t--file : or\n");
214
- printf("\t-f : read queries from files, args\n");
215
- }
216
- if (document != NULL)
217
- xmlFreeDoc(document);
218
- xmlCleanupParser();
219
- xmlMemoryDump();
220
-
221
- return(0);
222
- }
223
- #else
224
- #include <stdio.h>
225
- int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
226
- printf("%s : XPath/Debug support not compiled in\n", argv[0]);
227
- return(0);
228
- }
229
- #endif /* LIBXML_XPATH_ENABLED */
@@ -1,3770 +0,0 @@
1
- /*
2
- * xmllint.c : a small tester program for XML input.
3
- *
4
- * See Copyright for the status of this software.
5
- *
6
- * daniel@veillard.com
7
- */
8
-
9
- #include "libxml.h"
10
-
11
- #include <string.h>
12
- #include <stdarg.h>
13
- #include <assert.h>
14
-
15
- #if defined (_WIN32) && !defined(__CYGWIN__)
16
- #if defined (_MSC_VER) || defined(__BORLANDC__)
17
- #include <winsock2.h>
18
- #pragma comment(lib, "ws2_32.lib")
19
- #define gettimeofday(p1,p2)
20
- #endif /* _MSC_VER */
21
- #endif /* _WIN32 */
22
-
23
- #ifdef HAVE_SYS_TIME_H
24
- #include <sys/time.h>
25
- #endif
26
- #ifdef HAVE_TIME_H
27
- #include <time.h>
28
- #endif
29
-
30
- #ifdef __MINGW32__
31
- #define _WINSOCKAPI_
32
- #include <wsockcompat.h>
33
- #include <winsock2.h>
34
- #undef XML_SOCKLEN_T
35
- #define XML_SOCKLEN_T unsigned int
36
- #endif
37
-
38
- #ifdef HAVE_SYS_TIMEB_H
39
- #include <sys/timeb.h>
40
- #endif
41
-
42
- #ifdef HAVE_SYS_TYPES_H
43
- #include <sys/types.h>
44
- #endif
45
- #ifdef HAVE_SYS_STAT_H
46
- #include <sys/stat.h>
47
- #endif
48
- #ifdef HAVE_FCNTL_H
49
- #include <fcntl.h>
50
- #endif
51
- #ifdef HAVE_UNISTD_H
52
- #include <unistd.h>
53
- #endif
54
- #ifdef HAVE_SYS_MMAN_H
55
- #include <sys/mman.h>
56
- /* seems needed for Solaris */
57
- #ifndef MAP_FAILED
58
- #define MAP_FAILED ((void *) -1)
59
- #endif
60
- #endif
61
- #ifdef HAVE_STDLIB_H
62
- #include <stdlib.h>
63
- #endif
64
- #ifdef HAVE_LIBREADLINE
65
- #include <readline/readline.h>
66
- #ifdef HAVE_LIBHISTORY
67
- #include <readline/history.h>
68
- #endif
69
- #endif
70
-
71
- #include <libxml/xmlmemory.h>
72
- #include <libxml/parser.h>
73
- #include <libxml/parserInternals.h>
74
- #include <libxml/HTMLparser.h>
75
- #include <libxml/HTMLtree.h>
76
- #include <libxml/tree.h>
77
- #include <libxml/xpath.h>
78
- #include <libxml/debugXML.h>
79
- #include <libxml/xmlerror.h>
80
- #ifdef LIBXML_XINCLUDE_ENABLED
81
- #include <libxml/xinclude.h>
82
- #endif
83
- #ifdef LIBXML_CATALOG_ENABLED
84
- #include <libxml/catalog.h>
85
- #endif
86
- #include <libxml/globals.h>
87
- #include <libxml/xmlreader.h>
88
- #ifdef LIBXML_SCHEMATRON_ENABLED
89
- #include <libxml/schematron.h>
90
- #endif
91
- #ifdef LIBXML_SCHEMAS_ENABLED
92
- #include <libxml/relaxng.h>
93
- #include <libxml/xmlschemas.h>
94
- #endif
95
- #ifdef LIBXML_PATTERN_ENABLED
96
- #include <libxml/pattern.h>
97
- #endif
98
- #ifdef LIBXML_C14N_ENABLED
99
- #include <libxml/c14n.h>
100
- #endif
101
- #ifdef LIBXML_OUTPUT_ENABLED
102
- #include <libxml/xmlsave.h>
103
- #endif
104
-
105
- #ifndef XML_XML_DEFAULT_CATALOG
106
- #define XML_XML_DEFAULT_CATALOG "file:///etc/xml/catalog"
107
- #endif
108
-
109
- typedef enum {
110
- XMLLINT_RETURN_OK = 0, /* No error */
111
- XMLLINT_ERR_UNCLASS = 1, /* Unclassified */
112
- XMLLINT_ERR_DTD = 2, /* Error in DTD */
113
- XMLLINT_ERR_VALID = 3, /* Validation error */
114
- XMLLINT_ERR_RDFILE = 4, /* CtxtReadFile error */
115
- XMLLINT_ERR_SCHEMACOMP = 5, /* Schema compilation */
116
- XMLLINT_ERR_OUT = 6, /* Error writing output */
117
- XMLLINT_ERR_SCHEMAPAT = 7, /* Error in schema pattern */
118
- XMLLINT_ERR_RDREGIS = 8, /* Error in Reader registration */
119
- XMLLINT_ERR_MEM = 9, /* Out of memory error */
120
- XMLLINT_ERR_XPATH = 10 /* XPath evaluation error */
121
- } xmllintReturnCode;
122
- #ifdef LIBXML_DEBUG_ENABLED
123
- static int shell = 0;
124
- static int debugent = 0;
125
- #endif
126
- static int debug = 0;
127
- static int maxmem = 0;
128
- #ifdef LIBXML_TREE_ENABLED
129
- static int copy = 0;
130
- #endif /* LIBXML_TREE_ENABLED */
131
- static int recovery = 0;
132
- static int noent = 0;
133
- static int noenc = 0;
134
- static int noblanks = 0;
135
- static int noout = 0;
136
- static int nowrap = 0;
137
- #ifdef LIBXML_OUTPUT_ENABLED
138
- static int format = 0;
139
- static const char *output = NULL;
140
- static int compress = 0;
141
- static int oldout = 0;
142
- #endif /* LIBXML_OUTPUT_ENABLED */
143
- #ifdef LIBXML_VALID_ENABLED
144
- static int valid = 0;
145
- static int postvalid = 0;
146
- static char * dtdvalid = NULL;
147
- static char * dtdvalidfpi = NULL;
148
- #endif
149
- #ifdef LIBXML_SCHEMAS_ENABLED
150
- static char * relaxng = NULL;
151
- static xmlRelaxNGPtr relaxngschemas = NULL;
152
- static char * schema = NULL;
153
- static xmlSchemaPtr wxschemas = NULL;
154
- #endif
155
- #ifdef LIBXML_SCHEMATRON_ENABLED
156
- static char * schematron = NULL;
157
- static xmlSchematronPtr wxschematron = NULL;
158
- #endif
159
- static int repeat = 0;
160
- static int insert = 0;
161
- #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED)
162
- static int html = 0;
163
- static int xmlout = 0;
164
- #endif
165
- static int htmlout = 0;
166
- #if defined(LIBXML_HTML_ENABLED)
167
- static int nodefdtd = 0;
168
- #endif
169
- #ifdef LIBXML_PUSH_ENABLED
170
- static int push = 0;
171
- #endif /* LIBXML_PUSH_ENABLED */
172
- #ifdef HAVE_MMAP
173
- static int memory = 0;
174
- #endif
175
- static int testIO = 0;
176
- static char *encoding = NULL;
177
- #ifdef LIBXML_XINCLUDE_ENABLED
178
- static int xinclude = 0;
179
- #endif
180
- static int dtdattrs = 0;
181
- static int loaddtd = 0;
182
- static xmllintReturnCode progresult = XMLLINT_RETURN_OK;
183
- static int timing = 0;
184
- static int generate = 0;
185
- static int dropdtd = 0;
186
- #ifdef LIBXML_CATALOG_ENABLED
187
- static int catalogs = 0;
188
- static int nocatalogs = 0;
189
- #endif
190
- #ifdef LIBXML_C14N_ENABLED
191
- static int canonical = 0;
192
- static int canonical_11 = 0;
193
- static int exc_canonical = 0;
194
- #endif
195
- #ifdef LIBXML_READER_ENABLED
196
- static int stream = 0;
197
- static int walker = 0;
198
- #endif /* LIBXML_READER_ENABLED */
199
- static int chkregister = 0;
200
- static int nbregister = 0;
201
- #ifdef LIBXML_SAX1_ENABLED
202
- static int sax1 = 0;
203
- #endif /* LIBXML_SAX1_ENABLED */
204
- #ifdef LIBXML_PATTERN_ENABLED
205
- static const char *pattern = NULL;
206
- static xmlPatternPtr patternc = NULL;
207
- static xmlStreamCtxtPtr patstream = NULL;
208
- #endif
209
- #ifdef LIBXML_XPATH_ENABLED
210
- static const char *xpathquery = NULL;
211
- #endif
212
- static int options = XML_PARSE_COMPACT | XML_PARSE_BIG_LINES;
213
- static int sax = 0;
214
- static int oldxml10 = 0;
215
-
216
- /************************************************************************
217
- * *
218
- * Entity loading control and customization. *
219
- * *
220
- ************************************************************************/
221
- #define MAX_PATHS 64
222
- #ifdef _WIN32
223
- # define PATH_SEPARATOR ';'
224
- #else
225
- # define PATH_SEPARATOR ':'
226
- #endif
227
- static xmlChar *paths[MAX_PATHS + 1];
228
- static int nbpaths = 0;
229
- static int load_trace = 0;
230
-
231
- static
232
- void parsePath(const xmlChar *path) {
233
- const xmlChar *cur;
234
-
235
- if (path == NULL)
236
- return;
237
- while (*path != 0) {
238
- if (nbpaths >= MAX_PATHS) {
239
- fprintf(stderr, "MAX_PATHS reached: too many paths\n");
240
- return;
241
- }
242
- cur = path;
243
- while ((*cur == ' ') || (*cur == PATH_SEPARATOR))
244
- cur++;
245
- path = cur;
246
- while ((*cur != 0) && (*cur != ' ') && (*cur != PATH_SEPARATOR))
247
- cur++;
248
- if (cur != path) {
249
- paths[nbpaths] = xmlStrndup(path, cur - path);
250
- if (paths[nbpaths] != NULL)
251
- nbpaths++;
252
- path = cur;
253
- }
254
- }
255
- }
256
-
257
- static xmlExternalEntityLoader defaultEntityLoader = NULL;
258
-
259
- static xmlParserInputPtr
260
- xmllintExternalEntityLoader(const char *URL, const char *ID,
261
- xmlParserCtxtPtr ctxt) {
262
- xmlParserInputPtr ret;
263
- warningSAXFunc warning = NULL;
264
- errorSAXFunc err = NULL;
265
-
266
- int i;
267
- const char *lastsegment = URL;
268
- const char *iter = URL;
269
-
270
- if ((nbpaths > 0) && (iter != NULL)) {
271
- while (*iter != 0) {
272
- if (*iter == '/')
273
- lastsegment = iter + 1;
274
- iter++;
275
- }
276
- }
277
-
278
- if ((ctxt != NULL) && (ctxt->sax != NULL)) {
279
- warning = ctxt->sax->warning;
280
- err = ctxt->sax->error;
281
- ctxt->sax->warning = NULL;
282
- ctxt->sax->error = NULL;
283
- }
284
-
285
- if (defaultEntityLoader != NULL) {
286
- ret = defaultEntityLoader(URL, ID, ctxt);
287
- if (ret != NULL) {
288
- if (warning != NULL)
289
- ctxt->sax->warning = warning;
290
- if (err != NULL)
291
- ctxt->sax->error = err;
292
- if (load_trace) {
293
- fprintf \
294
- (stderr,
295
- "Loaded URL=\"%s\" ID=\"%s\"\n",
296
- URL ? URL : "(null)",
297
- ID ? ID : "(null)");
298
- }
299
- return(ret);
300
- }
301
- }
302
- for (i = 0;i < nbpaths;i++) {
303
- xmlChar *newURL;
304
-
305
- newURL = xmlStrdup((const xmlChar *) paths[i]);
306
- newURL = xmlStrcat(newURL, (const xmlChar *) "/");
307
- newURL = xmlStrcat(newURL, (const xmlChar *) lastsegment);
308
- if (newURL != NULL) {
309
- ret = defaultEntityLoader((const char *)newURL, ID, ctxt);
310
- if (ret != NULL) {
311
- if (warning != NULL)
312
- ctxt->sax->warning = warning;
313
- if (err != NULL)
314
- ctxt->sax->error = err;
315
- if (load_trace) {
316
- fprintf \
317
- (stderr,
318
- "Loaded URL=\"%s\" ID=\"%s\"\n",
319
- newURL,
320
- ID ? ID : "(null)");
321
- }
322
- xmlFree(newURL);
323
- return(ret);
324
- }
325
- xmlFree(newURL);
326
- }
327
- }
328
- if (err != NULL)
329
- ctxt->sax->error = err;
330
- if (warning != NULL) {
331
- ctxt->sax->warning = warning;
332
- if (URL != NULL)
333
- warning(ctxt, "failed to load external entity \"%s\"\n", URL);
334
- else if (ID != NULL)
335
- warning(ctxt, "failed to load external entity \"%s\"\n", ID);
336
- }
337
- return(NULL);
338
- }
339
- /************************************************************************
340
- * *
341
- * Memory allocation consumption debugging *
342
- * *
343
- ************************************************************************/
344
-
345
- static void
346
- OOM(void)
347
- {
348
- fprintf(stderr, "Ran out of memory needs > %d bytes\n", maxmem);
349
- progresult = XMLLINT_ERR_MEM;
350
- }
351
-
352
- static void
353
- myFreeFunc(void *mem)
354
- {
355
- xmlMemFree(mem);
356
- }
357
- static void *
358
- myMallocFunc(size_t size)
359
- {
360
- void *ret;
361
-
362
- ret = xmlMemMalloc(size);
363
- if (ret != NULL) {
364
- if (xmlMemUsed() > maxmem) {
365
- OOM();
366
- xmlMemFree(ret);
367
- return (NULL);
368
- }
369
- }
370
- return (ret);
371
- }
372
- static void *
373
- myReallocFunc(void *mem, size_t size)
374
- {
375
- void *ret;
376
-
377
- ret = xmlMemRealloc(mem, size);
378
- if (ret != NULL) {
379
- if (xmlMemUsed() > maxmem) {
380
- OOM();
381
- xmlMemFree(ret);
382
- return (NULL);
383
- }
384
- }
385
- return (ret);
386
- }
387
- static char *
388
- myStrdupFunc(const char *str)
389
- {
390
- char *ret;
391
-
392
- ret = xmlMemoryStrdup(str);
393
- if (ret != NULL) {
394
- if (xmlMemUsed() > maxmem) {
395
- OOM();
396
- xmlFree(ret);
397
- return (NULL);
398
- }
399
- }
400
- return (ret);
401
- }
402
- /************************************************************************
403
- * *
404
- * Internal timing routines to remove the necessity to have *
405
- * unix-specific function calls. *
406
- * *
407
- ************************************************************************/
408
-
409
- #ifndef HAVE_GETTIMEOFDAY
410
- #ifdef HAVE_SYS_TIMEB_H
411
- #ifdef HAVE_SYS_TIME_H
412
- #ifdef HAVE_FTIME
413
-
414
- static int
415
- my_gettimeofday(struct timeval *tvp, void *tzp)
416
- {
417
- struct timeb timebuffer;
418
-
419
- ftime(&timebuffer);
420
- if (tvp) {
421
- tvp->tv_sec = timebuffer.time;
422
- tvp->tv_usec = timebuffer.millitm * 1000L;
423
- }
424
- return (0);
425
- }
426
- #define HAVE_GETTIMEOFDAY 1
427
- #define gettimeofday my_gettimeofday
428
-
429
- #endif /* HAVE_FTIME */
430
- #endif /* HAVE_SYS_TIME_H */
431
- #endif /* HAVE_SYS_TIMEB_H */
432
- #endif /* !HAVE_GETTIMEOFDAY */
433
-
434
- #if defined(HAVE_GETTIMEOFDAY)
435
- static struct timeval begin, end;
436
-
437
- /*
438
- * startTimer: call where you want to start timing
439
- */
440
- static void
441
- startTimer(void)
442
- {
443
- gettimeofday(&begin, NULL);
444
- }
445
-
446
- /*
447
- * endTimer: call where you want to stop timing and to print out a
448
- * message about the timing performed; format is a printf
449
- * type argument
450
- */
451
- static void XMLCDECL
452
- endTimer(const char *fmt, ...)
453
- {
454
- long msec;
455
- va_list ap;
456
-
457
- gettimeofday(&end, NULL);
458
- msec = end.tv_sec - begin.tv_sec;
459
- msec *= 1000;
460
- msec += (end.tv_usec - begin.tv_usec) / 1000;
461
-
462
- #ifndef HAVE_STDARG_H
463
- #error "endTimer required stdarg functions"
464
- #endif
465
- va_start(ap, fmt);
466
- vfprintf(stderr, fmt, ap);
467
- va_end(ap);
468
-
469
- fprintf(stderr, " took %ld ms\n", msec);
470
- }
471
- #elif defined(HAVE_TIME_H)
472
- /*
473
- * No gettimeofday function, so we have to make do with calling clock.
474
- * This is obviously less accurate, but there's little we can do about
475
- * that.
476
- */
477
- #ifndef CLOCKS_PER_SEC
478
- #define CLOCKS_PER_SEC 100
479
- #endif
480
-
481
- static clock_t begin, end;
482
- static void
483
- startTimer(void)
484
- {
485
- begin = clock();
486
- }
487
- static void XMLCDECL
488
- endTimer(const char *fmt, ...)
489
- {
490
- long msec;
491
- va_list ap;
492
-
493
- end = clock();
494
- msec = ((end - begin) * 1000) / CLOCKS_PER_SEC;
495
-
496
- #ifndef HAVE_STDARG_H
497
- #error "endTimer required stdarg functions"
498
- #endif
499
- va_start(ap, fmt);
500
- vfprintf(stderr, fmt, ap);
501
- va_end(ap);
502
- fprintf(stderr, " took %ld ms\n", msec);
503
- }
504
- #else
505
-
506
- /*
507
- * We don't have a gettimeofday or time.h, so we just don't do timing
508
- */
509
- static void
510
- startTimer(void)
511
- {
512
- /*
513
- * Do nothing
514
- */
515
- }
516
- static void XMLCDECL
517
- endTimer(char *format, ...)
518
- {
519
- /*
520
- * We cannot do anything because we don't have a timing function
521
- */
522
- #ifdef HAVE_STDARG_H
523
- va_list ap;
524
- va_start(ap, format);
525
- vfprintf(stderr, format, ap);
526
- va_end(ap);
527
- fprintf(stderr, " was not timed\n");
528
- #else
529
- /* We don't have gettimeofday, time or stdarg.h, what crazy world is
530
- * this ?!
531
- */
532
- #endif
533
- }
534
- #endif
535
- /************************************************************************
536
- * *
537
- * HTML ouput *
538
- * *
539
- ************************************************************************/
540
- static char buffer[50000];
541
-
542
- static void
543
- xmlHTMLEncodeSend(void) {
544
- char *result;
545
-
546
- result = (char *) xmlEncodeEntitiesReentrant(NULL, BAD_CAST buffer);
547
- if (result) {
548
- xmlGenericError(xmlGenericErrorContext, "%s", result);
549
- xmlFree(result);
550
- }
551
- buffer[0] = 0;
552
- }
553
-
554
- /**
555
- * xmlHTMLPrintFileInfo:
556
- * @input: an xmlParserInputPtr input
557
- *
558
- * Displays the associated file and line informations for the current input
559
- */
560
-
561
- static void
562
- xmlHTMLPrintFileInfo(xmlParserInputPtr input) {
563
- int len;
564
- xmlGenericError(xmlGenericErrorContext, "<p>");
565
-
566
- len = strlen(buffer);
567
- if (input != NULL) {
568
- if (input->filename) {
569
- snprintf(&buffer[len], sizeof(buffer) - len, "%s:%d: ", input->filename,
570
- input->line);
571
- } else {
572
- snprintf(&buffer[len], sizeof(buffer) - len, "Entity: line %d: ", input->line);
573
- }
574
- }
575
- xmlHTMLEncodeSend();
576
- }
577
-
578
- /**
579
- * xmlHTMLPrintFileContext:
580
- * @input: an xmlParserInputPtr input
581
- *
582
- * Displays current context within the input content for error tracking
583
- */
584
-
585
- static void
586
- xmlHTMLPrintFileContext(xmlParserInputPtr input) {
587
- const xmlChar *cur, *base;
588
- int len;
589
- int n;
590
-
591
- if (input == NULL) return;
592
- xmlGenericError(xmlGenericErrorContext, "<pre>\n");
593
- cur = input->cur;
594
- base = input->base;
595
- while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) {
596
- cur--;
597
- }
598
- n = 0;
599
- while ((n++ < 80) && (cur > base) && (*cur != '\n') && (*cur != '\r'))
600
- cur--;
601
- if ((*cur == '\n') || (*cur == '\r')) cur++;
602
- base = cur;
603
- n = 0;
604
- while ((*cur != 0) && (*cur != '\n') && (*cur != '\r') && (n < 79)) {
605
- len = strlen(buffer);
606
- snprintf(&buffer[len], sizeof(buffer) - len, "%c",
607
- (unsigned char) *cur++);
608
- n++;
609
- }
610
- len = strlen(buffer);
611
- snprintf(&buffer[len], sizeof(buffer) - len, "\n");
612
- cur = input->cur;
613
- while ((*cur == '\n') || (*cur == '\r'))
614
- cur--;
615
- n = 0;
616
- while ((cur != base) && (n++ < 80)) {
617
- len = strlen(buffer);
618
- snprintf(&buffer[len], sizeof(buffer) - len, " ");
619
- base++;
620
- }
621
- len = strlen(buffer);
622
- snprintf(&buffer[len], sizeof(buffer) - len, "^\n");
623
- xmlHTMLEncodeSend();
624
- xmlGenericError(xmlGenericErrorContext, "</pre>");
625
- }
626
-
627
- /**
628
- * xmlHTMLError:
629
- * @ctx: an XML parser context
630
- * @msg: the message to display/transmit
631
- * @...: extra parameters for the message display
632
- *
633
- * Display and format an error messages, gives file, line, position and
634
- * extra parameters.
635
- */
636
- static void XMLCDECL
637
- xmlHTMLError(void *ctx, const char *msg, ...)
638
- {
639
- xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
640
- xmlParserInputPtr input;
641
- va_list args;
642
- int len;
643
-
644
- buffer[0] = 0;
645
- input = ctxt->input;
646
- if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
647
- input = ctxt->inputTab[ctxt->inputNr - 2];
648
- }
649
-
650
- xmlHTMLPrintFileInfo(input);
651
-
652
- xmlGenericError(xmlGenericErrorContext, "<b>error</b>: ");
653
- va_start(args, msg);
654
- len = strlen(buffer);
655
- vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args);
656
- va_end(args);
657
- xmlHTMLEncodeSend();
658
- xmlGenericError(xmlGenericErrorContext, "</p>\n");
659
-
660
- xmlHTMLPrintFileContext(input);
661
- xmlHTMLEncodeSend();
662
- }
663
-
664
- /**
665
- * xmlHTMLWarning:
666
- * @ctx: an XML parser context
667
- * @msg: the message to display/transmit
668
- * @...: extra parameters for the message display
669
- *
670
- * Display and format a warning messages, gives file, line, position and
671
- * extra parameters.
672
- */
673
- static void XMLCDECL
674
- xmlHTMLWarning(void *ctx, const char *msg, ...)
675
- {
676
- xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
677
- xmlParserInputPtr input;
678
- va_list args;
679
- int len;
680
-
681
- buffer[0] = 0;
682
- input = ctxt->input;
683
- if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
684
- input = ctxt->inputTab[ctxt->inputNr - 2];
685
- }
686
-
687
-
688
- xmlHTMLPrintFileInfo(input);
689
-
690
- xmlGenericError(xmlGenericErrorContext, "<b>warning</b>: ");
691
- va_start(args, msg);
692
- len = strlen(buffer);
693
- vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args);
694
- va_end(args);
695
- xmlHTMLEncodeSend();
696
- xmlGenericError(xmlGenericErrorContext, "</p>\n");
697
-
698
- xmlHTMLPrintFileContext(input);
699
- xmlHTMLEncodeSend();
700
- }
701
-
702
- /**
703
- * xmlHTMLValidityError:
704
- * @ctx: an XML parser context
705
- * @msg: the message to display/transmit
706
- * @...: extra parameters for the message display
707
- *
708
- * Display and format an validity error messages, gives file,
709
- * line, position and extra parameters.
710
- */
711
- static void XMLCDECL
712
- xmlHTMLValidityError(void *ctx, const char *msg, ...)
713
- {
714
- xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
715
- xmlParserInputPtr input;
716
- va_list args;
717
- int len;
718
-
719
- buffer[0] = 0;
720
- input = ctxt->input;
721
- if ((input->filename == NULL) && (ctxt->inputNr > 1))
722
- input = ctxt->inputTab[ctxt->inputNr - 2];
723
-
724
- xmlHTMLPrintFileInfo(input);
725
-
726
- xmlGenericError(xmlGenericErrorContext, "<b>validity error</b>: ");
727
- len = strlen(buffer);
728
- va_start(args, msg);
729
- vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args);
730
- va_end(args);
731
- xmlHTMLEncodeSend();
732
- xmlGenericError(xmlGenericErrorContext, "</p>\n");
733
-
734
- xmlHTMLPrintFileContext(input);
735
- xmlHTMLEncodeSend();
736
- progresult = XMLLINT_ERR_VALID;
737
- }
738
-
739
- /**
740
- * xmlHTMLValidityWarning:
741
- * @ctx: an XML parser context
742
- * @msg: the message to display/transmit
743
- * @...: extra parameters for the message display
744
- *
745
- * Display and format a validity warning messages, gives file, line,
746
- * position and extra parameters.
747
- */
748
- static void XMLCDECL
749
- xmlHTMLValidityWarning(void *ctx, const char *msg, ...)
750
- {
751
- xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
752
- xmlParserInputPtr input;
753
- va_list args;
754
- int len;
755
-
756
- buffer[0] = 0;
757
- input = ctxt->input;
758
- if ((input->filename == NULL) && (ctxt->inputNr > 1))
759
- input = ctxt->inputTab[ctxt->inputNr - 2];
760
-
761
- xmlHTMLPrintFileInfo(input);
762
-
763
- xmlGenericError(xmlGenericErrorContext, "<b>validity warning</b>: ");
764
- va_start(args, msg);
765
- len = strlen(buffer);
766
- vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args);
767
- va_end(args);
768
- xmlHTMLEncodeSend();
769
- xmlGenericError(xmlGenericErrorContext, "</p>\n");
770
-
771
- xmlHTMLPrintFileContext(input);
772
- xmlHTMLEncodeSend();
773
- }
774
-
775
- /************************************************************************
776
- * *
777
- * Shell Interface *
778
- * *
779
- ************************************************************************/
780
- #ifdef LIBXML_DEBUG_ENABLED
781
- #ifdef LIBXML_XPATH_ENABLED
782
- /**
783
- * xmlShellReadline:
784
- * @prompt: the prompt value
785
- *
786
- * Read a string
787
- *
788
- * Returns a pointer to it or NULL on EOF the caller is expected to
789
- * free the returned string.
790
- */
791
- static char *
792
- xmlShellReadline(char *prompt) {
793
- #ifdef HAVE_LIBREADLINE
794
- char *line_read;
795
-
796
- /* Get a line from the user. */
797
- line_read = readline (prompt);
798
-
799
- /* If the line has any text in it, save it on the history. */
800
- if (line_read && *line_read)
801
- add_history (line_read);
802
-
803
- return (line_read);
804
- #else
805
- char line_read[501];
806
- char *ret;
807
- int len;
808
-
809
- if (prompt != NULL)
810
- fprintf(stdout, "%s", prompt);
811
- if (!fgets(line_read, 500, stdin))
812
- return(NULL);
813
- line_read[500] = 0;
814
- len = strlen(line_read);
815
- ret = (char *) malloc(len + 1);
816
- if (ret != NULL) {
817
- memcpy (ret, line_read, len + 1);
818
- }
819
- return(ret);
820
- #endif
821
- }
822
- #endif /* LIBXML_XPATH_ENABLED */
823
- #endif /* LIBXML_DEBUG_ENABLED */
824
-
825
- /************************************************************************
826
- * *
827
- * I/O Interfaces *
828
- * *
829
- ************************************************************************/
830
-
831
- static int myRead(FILE *f, char * buf, int len) {
832
- return(fread(buf, 1, len, f));
833
- }
834
- static void myClose(FILE *f) {
835
- if (f != stdin) {
836
- fclose(f);
837
- }
838
- }
839
-
840
- /************************************************************************
841
- * *
842
- * SAX based tests *
843
- * *
844
- ************************************************************************/
845
-
846
- /*
847
- * empty SAX block
848
- */
849
- static xmlSAXHandler emptySAXHandlerStruct = {
850
- NULL, /* internalSubset */
851
- NULL, /* isStandalone */
852
- NULL, /* hasInternalSubset */
853
- NULL, /* hasExternalSubset */
854
- NULL, /* resolveEntity */
855
- NULL, /* getEntity */
856
- NULL, /* entityDecl */
857
- NULL, /* notationDecl */
858
- NULL, /* attributeDecl */
859
- NULL, /* elementDecl */
860
- NULL, /* unparsedEntityDecl */
861
- NULL, /* setDocumentLocator */
862
- NULL, /* startDocument */
863
- NULL, /* endDocument */
864
- NULL, /* startElement */
865
- NULL, /* endElement */
866
- NULL, /* reference */
867
- NULL, /* characters */
868
- NULL, /* ignorableWhitespace */
869
- NULL, /* processingInstruction */
870
- NULL, /* comment */
871
- NULL, /* xmlParserWarning */
872
- NULL, /* xmlParserError */
873
- NULL, /* xmlParserError */
874
- NULL, /* getParameterEntity */
875
- NULL, /* cdataBlock; */
876
- NULL, /* externalSubset; */
877
- XML_SAX2_MAGIC,
878
- NULL,
879
- NULL, /* startElementNs */
880
- NULL, /* endElementNs */
881
- NULL /* xmlStructuredErrorFunc */
882
- };
883
-
884
- static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct;
885
- extern xmlSAXHandlerPtr debugSAXHandler;
886
- static int callbacks;
887
-
888
- /**
889
- * isStandaloneDebug:
890
- * @ctxt: An XML parser context
891
- *
892
- * Is this document tagged standalone ?
893
- *
894
- * Returns 1 if true
895
- */
896
- static int
897
- isStandaloneDebug(void *ctx ATTRIBUTE_UNUSED)
898
- {
899
- callbacks++;
900
- if (noout)
901
- return(0);
902
- fprintf(stdout, "SAX.isStandalone()\n");
903
- return(0);
904
- }
905
-
906
- /**
907
- * hasInternalSubsetDebug:
908
- * @ctxt: An XML parser context
909
- *
910
- * Does this document has an internal subset
911
- *
912
- * Returns 1 if true
913
- */
914
- static int
915
- hasInternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
916
- {
917
- callbacks++;
918
- if (noout)
919
- return(0);
920
- fprintf(stdout, "SAX.hasInternalSubset()\n");
921
- return(0);
922
- }
923
-
924
- /**
925
- * hasExternalSubsetDebug:
926
- * @ctxt: An XML parser context
927
- *
928
- * Does this document has an external subset
929
- *
930
- * Returns 1 if true
931
- */
932
- static int
933
- hasExternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
934
- {
935
- callbacks++;
936
- if (noout)
937
- return(0);
938
- fprintf(stdout, "SAX.hasExternalSubset()\n");
939
- return(0);
940
- }
941
-
942
- /**
943
- * internalSubsetDebug:
944
- * @ctxt: An XML parser context
945
- *
946
- * Does this document has an internal subset
947
- */
948
- static void
949
- internalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
950
- const xmlChar *ExternalID, const xmlChar *SystemID)
951
- {
952
- callbacks++;
953
- if (noout)
954
- return;
955
- fprintf(stdout, "SAX.internalSubset(%s,", name);
956
- if (ExternalID == NULL)
957
- fprintf(stdout, " ,");
958
- else
959
- fprintf(stdout, " %s,", ExternalID);
960
- if (SystemID == NULL)
961
- fprintf(stdout, " )\n");
962
- else
963
- fprintf(stdout, " %s)\n", SystemID);
964
- }
965
-
966
- /**
967
- * externalSubsetDebug:
968
- * @ctxt: An XML parser context
969
- *
970
- * Does this document has an external subset
971
- */
972
- static void
973
- externalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
974
- const xmlChar *ExternalID, const xmlChar *SystemID)
975
- {
976
- callbacks++;
977
- if (noout)
978
- return;
979
- fprintf(stdout, "SAX.externalSubset(%s,", name);
980
- if (ExternalID == NULL)
981
- fprintf(stdout, " ,");
982
- else
983
- fprintf(stdout, " %s,", ExternalID);
984
- if (SystemID == NULL)
985
- fprintf(stdout, " )\n");
986
- else
987
- fprintf(stdout, " %s)\n", SystemID);
988
- }
989
-
990
- /**
991
- * resolveEntityDebug:
992
- * @ctxt: An XML parser context
993
- * @publicId: The public ID of the entity
994
- * @systemId: The system ID of the entity
995
- *
996
- * Special entity resolver, better left to the parser, it has
997
- * more context than the application layer.
998
- * The default behaviour is to NOT resolve the entities, in that case
999
- * the ENTITY_REF nodes are built in the structure (and the parameter
1000
- * values).
1001
- *
1002
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
1003
- */
1004
- static xmlParserInputPtr
1005
- resolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xmlChar *systemId)
1006
- {
1007
- callbacks++;
1008
- if (noout)
1009
- return(NULL);
1010
- /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
1011
-
1012
-
1013
- fprintf(stdout, "SAX.resolveEntity(");
1014
- if (publicId != NULL)
1015
- fprintf(stdout, "%s", (char *)publicId);
1016
- else
1017
- fprintf(stdout, " ");
1018
- if (systemId != NULL)
1019
- fprintf(stdout, ", %s)\n", (char *)systemId);
1020
- else
1021
- fprintf(stdout, ", )\n");
1022
- return(NULL);
1023
- }
1024
-
1025
- /**
1026
- * getEntityDebug:
1027
- * @ctxt: An XML parser context
1028
- * @name: The entity name
1029
- *
1030
- * Get an entity by name
1031
- *
1032
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
1033
- */
1034
- static xmlEntityPtr
1035
- getEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
1036
- {
1037
- callbacks++;
1038
- if (noout)
1039
- return(NULL);
1040
- fprintf(stdout, "SAX.getEntity(%s)\n", name);
1041
- return(NULL);
1042
- }
1043
-
1044
- /**
1045
- * getParameterEntityDebug:
1046
- * @ctxt: An XML parser context
1047
- * @name: The entity name
1048
- *
1049
- * Get a parameter entity by name
1050
- *
1051
- * Returns the xmlParserInputPtr
1052
- */
1053
- static xmlEntityPtr
1054
- getParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
1055
- {
1056
- callbacks++;
1057
- if (noout)
1058
- return(NULL);
1059
- fprintf(stdout, "SAX.getParameterEntity(%s)\n", name);
1060
- return(NULL);
1061
- }
1062
-
1063
-
1064
- /**
1065
- * entityDeclDebug:
1066
- * @ctxt: An XML parser context
1067
- * @name: the entity name
1068
- * @type: the entity type
1069
- * @publicId: The public ID of the entity
1070
- * @systemId: The system ID of the entity
1071
- * @content: the entity value (without processing).
1072
- *
1073
- * An entity definition has been parsed
1074
- */
1075
- static void
1076
- entityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
1077
- const xmlChar *publicId, const xmlChar *systemId, xmlChar *content)
1078
- {
1079
- const xmlChar *nullstr = BAD_CAST "(null)";
1080
- /* not all libraries handle printing null pointers nicely */
1081
- if (publicId == NULL)
1082
- publicId = nullstr;
1083
- if (systemId == NULL)
1084
- systemId = nullstr;
1085
- if (content == NULL)
1086
- content = (xmlChar *)nullstr;
1087
- callbacks++;
1088
- if (noout)
1089
- return;
1090
- fprintf(stdout, "SAX.entityDecl(%s, %d, %s, %s, %s)\n",
1091
- name, type, publicId, systemId, content);
1092
- }
1093
-
1094
- /**
1095
- * attributeDeclDebug:
1096
- * @ctxt: An XML parser context
1097
- * @name: the attribute name
1098
- * @type: the attribute type
1099
- *
1100
- * An attribute definition has been parsed
1101
- */
1102
- static void
1103
- attributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar * elem,
1104
- const xmlChar * name, int type, int def,
1105
- const xmlChar * defaultValue, xmlEnumerationPtr tree)
1106
- {
1107
- callbacks++;
1108
- if (noout)
1109
- return;
1110
- if (defaultValue == NULL)
1111
- fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, NULL, ...)\n",
1112
- elem, name, type, def);
1113
- else
1114
- fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, %s, ...)\n",
1115
- elem, name, type, def, defaultValue);
1116
- xmlFreeEnumeration(tree);
1117
- }
1118
-
1119
- /**
1120
- * elementDeclDebug:
1121
- * @ctxt: An XML parser context
1122
- * @name: the element name
1123
- * @type: the element type
1124
- * @content: the element value (without processing).
1125
- *
1126
- * An element definition has been parsed
1127
- */
1128
- static void
1129
- elementDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
1130
- xmlElementContentPtr content ATTRIBUTE_UNUSED)
1131
- {
1132
- callbacks++;
1133
- if (noout)
1134
- return;
1135
- fprintf(stdout, "SAX.elementDecl(%s, %d, ...)\n",
1136
- name, type);
1137
- }
1138
-
1139
- /**
1140
- * notationDeclDebug:
1141
- * @ctxt: An XML parser context
1142
- * @name: The name of the notation
1143
- * @publicId: The public ID of the entity
1144
- * @systemId: The system ID of the entity
1145
- *
1146
- * What to do when a notation declaration has been parsed.
1147
- */
1148
- static void
1149
- notationDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
1150
- const xmlChar *publicId, const xmlChar *systemId)
1151
- {
1152
- callbacks++;
1153
- if (noout)
1154
- return;
1155
- fprintf(stdout, "SAX.notationDecl(%s, %s, %s)\n",
1156
- (char *) name, (char *) publicId, (char *) systemId);
1157
- }
1158
-
1159
- /**
1160
- * unparsedEntityDeclDebug:
1161
- * @ctxt: An XML parser context
1162
- * @name: The name of the entity
1163
- * @publicId: The public ID of the entity
1164
- * @systemId: The system ID of the entity
1165
- * @notationName: the name of the notation
1166
- *
1167
- * What to do when an unparsed entity declaration is parsed
1168
- */
1169
- static void
1170
- unparsedEntityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
1171
- const xmlChar *publicId, const xmlChar *systemId,
1172
- const xmlChar *notationName)
1173
- {
1174
- const xmlChar *nullstr = BAD_CAST "(null)";
1175
-
1176
- if (publicId == NULL)
1177
- publicId = nullstr;
1178
- if (systemId == NULL)
1179
- systemId = nullstr;
1180
- if (notationName == NULL)
1181
- notationName = nullstr;
1182
- callbacks++;
1183
- if (noout)
1184
- return;
1185
- fprintf(stdout, "SAX.unparsedEntityDecl(%s, %s, %s, %s)\n",
1186
- (char *) name, (char *) publicId, (char *) systemId,
1187
- (char *) notationName);
1188
- }
1189
-
1190
- /**
1191
- * setDocumentLocatorDebug:
1192
- * @ctxt: An XML parser context
1193
- * @loc: A SAX Locator
1194
- *
1195
- * Receive the document locator at startup, actually xmlDefaultSAXLocator
1196
- * Everything is available on the context, so this is useless in our case.
1197
- */
1198
- static void
1199
- setDocumentLocatorDebug(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
1200
- {
1201
- callbacks++;
1202
- if (noout)
1203
- return;
1204
- fprintf(stdout, "SAX.setDocumentLocator()\n");
1205
- }
1206
-
1207
- /**
1208
- * startDocumentDebug:
1209
- * @ctxt: An XML parser context
1210
- *
1211
- * called when the document start being processed.
1212
- */
1213
- static void
1214
- startDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
1215
- {
1216
- callbacks++;
1217
- if (noout)
1218
- return;
1219
- fprintf(stdout, "SAX.startDocument()\n");
1220
- }
1221
-
1222
- /**
1223
- * endDocumentDebug:
1224
- * @ctxt: An XML parser context
1225
- *
1226
- * called when the document end has been detected.
1227
- */
1228
- static void
1229
- endDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
1230
- {
1231
- callbacks++;
1232
- if (noout)
1233
- return;
1234
- fprintf(stdout, "SAX.endDocument()\n");
1235
- }
1236
-
1237
- /**
1238
- * startElementDebug:
1239
- * @ctxt: An XML parser context
1240
- * @name: The element name
1241
- *
1242
- * called when an opening tag has been processed.
1243
- */
1244
- static void
1245
- startElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts)
1246
- {
1247
- int i;
1248
-
1249
- callbacks++;
1250
- if (noout)
1251
- return;
1252
- fprintf(stdout, "SAX.startElement(%s", (char *) name);
1253
- if (atts != NULL) {
1254
- for (i = 0;(atts[i] != NULL);i++) {
1255
- fprintf(stdout, ", %s='", atts[i++]);
1256
- if (atts[i] != NULL)
1257
- fprintf(stdout, "%s'", atts[i]);
1258
- }
1259
- }
1260
- fprintf(stdout, ")\n");
1261
- }
1262
-
1263
- /**
1264
- * endElementDebug:
1265
- * @ctxt: An XML parser context
1266
- * @name: The element name
1267
- *
1268
- * called when the end of an element has been detected.
1269
- */
1270
- static void
1271
- endElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
1272
- {
1273
- callbacks++;
1274
- if (noout)
1275
- return;
1276
- fprintf(stdout, "SAX.endElement(%s)\n", (char *) name);
1277
- }
1278
-
1279
- /**
1280
- * charactersDebug:
1281
- * @ctxt: An XML parser context
1282
- * @ch: a xmlChar string
1283
- * @len: the number of xmlChar
1284
- *
1285
- * receiving some chars from the parser.
1286
- * Question: how much at a time ???
1287
- */
1288
- static void
1289
- charactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
1290
- {
1291
- char out[40];
1292
- int i;
1293
-
1294
- callbacks++;
1295
- if (noout)
1296
- return;
1297
- for (i = 0;(i<len) && (i < 30);i++)
1298
- out[i] = ch[i];
1299
- out[i] = 0;
1300
-
1301
- fprintf(stdout, "SAX.characters(%s, %d)\n", out, len);
1302
- }
1303
-
1304
- /**
1305
- * referenceDebug:
1306
- * @ctxt: An XML parser context
1307
- * @name: The entity name
1308
- *
1309
- * called when an entity reference is detected.
1310
- */
1311
- static void
1312
- referenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
1313
- {
1314
- callbacks++;
1315
- if (noout)
1316
- return;
1317
- fprintf(stdout, "SAX.reference(%s)\n", name);
1318
- }
1319
-
1320
- /**
1321
- * ignorableWhitespaceDebug:
1322
- * @ctxt: An XML parser context
1323
- * @ch: a xmlChar string
1324
- * @start: the first char in the string
1325
- * @len: the number of xmlChar
1326
- *
1327
- * receiving some ignorable whitespaces from the parser.
1328
- * Question: how much at a time ???
1329
- */
1330
- static void
1331
- ignorableWhitespaceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
1332
- {
1333
- char out[40];
1334
- int i;
1335
-
1336
- callbacks++;
1337
- if (noout)
1338
- return;
1339
- for (i = 0;(i<len) && (i < 30);i++)
1340
- out[i] = ch[i];
1341
- out[i] = 0;
1342
- fprintf(stdout, "SAX.ignorableWhitespace(%s, %d)\n", out, len);
1343
- }
1344
-
1345
- /**
1346
- * processingInstructionDebug:
1347
- * @ctxt: An XML parser context
1348
- * @target: the target name
1349
- * @data: the PI data's
1350
- * @len: the number of xmlChar
1351
- *
1352
- * A processing instruction has been parsed.
1353
- */
1354
- static void
1355
- processingInstructionDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *target,
1356
- const xmlChar *data)
1357
- {
1358
- callbacks++;
1359
- if (noout)
1360
- return;
1361
- if (data != NULL)
1362
- fprintf(stdout, "SAX.processingInstruction(%s, %s)\n",
1363
- (char *) target, (char *) data);
1364
- else
1365
- fprintf(stdout, "SAX.processingInstruction(%s, NULL)\n",
1366
- (char *) target);
1367
- }
1368
-
1369
- /**
1370
- * cdataBlockDebug:
1371
- * @ctx: the user data (XML parser context)
1372
- * @value: The pcdata content
1373
- * @len: the block length
1374
- *
1375
- * called when a pcdata block has been parsed
1376
- */
1377
- static void
1378
- cdataBlockDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value, int len)
1379
- {
1380
- callbacks++;
1381
- if (noout)
1382
- return;
1383
- fprintf(stdout, "SAX.pcdata(%.20s, %d)\n",
1384
- (char *) value, len);
1385
- }
1386
-
1387
- /**
1388
- * commentDebug:
1389
- * @ctxt: An XML parser context
1390
- * @value: the comment content
1391
- *
1392
- * A comment has been parsed.
1393
- */
1394
- static void
1395
- commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value)
1396
- {
1397
- callbacks++;
1398
- if (noout)
1399
- return;
1400
- fprintf(stdout, "SAX.comment(%s)\n", value);
1401
- }
1402
-
1403
- /**
1404
- * warningDebug:
1405
- * @ctxt: An XML parser context
1406
- * @msg: the message to display/transmit
1407
- * @...: extra parameters for the message display
1408
- *
1409
- * Display and format a warning messages, gives file, line, position and
1410
- * extra parameters.
1411
- */
1412
- static void XMLCDECL
1413
- warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
1414
- {
1415
- va_list args;
1416
-
1417
- callbacks++;
1418
- if (noout)
1419
- return;
1420
- va_start(args, msg);
1421
- fprintf(stdout, "SAX.warning: ");
1422
- vfprintf(stdout, msg, args);
1423
- va_end(args);
1424
- }
1425
-
1426
- /**
1427
- * errorDebug:
1428
- * @ctxt: An XML parser context
1429
- * @msg: the message to display/transmit
1430
- * @...: extra parameters for the message display
1431
- *
1432
- * Display and format a error messages, gives file, line, position and
1433
- * extra parameters.
1434
- */
1435
- static void XMLCDECL
1436
- errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
1437
- {
1438
- va_list args;
1439
-
1440
- callbacks++;
1441
- if (noout)
1442
- return;
1443
- va_start(args, msg);
1444
- fprintf(stdout, "SAX.error: ");
1445
- vfprintf(stdout, msg, args);
1446
- va_end(args);
1447
- }
1448
-
1449
- /**
1450
- * fatalErrorDebug:
1451
- * @ctxt: An XML parser context
1452
- * @msg: the message to display/transmit
1453
- * @...: extra parameters for the message display
1454
- *
1455
- * Display and format a fatalError messages, gives file, line, position and
1456
- * extra parameters.
1457
- */
1458
- static void XMLCDECL
1459
- fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
1460
- {
1461
- va_list args;
1462
-
1463
- callbacks++;
1464
- if (noout)
1465
- return;
1466
- va_start(args, msg);
1467
- fprintf(stdout, "SAX.fatalError: ");
1468
- vfprintf(stdout, msg, args);
1469
- va_end(args);
1470
- }
1471
-
1472
- static xmlSAXHandler debugSAXHandlerStruct = {
1473
- internalSubsetDebug,
1474
- isStandaloneDebug,
1475
- hasInternalSubsetDebug,
1476
- hasExternalSubsetDebug,
1477
- resolveEntityDebug,
1478
- getEntityDebug,
1479
- entityDeclDebug,
1480
- notationDeclDebug,
1481
- attributeDeclDebug,
1482
- elementDeclDebug,
1483
- unparsedEntityDeclDebug,
1484
- setDocumentLocatorDebug,
1485
- startDocumentDebug,
1486
- endDocumentDebug,
1487
- startElementDebug,
1488
- endElementDebug,
1489
- referenceDebug,
1490
- charactersDebug,
1491
- ignorableWhitespaceDebug,
1492
- processingInstructionDebug,
1493
- commentDebug,
1494
- warningDebug,
1495
- errorDebug,
1496
- fatalErrorDebug,
1497
- getParameterEntityDebug,
1498
- cdataBlockDebug,
1499
- externalSubsetDebug,
1500
- 1,
1501
- NULL,
1502
- NULL,
1503
- NULL,
1504
- NULL
1505
- };
1506
-
1507
- xmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct;
1508
-
1509
- /*
1510
- * SAX2 specific callbacks
1511
- */
1512
- /**
1513
- * startElementNsDebug:
1514
- * @ctxt: An XML parser context
1515
- * @name: The element name
1516
- *
1517
- * called when an opening tag has been processed.
1518
- */
1519
- static void
1520
- startElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
1521
- const xmlChar *localname,
1522
- const xmlChar *prefix,
1523
- const xmlChar *URI,
1524
- int nb_namespaces,
1525
- const xmlChar **namespaces,
1526
- int nb_attributes,
1527
- int nb_defaulted,
1528
- const xmlChar **attributes)
1529
- {
1530
- int i;
1531
-
1532
- callbacks++;
1533
- if (noout)
1534
- return;
1535
- fprintf(stdout, "SAX.startElementNs(%s", (char *) localname);
1536
- if (prefix == NULL)
1537
- fprintf(stdout, ", NULL");
1538
- else
1539
- fprintf(stdout, ", %s", (char *) prefix);
1540
- if (URI == NULL)
1541
- fprintf(stdout, ", NULL");
1542
- else
1543
- fprintf(stdout, ", '%s'", (char *) URI);
1544
- fprintf(stdout, ", %d", nb_namespaces);
1545
-
1546
- if (namespaces != NULL) {
1547
- for (i = 0;i < nb_namespaces * 2;i++) {
1548
- fprintf(stdout, ", xmlns");
1549
- if (namespaces[i] != NULL)
1550
- fprintf(stdout, ":%s", namespaces[i]);
1551
- i++;
1552
- fprintf(stdout, "='%s'", namespaces[i]);
1553
- }
1554
- }
1555
- fprintf(stdout, ", %d, %d", nb_attributes, nb_defaulted);
1556
- if (attributes != NULL) {
1557
- for (i = 0;i < nb_attributes * 5;i += 5) {
1558
- if (attributes[i + 1] != NULL)
1559
- fprintf(stdout, ", %s:%s='", attributes[i + 1], attributes[i]);
1560
- else
1561
- fprintf(stdout, ", %s='", attributes[i]);
1562
- fprintf(stdout, "%.4s...', %d", attributes[i + 3],
1563
- (int)(attributes[i + 4] - attributes[i + 3]));
1564
- }
1565
- }
1566
- fprintf(stdout, ")\n");
1567
- }
1568
-
1569
- /**
1570
- * endElementDebug:
1571
- * @ctxt: An XML parser context
1572
- * @name: The element name
1573
- *
1574
- * called when the end of an element has been detected.
1575
- */
1576
- static void
1577
- endElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
1578
- const xmlChar *localname,
1579
- const xmlChar *prefix,
1580
- const xmlChar *URI)
1581
- {
1582
- callbacks++;
1583
- if (noout)
1584
- return;
1585
- fprintf(stdout, "SAX.endElementNs(%s", (char *) localname);
1586
- if (prefix == NULL)
1587
- fprintf(stdout, ", NULL");
1588
- else
1589
- fprintf(stdout, ", %s", (char *) prefix);
1590
- if (URI == NULL)
1591
- fprintf(stdout, ", NULL)\n");
1592
- else
1593
- fprintf(stdout, ", '%s')\n", (char *) URI);
1594
- }
1595
-
1596
- static xmlSAXHandler debugSAX2HandlerStruct = {
1597
- internalSubsetDebug,
1598
- isStandaloneDebug,
1599
- hasInternalSubsetDebug,
1600
- hasExternalSubsetDebug,
1601
- resolveEntityDebug,
1602
- getEntityDebug,
1603
- entityDeclDebug,
1604
- notationDeclDebug,
1605
- attributeDeclDebug,
1606
- elementDeclDebug,
1607
- unparsedEntityDeclDebug,
1608
- setDocumentLocatorDebug,
1609
- startDocumentDebug,
1610
- endDocumentDebug,
1611
- NULL,
1612
- NULL,
1613
- referenceDebug,
1614
- charactersDebug,
1615
- ignorableWhitespaceDebug,
1616
- processingInstructionDebug,
1617
- commentDebug,
1618
- warningDebug,
1619
- errorDebug,
1620
- fatalErrorDebug,
1621
- getParameterEntityDebug,
1622
- cdataBlockDebug,
1623
- externalSubsetDebug,
1624
- XML_SAX2_MAGIC,
1625
- NULL,
1626
- startElementNsDebug,
1627
- endElementNsDebug,
1628
- NULL
1629
- };
1630
-
1631
- static xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct;
1632
-
1633
- static void
1634
- testSAX(const char *filename) {
1635
- xmlSAXHandlerPtr handler;
1636
- const char *user_data = "user_data"; /* mostly for debugging */
1637
- xmlParserInputBufferPtr buf = NULL;
1638
- xmlParserInputPtr inputStream;
1639
- xmlParserCtxtPtr ctxt = NULL;
1640
- xmlSAXHandlerPtr old_sax = NULL;
1641
-
1642
- callbacks = 0;
1643
-
1644
- if (noout) {
1645
- handler = emptySAXHandler;
1646
- #ifdef LIBXML_SAX1_ENABLED
1647
- } else if (sax1) {
1648
- handler = debugSAXHandler;
1649
- #endif
1650
- } else {
1651
- handler = debugSAX2Handler;
1652
- }
1653
-
1654
- /*
1655
- * it's not the simplest code but the most generic in term of I/O
1656
- */
1657
- buf = xmlParserInputBufferCreateFilename(filename, XML_CHAR_ENCODING_NONE);
1658
- if (buf == NULL) {
1659
- goto error;
1660
- }
1661
-
1662
- #ifdef LIBXML_SCHEMAS_ENABLED
1663
- if (wxschemas != NULL) {
1664
- int ret;
1665
- xmlSchemaValidCtxtPtr vctxt;
1666
-
1667
- vctxt = xmlSchemaNewValidCtxt(wxschemas);
1668
- xmlSchemaSetValidErrors(vctxt,
1669
- (xmlSchemaValidityErrorFunc) fprintf,
1670
- (xmlSchemaValidityWarningFunc) fprintf,
1671
- stderr);
1672
- xmlSchemaValidateSetFilename(vctxt, filename);
1673
-
1674
- ret = xmlSchemaValidateStream(vctxt, buf, 0, handler,
1675
- (void *)user_data);
1676
- if (repeat == 0) {
1677
- if (ret == 0) {
1678
- fprintf(stderr, "%s validates\n", filename);
1679
- } else if (ret > 0) {
1680
- fprintf(stderr, "%s fails to validate\n", filename);
1681
- progresult = XMLLINT_ERR_VALID;
1682
- } else {
1683
- fprintf(stderr, "%s validation generated an internal error\n",
1684
- filename);
1685
- progresult = XMLLINT_ERR_VALID;
1686
- }
1687
- }
1688
- xmlSchemaFreeValidCtxt(vctxt);
1689
- } else
1690
- #endif
1691
- {
1692
- /*
1693
- * Create the parser context amd hook the input
1694
- */
1695
- ctxt = xmlNewParserCtxt();
1696
- if (ctxt == NULL) {
1697
- xmlFreeParserInputBuffer(buf);
1698
- goto error;
1699
- }
1700
- old_sax = ctxt->sax;
1701
- ctxt->sax = handler;
1702
- ctxt->userData = (void *) user_data;
1703
- inputStream = xmlNewIOInputStream(ctxt, buf, XML_CHAR_ENCODING_NONE);
1704
- if (inputStream == NULL) {
1705
- xmlFreeParserInputBuffer(buf);
1706
- goto error;
1707
- }
1708
- inputPush(ctxt, inputStream);
1709
-
1710
- /* do the parsing */
1711
- xmlParseDocument(ctxt);
1712
-
1713
- if (ctxt->myDoc != NULL) {
1714
- fprintf(stderr, "SAX generated a doc !\n");
1715
- xmlFreeDoc(ctxt->myDoc);
1716
- ctxt->myDoc = NULL;
1717
- }
1718
- }
1719
-
1720
- error:
1721
- if (ctxt != NULL) {
1722
- ctxt->sax = old_sax;
1723
- xmlFreeParserCtxt(ctxt);
1724
- }
1725
- }
1726
-
1727
- /************************************************************************
1728
- * *
1729
- * Stream Test processing *
1730
- * *
1731
- ************************************************************************/
1732
- #ifdef LIBXML_READER_ENABLED
1733
- static void processNode(xmlTextReaderPtr reader) {
1734
- const xmlChar *name, *value;
1735
- int type, empty;
1736
-
1737
- type = xmlTextReaderNodeType(reader);
1738
- empty = xmlTextReaderIsEmptyElement(reader);
1739
-
1740
- if (debug) {
1741
- name = xmlTextReaderConstName(reader);
1742
- if (name == NULL)
1743
- name = BAD_CAST "--";
1744
-
1745
- value = xmlTextReaderConstValue(reader);
1746
-
1747
-
1748
- printf("%d %d %s %d %d",
1749
- xmlTextReaderDepth(reader),
1750
- type,
1751
- name,
1752
- empty,
1753
- xmlTextReaderHasValue(reader));
1754
- if (value == NULL)
1755
- printf("\n");
1756
- else {
1757
- printf(" %s\n", value);
1758
- }
1759
- }
1760
- #ifdef LIBXML_PATTERN_ENABLED
1761
- if (patternc) {
1762
- xmlChar *path = NULL;
1763
- int match = -1;
1764
-
1765
- if (type == XML_READER_TYPE_ELEMENT) {
1766
- /* do the check only on element start */
1767
- match = xmlPatternMatch(patternc, xmlTextReaderCurrentNode(reader));
1768
-
1769
- if (match) {
1770
- #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
1771
- path = xmlGetNodePath(xmlTextReaderCurrentNode(reader));
1772
- printf("Node %s matches pattern %s\n", path, pattern);
1773
- #else
1774
- printf("Node %s matches pattern %s\n",
1775
- xmlTextReaderConstName(reader), pattern);
1776
- #endif
1777
- }
1778
- }
1779
- if (patstream != NULL) {
1780
- int ret;
1781
-
1782
- if (type == XML_READER_TYPE_ELEMENT) {
1783
- ret = xmlStreamPush(patstream,
1784
- xmlTextReaderConstLocalName(reader),
1785
- xmlTextReaderConstNamespaceUri(reader));
1786
- if (ret < 0) {
1787
- fprintf(stderr, "xmlStreamPush() failure\n");
1788
- xmlFreeStreamCtxt(patstream);
1789
- patstream = NULL;
1790
- } else if (ret != match) {
1791
- #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
1792
- if (path == NULL) {
1793
- path = xmlGetNodePath(
1794
- xmlTextReaderCurrentNode(reader));
1795
- }
1796
- #endif
1797
- fprintf(stderr,
1798
- "xmlPatternMatch and xmlStreamPush disagree\n");
1799
- if (path != NULL)
1800
- fprintf(stderr, " pattern %s node %s\n",
1801
- pattern, path);
1802
- else
1803
- fprintf(stderr, " pattern %s node %s\n",
1804
- pattern, xmlTextReaderConstName(reader));
1805
- }
1806
-
1807
- }
1808
- if ((type == XML_READER_TYPE_END_ELEMENT) ||
1809
- ((type == XML_READER_TYPE_ELEMENT) && (empty))) {
1810
- ret = xmlStreamPop(patstream);
1811
- if (ret < 0) {
1812
- fprintf(stderr, "xmlStreamPop() failure\n");
1813
- xmlFreeStreamCtxt(patstream);
1814
- patstream = NULL;
1815
- }
1816
- }
1817
- }
1818
- if (path != NULL)
1819
- xmlFree(path);
1820
- }
1821
- #endif
1822
- }
1823
-
1824
- static void streamFile(char *filename) {
1825
- xmlTextReaderPtr reader;
1826
- int ret;
1827
- #ifdef HAVE_MMAP
1828
- int fd = -1;
1829
- struct stat info;
1830
- const char *base = NULL;
1831
- xmlParserInputBufferPtr input = NULL;
1832
-
1833
- if (memory) {
1834
- if (stat(filename, &info) < 0)
1835
- return;
1836
- if ((fd = open(filename, O_RDONLY)) < 0)
1837
- return;
1838
- base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
1839
- if (base == (void *) MAP_FAILED)
1840
- return;
1841
-
1842
- reader = xmlReaderForMemory(base, info.st_size, filename,
1843
- NULL, options);
1844
- } else
1845
- #endif
1846
- reader = xmlReaderForFile(filename, NULL, options);
1847
- #ifdef LIBXML_PATTERN_ENABLED
1848
- if (pattern != NULL) {
1849
- patternc = xmlPatterncompile((const xmlChar *) pattern, NULL, 0, NULL);
1850
- if (patternc == NULL) {
1851
- xmlGenericError(xmlGenericErrorContext,
1852
- "Pattern %s failed to compile\n", pattern);
1853
- progresult = XMLLINT_ERR_SCHEMAPAT;
1854
- pattern = NULL;
1855
- }
1856
- }
1857
- if (patternc != NULL) {
1858
- patstream = xmlPatternGetStreamCtxt(patternc);
1859
- if (patstream != NULL) {
1860
- ret = xmlStreamPush(patstream, NULL, NULL);
1861
- if (ret < 0) {
1862
- fprintf(stderr, "xmlStreamPush() failure\n");
1863
- xmlFreeStreamCtxt(patstream);
1864
- patstream = NULL;
1865
- }
1866
- }
1867
- }
1868
- #endif
1869
-
1870
-
1871
- if (reader != NULL) {
1872
- #ifdef LIBXML_VALID_ENABLED
1873
- if (valid)
1874
- xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1);
1875
- else
1876
- #endif /* LIBXML_VALID_ENABLED */
1877
- xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1);
1878
- #ifdef LIBXML_SCHEMAS_ENABLED
1879
- if (relaxng != NULL) {
1880
- if ((timing) && (!repeat)) {
1881
- startTimer();
1882
- }
1883
- ret = xmlTextReaderRelaxNGValidate(reader, relaxng);
1884
- if (ret < 0) {
1885
- xmlGenericError(xmlGenericErrorContext,
1886
- "Relax-NG schema %s failed to compile\n", relaxng);
1887
- progresult = XMLLINT_ERR_SCHEMACOMP;
1888
- relaxng = NULL;
1889
- }
1890
- if ((timing) && (!repeat)) {
1891
- endTimer("Compiling the schemas");
1892
- }
1893
- }
1894
- if (schema != NULL) {
1895
- if ((timing) && (!repeat)) {
1896
- startTimer();
1897
- }
1898
- ret = xmlTextReaderSchemaValidate(reader, schema);
1899
- if (ret < 0) {
1900
- xmlGenericError(xmlGenericErrorContext,
1901
- "XSD schema %s failed to compile\n", schema);
1902
- progresult = XMLLINT_ERR_SCHEMACOMP;
1903
- schema = NULL;
1904
- }
1905
- if ((timing) && (!repeat)) {
1906
- endTimer("Compiling the schemas");
1907
- }
1908
- }
1909
- #endif
1910
-
1911
- /*
1912
- * Process all nodes in sequence
1913
- */
1914
- if ((timing) && (!repeat)) {
1915
- startTimer();
1916
- }
1917
- ret = xmlTextReaderRead(reader);
1918
- while (ret == 1) {
1919
- if ((debug)
1920
- #ifdef LIBXML_PATTERN_ENABLED
1921
- || (patternc)
1922
- #endif
1923
- )
1924
- processNode(reader);
1925
- ret = xmlTextReaderRead(reader);
1926
- }
1927
- if ((timing) && (!repeat)) {
1928
- #ifdef LIBXML_SCHEMAS_ENABLED
1929
- if (relaxng != NULL)
1930
- endTimer("Parsing and validating");
1931
- else
1932
- #endif
1933
- #ifdef LIBXML_VALID_ENABLED
1934
- if (valid)
1935
- endTimer("Parsing and validating");
1936
- else
1937
- #endif
1938
- endTimer("Parsing");
1939
- }
1940
-
1941
- #ifdef LIBXML_VALID_ENABLED
1942
- if (valid) {
1943
- if (xmlTextReaderIsValid(reader) != 1) {
1944
- xmlGenericError(xmlGenericErrorContext,
1945
- "Document %s does not validate\n", filename);
1946
- progresult = XMLLINT_ERR_VALID;
1947
- }
1948
- }
1949
- #endif /* LIBXML_VALID_ENABLED */
1950
- #ifdef LIBXML_SCHEMAS_ENABLED
1951
- if ((relaxng != NULL) || (schema != NULL)) {
1952
- if (xmlTextReaderIsValid(reader) != 1) {
1953
- fprintf(stderr, "%s fails to validate\n", filename);
1954
- progresult = XMLLINT_ERR_VALID;
1955
- } else {
1956
- fprintf(stderr, "%s validates\n", filename);
1957
- }
1958
- }
1959
- #endif
1960
- /*
1961
- * Done, cleanup and status
1962
- */
1963
- xmlFreeTextReader(reader);
1964
- if (ret != 0) {
1965
- fprintf(stderr, "%s : failed to parse\n", filename);
1966
- progresult = XMLLINT_ERR_UNCLASS;
1967
- }
1968
- } else {
1969
- fprintf(stderr, "Unable to open %s\n", filename);
1970
- progresult = XMLLINT_ERR_UNCLASS;
1971
- }
1972
- #ifdef LIBXML_PATTERN_ENABLED
1973
- if (patstream != NULL) {
1974
- xmlFreeStreamCtxt(patstream);
1975
- patstream = NULL;
1976
- }
1977
- #endif
1978
- #ifdef HAVE_MMAP
1979
- if (memory) {
1980
- xmlFreeParserInputBuffer(input);
1981
- munmap((char *) base, info.st_size);
1982
- close(fd);
1983
- }
1984
- #endif
1985
- }
1986
-
1987
- static void walkDoc(xmlDocPtr doc) {
1988
- xmlTextReaderPtr reader;
1989
- int ret;
1990
-
1991
- #ifdef LIBXML_PATTERN_ENABLED
1992
- xmlNodePtr root;
1993
- const xmlChar *namespaces[22];
1994
- int i;
1995
- xmlNsPtr ns;
1996
-
1997
- root = xmlDocGetRootElement(doc);
1998
- for (ns = root->nsDef, i = 0;ns != NULL && i < 20;ns=ns->next) {
1999
- namespaces[i++] = ns->href;
2000
- namespaces[i++] = ns->prefix;
2001
- }
2002
- namespaces[i++] = NULL;
2003
- namespaces[i] = NULL;
2004
-
2005
- if (pattern != NULL) {
2006
- patternc = xmlPatterncompile((const xmlChar *) pattern, doc->dict,
2007
- 0, &namespaces[0]);
2008
- if (patternc == NULL) {
2009
- xmlGenericError(xmlGenericErrorContext,
2010
- "Pattern %s failed to compile\n", pattern);
2011
- progresult = XMLLINT_ERR_SCHEMAPAT;
2012
- pattern = NULL;
2013
- }
2014
- }
2015
- if (patternc != NULL) {
2016
- patstream = xmlPatternGetStreamCtxt(patternc);
2017
- if (patstream != NULL) {
2018
- ret = xmlStreamPush(patstream, NULL, NULL);
2019
- if (ret < 0) {
2020
- fprintf(stderr, "xmlStreamPush() failure\n");
2021
- xmlFreeStreamCtxt(patstream);
2022
- patstream = NULL;
2023
- }
2024
- }
2025
- }
2026
- #endif /* LIBXML_PATTERN_ENABLED */
2027
- reader = xmlReaderWalker(doc);
2028
- if (reader != NULL) {
2029
- if ((timing) && (!repeat)) {
2030
- startTimer();
2031
- }
2032
- ret = xmlTextReaderRead(reader);
2033
- while (ret == 1) {
2034
- if ((debug)
2035
- #ifdef LIBXML_PATTERN_ENABLED
2036
- || (patternc)
2037
- #endif
2038
- )
2039
- processNode(reader);
2040
- ret = xmlTextReaderRead(reader);
2041
- }
2042
- if ((timing) && (!repeat)) {
2043
- endTimer("walking through the doc");
2044
- }
2045
- xmlFreeTextReader(reader);
2046
- if (ret != 0) {
2047
- fprintf(stderr, "failed to walk through the doc\n");
2048
- progresult = XMLLINT_ERR_UNCLASS;
2049
- }
2050
- } else {
2051
- fprintf(stderr, "Failed to crate a reader from the document\n");
2052
- progresult = XMLLINT_ERR_UNCLASS;
2053
- }
2054
- #ifdef LIBXML_PATTERN_ENABLED
2055
- if (patstream != NULL) {
2056
- xmlFreeStreamCtxt(patstream);
2057
- patstream = NULL;
2058
- }
2059
- #endif
2060
- }
2061
- #endif /* LIBXML_READER_ENABLED */
2062
-
2063
- #ifdef LIBXML_XPATH_ENABLED
2064
- /************************************************************************
2065
- * *
2066
- * XPath Query *
2067
- * *
2068
- ************************************************************************/
2069
-
2070
- static void doXPathDump(xmlXPathObjectPtr cur) {
2071
- switch(cur->type) {
2072
- case XPATH_NODESET: {
2073
- int i;
2074
- xmlNodePtr node;
2075
- #ifdef LIBXML_OUTPUT_ENABLED
2076
- xmlSaveCtxtPtr ctxt;
2077
-
2078
- if ((cur->nodesetval == NULL) || (cur->nodesetval->nodeNr <= 0)) {
2079
- fprintf(stderr, "XPath set is empty\n");
2080
- progresult = XMLLINT_ERR_XPATH;
2081
- break;
2082
- }
2083
- ctxt = xmlSaveToFd(1, NULL, 0);
2084
- if (ctxt == NULL) {
2085
- fprintf(stderr, "Out of memory for XPath\n");
2086
- progresult = XMLLINT_ERR_MEM;
2087
- return;
2088
- }
2089
- for (i = 0;i < cur->nodesetval->nodeNr;i++) {
2090
- node = cur->nodesetval->nodeTab[i];
2091
- xmlSaveTree(ctxt, node);
2092
- }
2093
- xmlSaveClose(ctxt);
2094
- #else
2095
- printf("xpath returned %d nodes\n", cur->nodesetval->nodeNr);
2096
- #endif
2097
- break;
2098
- }
2099
- case XPATH_BOOLEAN:
2100
- if (cur->boolval) printf("true");
2101
- else printf("false");
2102
- break;
2103
- case XPATH_NUMBER:
2104
- switch (xmlXPathIsInf(cur->floatval)) {
2105
- case 1:
2106
- printf("Infinity");
2107
- break;
2108
- case -1:
2109
- printf("-Infinity");
2110
- break;
2111
- default:
2112
- if (xmlXPathIsNaN(cur->floatval)) {
2113
- printf("NaN");
2114
- } else {
2115
- printf("%0g", cur->floatval);
2116
- }
2117
- }
2118
- break;
2119
- case XPATH_STRING:
2120
- printf("%s", (const char *) cur->stringval);
2121
- break;
2122
- case XPATH_UNDEFINED:
2123
- fprintf(stderr, "XPath Object is uninitialized\n");
2124
- progresult = XMLLINT_ERR_XPATH;
2125
- break;
2126
- default:
2127
- fprintf(stderr, "XPath object of unexpected type\n");
2128
- progresult = XMLLINT_ERR_XPATH;
2129
- break;
2130
- }
2131
- }
2132
-
2133
- static void doXPathQuery(xmlDocPtr doc, const char *query) {
2134
- xmlXPathContextPtr ctxt;
2135
- xmlXPathObjectPtr res;
2136
-
2137
- ctxt = xmlXPathNewContext(doc);
2138
- if (ctxt == NULL) {
2139
- fprintf(stderr, "Out of memory for XPath\n");
2140
- progresult = XMLLINT_ERR_MEM;
2141
- return;
2142
- }
2143
- ctxt->node = (xmlNodePtr) doc;
2144
- res = xmlXPathEval(BAD_CAST query, ctxt);
2145
- xmlXPathFreeContext(ctxt);
2146
-
2147
- if (res == NULL) {
2148
- fprintf(stderr, "XPath evaluation failure\n");
2149
- progresult = XMLLINT_ERR_XPATH;
2150
- return;
2151
- }
2152
- doXPathDump(res);
2153
- xmlXPathFreeObject(res);
2154
- }
2155
- #endif /* LIBXML_XPATH_ENABLED */
2156
-
2157
- /************************************************************************
2158
- * *
2159
- * Tree Test processing *
2160
- * *
2161
- ************************************************************************/
2162
- static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
2163
- xmlDocPtr doc = NULL;
2164
- #ifdef LIBXML_TREE_ENABLED
2165
- xmlDocPtr tmp;
2166
- #endif /* LIBXML_TREE_ENABLED */
2167
-
2168
- if ((timing) && (!repeat))
2169
- startTimer();
2170
-
2171
-
2172
- #ifdef LIBXML_TREE_ENABLED
2173
- if (filename == NULL) {
2174
- if (generate) {
2175
- xmlNodePtr n;
2176
-
2177
- doc = xmlNewDoc(BAD_CAST "1.0");
2178
- n = xmlNewDocNode(doc, NULL, BAD_CAST "info", NULL);
2179
- xmlNodeSetContent(n, BAD_CAST "abc");
2180
- xmlDocSetRootElement(doc, n);
2181
- }
2182
- }
2183
- #endif /* LIBXML_TREE_ENABLED */
2184
- #ifdef LIBXML_HTML_ENABLED
2185
- #ifdef LIBXML_PUSH_ENABLED
2186
- else if ((html) && (push)) {
2187
- FILE *f;
2188
-
2189
- #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
2190
- f = fopen(filename, "rb");
2191
- #else
2192
- f = fopen(filename, "r");
2193
- #endif
2194
- if (f != NULL) {
2195
- int res, size = 3;
2196
- char chars[4096];
2197
- htmlParserCtxtPtr ctxt;
2198
-
2199
- /* if (repeat) */
2200
- size = 4096;
2201
- res = fread(chars, 1, 4, f);
2202
- if (res > 0) {
2203
- ctxt = htmlCreatePushParserCtxt(NULL, NULL,
2204
- chars, res, filename, XML_CHAR_ENCODING_NONE);
2205
- while ((res = fread(chars, 1, size, f)) > 0) {
2206
- htmlParseChunk(ctxt, chars, res, 0);
2207
- }
2208
- htmlParseChunk(ctxt, chars, 0, 1);
2209
- doc = ctxt->myDoc;
2210
- htmlFreeParserCtxt(ctxt);
2211
- }
2212
- fclose(f);
2213
- }
2214
- }
2215
- #endif /* LIBXML_PUSH_ENABLED */
2216
- #ifdef HAVE_MMAP
2217
- else if ((html) && (memory)) {
2218
- int fd;
2219
- struct stat info;
2220
- const char *base;
2221
- if (stat(filename, &info) < 0)
2222
- return;
2223
- if ((fd = open(filename, O_RDONLY)) < 0)
2224
- return;
2225
- base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
2226
- if (base == (void *) MAP_FAILED)
2227
- return;
2228
-
2229
- doc = htmlReadMemory((char *) base, info.st_size, filename,
2230
- NULL, options);
2231
-
2232
- munmap((char *) base, info.st_size);
2233
- close(fd);
2234
- }
2235
- #endif
2236
- else if (html) {
2237
- doc = htmlReadFile(filename, NULL, options);
2238
- }
2239
- #endif /* LIBXML_HTML_ENABLED */
2240
- else {
2241
- #ifdef LIBXML_PUSH_ENABLED
2242
- /*
2243
- * build an XML tree from a string;
2244
- */
2245
- if (push) {
2246
- FILE *f;
2247
-
2248
- /* '-' Usually means stdin -<sven@zen.org> */
2249
- if ((filename[0] == '-') && (filename[1] == 0)) {
2250
- f = stdin;
2251
- } else {
2252
- #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
2253
- f = fopen(filename, "rb");
2254
- #else
2255
- f = fopen(filename, "r");
2256
- #endif
2257
- }
2258
- if (f != NULL) {
2259
- int ret;
2260
- int res, size = 1024;
2261
- char chars[1024];
2262
- xmlParserCtxtPtr ctxt;
2263
-
2264
- /* if (repeat) size = 1024; */
2265
- res = fread(chars, 1, 4, f);
2266
- if (res > 0) {
2267
- ctxt = xmlCreatePushParserCtxt(NULL, NULL,
2268
- chars, res, filename);
2269
- xmlCtxtUseOptions(ctxt, options);
2270
- while ((res = fread(chars, 1, size, f)) > 0) {
2271
- xmlParseChunk(ctxt, chars, res, 0);
2272
- }
2273
- xmlParseChunk(ctxt, chars, 0, 1);
2274
- doc = ctxt->myDoc;
2275
- ret = ctxt->wellFormed;
2276
- xmlFreeParserCtxt(ctxt);
2277
- if (!ret) {
2278
- xmlFreeDoc(doc);
2279
- doc = NULL;
2280
- }
2281
- }
2282
- if (f != stdin)
2283
- fclose(f);
2284
- }
2285
- } else
2286
- #endif /* LIBXML_PUSH_ENABLED */
2287
- if (testIO) {
2288
- if ((filename[0] == '-') && (filename[1] == 0)) {
2289
- doc = xmlReadFd(0, NULL, NULL, options);
2290
- } else {
2291
- FILE *f;
2292
-
2293
- #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
2294
- f = fopen(filename, "rb");
2295
- #else
2296
- f = fopen(filename, "r");
2297
- #endif
2298
- if (f != NULL) {
2299
- if (rectxt == NULL)
2300
- doc = xmlReadIO((xmlInputReadCallback) myRead,
2301
- (xmlInputCloseCallback) myClose, f,
2302
- filename, NULL, options);
2303
- else
2304
- doc = xmlCtxtReadIO(rectxt,
2305
- (xmlInputReadCallback) myRead,
2306
- (xmlInputCloseCallback) myClose, f,
2307
- filename, NULL, options);
2308
- } else
2309
- doc = NULL;
2310
- }
2311
- } else if (htmlout) {
2312
- xmlParserCtxtPtr ctxt;
2313
-
2314
- if (rectxt == NULL)
2315
- ctxt = xmlNewParserCtxt();
2316
- else
2317
- ctxt = rectxt;
2318
- if (ctxt == NULL) {
2319
- doc = NULL;
2320
- } else {
2321
- ctxt->sax->error = xmlHTMLError;
2322
- ctxt->sax->warning = xmlHTMLWarning;
2323
- ctxt->vctxt.error = xmlHTMLValidityError;
2324
- ctxt->vctxt.warning = xmlHTMLValidityWarning;
2325
-
2326
- doc = xmlCtxtReadFile(ctxt, filename, NULL, options);
2327
-
2328
- if (rectxt == NULL)
2329
- xmlFreeParserCtxt(ctxt);
2330
- }
2331
- #ifdef HAVE_MMAP
2332
- } else if (memory) {
2333
- int fd;
2334
- struct stat info;
2335
- const char *base;
2336
- if (stat(filename, &info) < 0)
2337
- return;
2338
- if ((fd = open(filename, O_RDONLY)) < 0)
2339
- return;
2340
- base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
2341
- if (base == (void *) MAP_FAILED)
2342
- return;
2343
-
2344
- if (rectxt == NULL)
2345
- doc = xmlReadMemory((char *) base, info.st_size,
2346
- filename, NULL, options);
2347
- else
2348
- doc = xmlCtxtReadMemory(rectxt, (char *) base, info.st_size,
2349
- filename, NULL, options);
2350
-
2351
- munmap((char *) base, info.st_size);
2352
- close(fd);
2353
- #endif
2354
- #ifdef LIBXML_VALID_ENABLED
2355
- } else if (valid) {
2356
- xmlParserCtxtPtr ctxt = NULL;
2357
-
2358
- if (rectxt == NULL)
2359
- ctxt = xmlNewParserCtxt();
2360
- else
2361
- ctxt = rectxt;
2362
- if (ctxt == NULL) {
2363
- doc = NULL;
2364
- } else {
2365
- doc = xmlCtxtReadFile(ctxt, filename, NULL, options);
2366
-
2367
- if (ctxt->valid == 0)
2368
- progresult = XMLLINT_ERR_RDFILE;
2369
- if (rectxt == NULL)
2370
- xmlFreeParserCtxt(ctxt);
2371
- }
2372
- #endif /* LIBXML_VALID_ENABLED */
2373
- } else {
2374
- if (rectxt != NULL)
2375
- doc = xmlCtxtReadFile(rectxt, filename, NULL, options);
2376
- else {
2377
- #ifdef LIBXML_SAX1_ENABLED
2378
- if (sax1)
2379
- doc = xmlParseFile(filename);
2380
- else
2381
- #endif /* LIBXML_SAX1_ENABLED */
2382
- doc = xmlReadFile(filename, NULL, options);
2383
- }
2384
- }
2385
- }
2386
-
2387
- /*
2388
- * If we don't have a document we might as well give up. Do we
2389
- * want an error message here? <sven@zen.org> */
2390
- if (doc == NULL) {
2391
- progresult = XMLLINT_ERR_UNCLASS;
2392
- return;
2393
- }
2394
-
2395
- if ((timing) && (!repeat)) {
2396
- endTimer("Parsing");
2397
- }
2398
-
2399
- /*
2400
- * Remove DOCTYPE nodes
2401
- */
2402
- if (dropdtd) {
2403
- xmlDtdPtr dtd;
2404
-
2405
- dtd = xmlGetIntSubset(doc);
2406
- if (dtd != NULL) {
2407
- xmlUnlinkNode((xmlNodePtr)dtd);
2408
- xmlFreeDtd(dtd);
2409
- }
2410
- }
2411
-
2412
- #ifdef LIBXML_XINCLUDE_ENABLED
2413
- if (xinclude) {
2414
- if ((timing) && (!repeat)) {
2415
- startTimer();
2416
- }
2417
- if (xmlXIncludeProcessFlags(doc, options) < 0)
2418
- progresult = XMLLINT_ERR_UNCLASS;
2419
- if ((timing) && (!repeat)) {
2420
- endTimer("Xinclude processing");
2421
- }
2422
- }
2423
- #endif
2424
-
2425
- #ifdef LIBXML_XPATH_ENABLED
2426
- if (xpathquery != NULL) {
2427
- doXPathQuery(doc, xpathquery);
2428
- }
2429
- #endif
2430
-
2431
- #ifdef LIBXML_DEBUG_ENABLED
2432
- #ifdef LIBXML_XPATH_ENABLED
2433
- /*
2434
- * shell interaction
2435
- */
2436
- if (shell) {
2437
- xmlXPathOrderDocElems(doc);
2438
- xmlShell(doc, filename, xmlShellReadline, stdout);
2439
- }
2440
- #endif
2441
- #endif
2442
-
2443
- #ifdef LIBXML_TREE_ENABLED
2444
- /*
2445
- * test intermediate copy if needed.
2446
- */
2447
- if (copy) {
2448
- tmp = doc;
2449
- if (timing) {
2450
- startTimer();
2451
- }
2452
- doc = xmlCopyDoc(doc, 1);
2453
- if (timing) {
2454
- endTimer("Copying");
2455
- }
2456
- if (timing) {
2457
- startTimer();
2458
- }
2459
- xmlFreeDoc(tmp);
2460
- if (timing) {
2461
- endTimer("Freeing original");
2462
- }
2463
- }
2464
- #endif /* LIBXML_TREE_ENABLED */
2465
-
2466
- #ifdef LIBXML_VALID_ENABLED
2467
- if ((insert) && (!html)) {
2468
- const xmlChar* list[256];
2469
- int nb, i;
2470
- xmlNodePtr node;
2471
-
2472
- if (doc->children != NULL) {
2473
- node = doc->children;
2474
- while ((node != NULL) && (node->last == NULL)) node = node->next;
2475
- if (node != NULL) {
2476
- nb = xmlValidGetValidElements(node->last, NULL, list, 256);
2477
- if (nb < 0) {
2478
- fprintf(stderr, "could not get valid list of elements\n");
2479
- } else if (nb == 0) {
2480
- fprintf(stderr, "No element can be inserted under root\n");
2481
- } else {
2482
- fprintf(stderr, "%d element types can be inserted under root:\n",
2483
- nb);
2484
- for (i = 0;i < nb;i++) {
2485
- fprintf(stderr, "%s\n", (char *) list[i]);
2486
- }
2487
- }
2488
- }
2489
- }
2490
- }else
2491
- #endif /* LIBXML_VALID_ENABLED */
2492
- #ifdef LIBXML_READER_ENABLED
2493
- if (walker) {
2494
- walkDoc(doc);
2495
- }
2496
- #endif /* LIBXML_READER_ENABLED */
2497
- #ifdef LIBXML_OUTPUT_ENABLED
2498
- if (noout == 0) {
2499
- int ret;
2500
-
2501
- /*
2502
- * print it.
2503
- */
2504
- #ifdef LIBXML_DEBUG_ENABLED
2505
- if (!debug) {
2506
- #endif
2507
- if ((timing) && (!repeat)) {
2508
- startTimer();
2509
- }
2510
- #ifdef LIBXML_HTML_ENABLED
2511
- if ((html) && (!xmlout)) {
2512
- if (compress) {
2513
- htmlSaveFile(output ? output : "-", doc);
2514
- }
2515
- else if (encoding != NULL) {
2516
- if (format == 1) {
2517
- htmlSaveFileFormat(output ? output : "-", doc, encoding, 1);
2518
- }
2519
- else {
2520
- htmlSaveFileFormat(output ? output : "-", doc, encoding, 0);
2521
- }
2522
- }
2523
- else if (format == 1) {
2524
- htmlSaveFileFormat(output ? output : "-", doc, NULL, 1);
2525
- }
2526
- else {
2527
- FILE *out;
2528
- if (output == NULL)
2529
- out = stdout;
2530
- else {
2531
- out = fopen(output,"wb");
2532
- }
2533
- if (out != NULL) {
2534
- if (htmlDocDump(out, doc) < 0)
2535
- progresult = XMLLINT_ERR_OUT;
2536
-
2537
- if (output != NULL)
2538
- fclose(out);
2539
- } else {
2540
- fprintf(stderr, "failed to open %s\n", output);
2541
- progresult = XMLLINT_ERR_OUT;
2542
- }
2543
- }
2544
- if ((timing) && (!repeat)) {
2545
- endTimer("Saving");
2546
- }
2547
- } else
2548
- #endif
2549
- #ifdef LIBXML_C14N_ENABLED
2550
- if (canonical) {
2551
- xmlChar *result = NULL;
2552
- int size;
2553
-
2554
- size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_0, NULL, 1, &result);
2555
- if (size >= 0) {
2556
- if (write(1, result, size) == -1) {
2557
- fprintf(stderr, "Can't write data\n");
2558
- }
2559
- xmlFree(result);
2560
- } else {
2561
- fprintf(stderr, "Failed to canonicalize\n");
2562
- progresult = XMLLINT_ERR_OUT;
2563
- }
2564
- } else if (canonical) {
2565
- xmlChar *result = NULL;
2566
- int size;
2567
-
2568
- size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_1, NULL, 1, &result);
2569
- if (size >= 0) {
2570
- if (write(1, result, size) == -1) {
2571
- fprintf(stderr, "Can't write data\n");
2572
- }
2573
- xmlFree(result);
2574
- } else {
2575
- fprintf(stderr, "Failed to canonicalize\n");
2576
- progresult = XMLLINT_ERR_OUT;
2577
- }
2578
- } else
2579
- if (exc_canonical) {
2580
- xmlChar *result = NULL;
2581
- int size;
2582
-
2583
- size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_EXCLUSIVE_1_0, NULL, 1, &result);
2584
- if (size >= 0) {
2585
- if (write(1, result, size) == -1) {
2586
- fprintf(stderr, "Can't write data\n");
2587
- }
2588
- xmlFree(result);
2589
- } else {
2590
- fprintf(stderr, "Failed to canonicalize\n");
2591
- progresult = XMLLINT_ERR_OUT;
2592
- }
2593
- } else
2594
- #endif
2595
- #ifdef HAVE_MMAP
2596
- if (memory) {
2597
- xmlChar *result;
2598
- int len;
2599
-
2600
- if (encoding != NULL) {
2601
- if (format == 1) {
2602
- xmlDocDumpFormatMemoryEnc(doc, &result, &len, encoding, 1);
2603
- } else {
2604
- xmlDocDumpMemoryEnc(doc, &result, &len, encoding);
2605
- }
2606
- } else {
2607
- if (format == 1)
2608
- xmlDocDumpFormatMemory(doc, &result, &len, 1);
2609
- else
2610
- xmlDocDumpMemory(doc, &result, &len);
2611
- }
2612
- if (result == NULL) {
2613
- fprintf(stderr, "Failed to save\n");
2614
- progresult = XMLLINT_ERR_OUT;
2615
- } else {
2616
- if (write(1, result, len) == -1) {
2617
- fprintf(stderr, "Can't write data\n");
2618
- }
2619
- xmlFree(result);
2620
- }
2621
-
2622
- } else
2623
- #endif /* HAVE_MMAP */
2624
- if (compress) {
2625
- xmlSaveFile(output ? output : "-", doc);
2626
- } else if (oldout) {
2627
- if (encoding != NULL) {
2628
- if (format == 1) {
2629
- ret = xmlSaveFormatFileEnc(output ? output : "-", doc,
2630
- encoding, 1);
2631
- }
2632
- else {
2633
- ret = xmlSaveFileEnc(output ? output : "-", doc,
2634
- encoding);
2635
- }
2636
- if (ret < 0) {
2637
- fprintf(stderr, "failed save to %s\n",
2638
- output ? output : "-");
2639
- progresult = XMLLINT_ERR_OUT;
2640
- }
2641
- } else if (format == 1) {
2642
- ret = xmlSaveFormatFile(output ? output : "-", doc, 1);
2643
- if (ret < 0) {
2644
- fprintf(stderr, "failed save to %s\n",
2645
- output ? output : "-");
2646
- progresult = XMLLINT_ERR_OUT;
2647
- }
2648
- } else {
2649
- FILE *out;
2650
- if (output == NULL)
2651
- out = stdout;
2652
- else {
2653
- out = fopen(output,"wb");
2654
- }
2655
- if (out != NULL) {
2656
- if (xmlDocDump(out, doc) < 0)
2657
- progresult = XMLLINT_ERR_OUT;
2658
-
2659
- if (output != NULL)
2660
- fclose(out);
2661
- } else {
2662
- fprintf(stderr, "failed to open %s\n", output);
2663
- progresult = XMLLINT_ERR_OUT;
2664
- }
2665
- }
2666
- } else {
2667
- xmlSaveCtxtPtr ctxt;
2668
- int saveOpts = 0;
2669
-
2670
- if (format == 1)
2671
- saveOpts |= XML_SAVE_FORMAT;
2672
- else if (format == 2)
2673
- saveOpts |= XML_SAVE_WSNONSIG;
2674
-
2675
- #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED)
2676
- if (xmlout)
2677
- saveOpts |= XML_SAVE_AS_XML;
2678
- #endif
2679
-
2680
- if (output == NULL)
2681
- ctxt = xmlSaveToFd(1, encoding, saveOpts);
2682
- else
2683
- ctxt = xmlSaveToFilename(output, encoding, saveOpts);
2684
-
2685
- if (ctxt != NULL) {
2686
- if (xmlSaveDoc(ctxt, doc) < 0) {
2687
- fprintf(stderr, "failed save to %s\n",
2688
- output ? output : "-");
2689
- progresult = XMLLINT_ERR_OUT;
2690
- }
2691
- xmlSaveClose(ctxt);
2692
- } else {
2693
- progresult = XMLLINT_ERR_OUT;
2694
- }
2695
- }
2696
- if ((timing) && (!repeat)) {
2697
- endTimer("Saving");
2698
- }
2699
- #ifdef LIBXML_DEBUG_ENABLED
2700
- } else {
2701
- FILE *out;
2702
- if (output == NULL)
2703
- out = stdout;
2704
- else {
2705
- out = fopen(output,"wb");
2706
- }
2707
- if (out != NULL) {
2708
- xmlDebugDumpDocument(out, doc);
2709
-
2710
- if (output != NULL)
2711
- fclose(out);
2712
- } else {
2713
- fprintf(stderr, "failed to open %s\n", output);
2714
- progresult = XMLLINT_ERR_OUT;
2715
- }
2716
- }
2717
- #endif
2718
- }
2719
- #endif /* LIBXML_OUTPUT_ENABLED */
2720
-
2721
- #ifdef LIBXML_VALID_ENABLED
2722
- /*
2723
- * A posteriori validation test
2724
- */
2725
- if ((dtdvalid != NULL) || (dtdvalidfpi != NULL)) {
2726
- xmlDtdPtr dtd;
2727
-
2728
- if ((timing) && (!repeat)) {
2729
- startTimer();
2730
- }
2731
- if (dtdvalid != NULL)
2732
- dtd = xmlParseDTD(NULL, (const xmlChar *)dtdvalid);
2733
- else
2734
- dtd = xmlParseDTD((const xmlChar *)dtdvalidfpi, NULL);
2735
- if ((timing) && (!repeat)) {
2736
- endTimer("Parsing DTD");
2737
- }
2738
- if (dtd == NULL) {
2739
- if (dtdvalid != NULL)
2740
- xmlGenericError(xmlGenericErrorContext,
2741
- "Could not parse DTD %s\n", dtdvalid);
2742
- else
2743
- xmlGenericError(xmlGenericErrorContext,
2744
- "Could not parse DTD %s\n", dtdvalidfpi);
2745
- progresult = XMLLINT_ERR_DTD;
2746
- } else {
2747
- xmlValidCtxtPtr cvp;
2748
-
2749
- if ((cvp = xmlNewValidCtxt()) == NULL) {
2750
- xmlGenericError(xmlGenericErrorContext,
2751
- "Couldn't allocate validation context\n");
2752
- exit(-1);
2753
- }
2754
- cvp->userData = (void *) stderr;
2755
- cvp->error = (xmlValidityErrorFunc) fprintf;
2756
- cvp->warning = (xmlValidityWarningFunc) fprintf;
2757
-
2758
- if ((timing) && (!repeat)) {
2759
- startTimer();
2760
- }
2761
- if (!xmlValidateDtd(cvp, doc, dtd)) {
2762
- if (dtdvalid != NULL)
2763
- xmlGenericError(xmlGenericErrorContext,
2764
- "Document %s does not validate against %s\n",
2765
- filename, dtdvalid);
2766
- else
2767
- xmlGenericError(xmlGenericErrorContext,
2768
- "Document %s does not validate against %s\n",
2769
- filename, dtdvalidfpi);
2770
- progresult = XMLLINT_ERR_VALID;
2771
- }
2772
- if ((timing) && (!repeat)) {
2773
- endTimer("Validating against DTD");
2774
- }
2775
- xmlFreeValidCtxt(cvp);
2776
- xmlFreeDtd(dtd);
2777
- }
2778
- } else if (postvalid) {
2779
- xmlValidCtxtPtr cvp;
2780
-
2781
- if ((cvp = xmlNewValidCtxt()) == NULL) {
2782
- xmlGenericError(xmlGenericErrorContext,
2783
- "Couldn't allocate validation context\n");
2784
- exit(-1);
2785
- }
2786
-
2787
- if ((timing) && (!repeat)) {
2788
- startTimer();
2789
- }
2790
- cvp->userData = (void *) stderr;
2791
- cvp->error = (xmlValidityErrorFunc) fprintf;
2792
- cvp->warning = (xmlValidityWarningFunc) fprintf;
2793
- if (!xmlValidateDocument(cvp, doc)) {
2794
- xmlGenericError(xmlGenericErrorContext,
2795
- "Document %s does not validate\n", filename);
2796
- progresult = XMLLINT_ERR_VALID;
2797
- }
2798
- if ((timing) && (!repeat)) {
2799
- endTimer("Validating");
2800
- }
2801
- xmlFreeValidCtxt(cvp);
2802
- }
2803
- #endif /* LIBXML_VALID_ENABLED */
2804
- #ifdef LIBXML_SCHEMATRON_ENABLED
2805
- if (wxschematron != NULL) {
2806
- xmlSchematronValidCtxtPtr ctxt;
2807
- int ret;
2808
- int flag;
2809
-
2810
- if ((timing) && (!repeat)) {
2811
- startTimer();
2812
- }
2813
-
2814
- if (debug)
2815
- flag = XML_SCHEMATRON_OUT_XML;
2816
- else
2817
- flag = XML_SCHEMATRON_OUT_TEXT;
2818
- if (noout)
2819
- flag |= XML_SCHEMATRON_OUT_QUIET;
2820
- ctxt = xmlSchematronNewValidCtxt(wxschematron, flag);
2821
- #if 0
2822
- xmlSchematronSetValidErrors(ctxt,
2823
- (xmlSchematronValidityErrorFunc) fprintf,
2824
- (xmlSchematronValidityWarningFunc) fprintf,
2825
- stderr);
2826
- #endif
2827
- ret = xmlSchematronValidateDoc(ctxt, doc);
2828
- if (ret == 0) {
2829
- fprintf(stderr, "%s validates\n", filename);
2830
- } else if (ret > 0) {
2831
- fprintf(stderr, "%s fails to validate\n", filename);
2832
- progresult = XMLLINT_ERR_VALID;
2833
- } else {
2834
- fprintf(stderr, "%s validation generated an internal error\n",
2835
- filename);
2836
- progresult = XMLLINT_ERR_VALID;
2837
- }
2838
- xmlSchematronFreeValidCtxt(ctxt);
2839
- if ((timing) && (!repeat)) {
2840
- endTimer("Validating");
2841
- }
2842
- }
2843
- #endif
2844
- #ifdef LIBXML_SCHEMAS_ENABLED
2845
- if (relaxngschemas != NULL) {
2846
- xmlRelaxNGValidCtxtPtr ctxt;
2847
- int ret;
2848
-
2849
- if ((timing) && (!repeat)) {
2850
- startTimer();
2851
- }
2852
-
2853
- ctxt = xmlRelaxNGNewValidCtxt(relaxngschemas);
2854
- xmlRelaxNGSetValidErrors(ctxt,
2855
- (xmlRelaxNGValidityErrorFunc) fprintf,
2856
- (xmlRelaxNGValidityWarningFunc) fprintf,
2857
- stderr);
2858
- ret = xmlRelaxNGValidateDoc(ctxt, doc);
2859
- if (ret == 0) {
2860
- fprintf(stderr, "%s validates\n", filename);
2861
- } else if (ret > 0) {
2862
- fprintf(stderr, "%s fails to validate\n", filename);
2863
- progresult = XMLLINT_ERR_VALID;
2864
- } else {
2865
- fprintf(stderr, "%s validation generated an internal error\n",
2866
- filename);
2867
- progresult = XMLLINT_ERR_VALID;
2868
- }
2869
- xmlRelaxNGFreeValidCtxt(ctxt);
2870
- if ((timing) && (!repeat)) {
2871
- endTimer("Validating");
2872
- }
2873
- } else if (wxschemas != NULL) {
2874
- xmlSchemaValidCtxtPtr ctxt;
2875
- int ret;
2876
-
2877
- if ((timing) && (!repeat)) {
2878
- startTimer();
2879
- }
2880
-
2881
- ctxt = xmlSchemaNewValidCtxt(wxschemas);
2882
- xmlSchemaSetValidErrors(ctxt,
2883
- (xmlSchemaValidityErrorFunc) fprintf,
2884
- (xmlSchemaValidityWarningFunc) fprintf,
2885
- stderr);
2886
- ret = xmlSchemaValidateDoc(ctxt, doc);
2887
- if (ret == 0) {
2888
- fprintf(stderr, "%s validates\n", filename);
2889
- } else if (ret > 0) {
2890
- fprintf(stderr, "%s fails to validate\n", filename);
2891
- progresult = XMLLINT_ERR_VALID;
2892
- } else {
2893
- fprintf(stderr, "%s validation generated an internal error\n",
2894
- filename);
2895
- progresult = XMLLINT_ERR_VALID;
2896
- }
2897
- xmlSchemaFreeValidCtxt(ctxt);
2898
- if ((timing) && (!repeat)) {
2899
- endTimer("Validating");
2900
- }
2901
- }
2902
- #endif
2903
-
2904
- #ifdef LIBXML_DEBUG_ENABLED
2905
- #if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED)
2906
- if ((debugent) && (!html))
2907
- xmlDebugDumpEntities(stderr, doc);
2908
- #endif
2909
- #endif
2910
-
2911
- /*
2912
- * free it.
2913
- */
2914
- if ((timing) && (!repeat)) {
2915
- startTimer();
2916
- }
2917
- xmlFreeDoc(doc);
2918
- if ((timing) && (!repeat)) {
2919
- endTimer("Freeing");
2920
- }
2921
- }
2922
-
2923
- /************************************************************************
2924
- * *
2925
- * Usage and Main *
2926
- * *
2927
- ************************************************************************/
2928
-
2929
- static void showVersion(const char *name) {
2930
- fprintf(stderr, "%s: using libxml version %s\n", name, xmlParserVersion);
2931
- fprintf(stderr, " compiled with: ");
2932
- if (xmlHasFeature(XML_WITH_THREAD)) fprintf(stderr, "Threads ");
2933
- if (xmlHasFeature(XML_WITH_TREE)) fprintf(stderr, "Tree ");
2934
- if (xmlHasFeature(XML_WITH_OUTPUT)) fprintf(stderr, "Output ");
2935
- if (xmlHasFeature(XML_WITH_PUSH)) fprintf(stderr, "Push ");
2936
- if (xmlHasFeature(XML_WITH_READER)) fprintf(stderr, "Reader ");
2937
- if (xmlHasFeature(XML_WITH_PATTERN)) fprintf(stderr, "Patterns ");
2938
- if (xmlHasFeature(XML_WITH_WRITER)) fprintf(stderr, "Writer ");
2939
- if (xmlHasFeature(XML_WITH_SAX1)) fprintf(stderr, "SAXv1 ");
2940
- if (xmlHasFeature(XML_WITH_FTP)) fprintf(stderr, "FTP ");
2941
- if (xmlHasFeature(XML_WITH_HTTP)) fprintf(stderr, "HTTP ");
2942
- if (xmlHasFeature(XML_WITH_VALID)) fprintf(stderr, "DTDValid ");
2943
- if (xmlHasFeature(XML_WITH_HTML)) fprintf(stderr, "HTML ");
2944
- if (xmlHasFeature(XML_WITH_LEGACY)) fprintf(stderr, "Legacy ");
2945
- if (xmlHasFeature(XML_WITH_C14N)) fprintf(stderr, "C14N ");
2946
- if (xmlHasFeature(XML_WITH_CATALOG)) fprintf(stderr, "Catalog ");
2947
- if (xmlHasFeature(XML_WITH_XPATH)) fprintf(stderr, "XPath ");
2948
- if (xmlHasFeature(XML_WITH_XPTR)) fprintf(stderr, "XPointer ");
2949
- if (xmlHasFeature(XML_WITH_XINCLUDE)) fprintf(stderr, "XInclude ");
2950
- if (xmlHasFeature(XML_WITH_ICONV)) fprintf(stderr, "Iconv ");
2951
- if (xmlHasFeature(XML_WITH_ISO8859X)) fprintf(stderr, "ISO8859X ");
2952
- if (xmlHasFeature(XML_WITH_UNICODE)) fprintf(stderr, "Unicode ");
2953
- if (xmlHasFeature(XML_WITH_REGEXP)) fprintf(stderr, "Regexps ");
2954
- if (xmlHasFeature(XML_WITH_AUTOMATA)) fprintf(stderr, "Automata ");
2955
- if (xmlHasFeature(XML_WITH_EXPR)) fprintf(stderr, "Expr ");
2956
- if (xmlHasFeature(XML_WITH_SCHEMAS)) fprintf(stderr, "Schemas ");
2957
- if (xmlHasFeature(XML_WITH_SCHEMATRON)) fprintf(stderr, "Schematron ");
2958
- if (xmlHasFeature(XML_WITH_MODULES)) fprintf(stderr, "Modules ");
2959
- if (xmlHasFeature(XML_WITH_DEBUG)) fprintf(stderr, "Debug ");
2960
- if (xmlHasFeature(XML_WITH_DEBUG_MEM)) fprintf(stderr, "MemDebug ");
2961
- if (xmlHasFeature(XML_WITH_DEBUG_RUN)) fprintf(stderr, "RunDebug ");
2962
- if (xmlHasFeature(XML_WITH_ZLIB)) fprintf(stderr, "Zlib ");
2963
- if (xmlHasFeature(XML_WITH_LZMA)) fprintf(stderr, "Lzma ");
2964
- fprintf(stderr, "\n");
2965
- }
2966
-
2967
- static void usage(const char *name) {
2968
- printf("Usage : %s [options] XMLfiles ...\n", name);
2969
- #ifdef LIBXML_OUTPUT_ENABLED
2970
- printf("\tParse the XML files and output the result of the parsing\n");
2971
- #else
2972
- printf("\tParse the XML files\n");
2973
- #endif /* LIBXML_OUTPUT_ENABLED */
2974
- printf("\t--version : display the version of the XML library used\n");
2975
- #ifdef LIBXML_DEBUG_ENABLED
2976
- printf("\t--debug : dump a debug tree of the in-memory document\n");
2977
- printf("\t--shell : run a navigating shell\n");
2978
- printf("\t--debugent : debug the entities defined in the document\n");
2979
- #else
2980
- #ifdef LIBXML_READER_ENABLED
2981
- printf("\t--debug : dump the nodes content when using --stream\n");
2982
- #endif /* LIBXML_READER_ENABLED */
2983
- #endif
2984
- #ifdef LIBXML_TREE_ENABLED
2985
- printf("\t--copy : used to test the internal copy implementation\n");
2986
- #endif /* LIBXML_TREE_ENABLED */
2987
- printf("\t--recover : output what was parsable on broken XML documents\n");
2988
- printf("\t--huge : remove any internal arbitrary parser limits\n");
2989
- printf("\t--noent : substitute entity references by their value\n");
2990
- printf("\t--noenc : ignore any encoding specified inside the document\n");
2991
- printf("\t--noout : don't output the result tree\n");
2992
- printf("\t--path 'paths': provide a set of paths for resources\n");
2993
- printf("\t--load-trace : print trace of all external entites loaded\n");
2994
- printf("\t--nonet : refuse to fetch DTDs or entities over network\n");
2995
- printf("\t--nocompact : do not generate compact text nodes\n");
2996
- printf("\t--htmlout : output results as HTML\n");
2997
- printf("\t--nowrap : do not put HTML doc wrapper\n");
2998
- #ifdef LIBXML_VALID_ENABLED
2999
- printf("\t--valid : validate the document in addition to std well-formed check\n");
3000
- printf("\t--postvalid : do a posteriori validation, i.e after parsing\n");
3001
- printf("\t--dtdvalid URL : do a posteriori validation against a given DTD\n");
3002
- printf("\t--dtdvalidfpi FPI : same but name the DTD with a Public Identifier\n");
3003
- #endif /* LIBXML_VALID_ENABLED */
3004
- printf("\t--timing : print some timings\n");
3005
- printf("\t--output file or -o file: save to a given file\n");
3006
- printf("\t--repeat : repeat 100 times, for timing or profiling\n");
3007
- printf("\t--insert : ad-hoc test for valid insertions\n");
3008
- #ifdef LIBXML_OUTPUT_ENABLED
3009
- #ifdef HAVE_ZLIB_H
3010
- printf("\t--compress : turn on gzip compression of output\n");
3011
- #endif
3012
- #endif /* LIBXML_OUTPUT_ENABLED */
3013
- #ifdef LIBXML_HTML_ENABLED
3014
- printf("\t--html : use the HTML parser\n");
3015
- printf("\t--xmlout : force to use the XML serializer when using --html\n");
3016
- printf("\t--nodefdtd : do not default HTML doctype\n");
3017
- #endif
3018
- #ifdef LIBXML_PUSH_ENABLED
3019
- printf("\t--push : use the push mode of the parser\n");
3020
- #endif /* LIBXML_PUSH_ENABLED */
3021
- #ifdef HAVE_MMAP
3022
- printf("\t--memory : parse from memory\n");
3023
- #endif
3024
- printf("\t--maxmem nbbytes : limits memory allocation to nbbytes bytes\n");
3025
- printf("\t--nowarning : do not emit warnings from parser/validator\n");
3026
- printf("\t--noblanks : drop (ignorable?) blanks spaces\n");
3027
- printf("\t--nocdata : replace cdata section with text nodes\n");
3028
- #ifdef LIBXML_OUTPUT_ENABLED
3029
- printf("\t--format : reformat/reindent the input\n");
3030
- printf("\t--encode encoding : output in the given encoding\n");
3031
- printf("\t--dropdtd : remove the DOCTYPE of the input docs\n");
3032
- printf("\t--pretty STYLE : pretty-print in a particular style\n");
3033
- printf("\t 0 Do not pretty print\n");
3034
- printf("\t 1 Format the XML content, as --format\n");
3035
- printf("\t 2 Add whitespace inside tags, preserving content\n");
3036
- #endif /* LIBXML_OUTPUT_ENABLED */
3037
- printf("\t--c14n : save in W3C canonical format v1.0 (with comments)\n");
3038
- printf("\t--c14n11 : save in W3C canonical format v1.1 (with comments)\n");
3039
- printf("\t--exc-c14n : save in W3C exclusive canonical format (with comments)\n");
3040
- #ifdef LIBXML_C14N_ENABLED
3041
- #endif /* LIBXML_C14N_ENABLED */
3042
- printf("\t--nsclean : remove redundant namespace declarations\n");
3043
- printf("\t--testIO : test user I/O support\n");
3044
- #ifdef LIBXML_CATALOG_ENABLED
3045
- printf("\t--catalogs : use SGML catalogs from $SGML_CATALOG_FILES\n");
3046
- printf("\t otherwise XML Catalogs starting from \n");
3047
- printf("\t %s are activated by default\n", XML_XML_DEFAULT_CATALOG);
3048
- printf("\t--nocatalogs: deactivate all catalogs\n");
3049
- #endif
3050
- printf("\t--auto : generate a small doc on the fly\n");
3051
- #ifdef LIBXML_XINCLUDE_ENABLED
3052
- printf("\t--xinclude : do XInclude processing\n");
3053
- printf("\t--noxincludenode : same but do not generate XInclude nodes\n");
3054
- printf("\t--nofixup-base-uris : do not fixup xml:base uris\n");
3055
- #endif
3056
- printf("\t--loaddtd : fetch external DTD\n");
3057
- printf("\t--dtdattr : loaddtd + populate the tree with inherited attributes \n");
3058
- #ifdef LIBXML_READER_ENABLED
3059
- printf("\t--stream : use the streaming interface to process very large files\n");
3060
- printf("\t--walker : create a reader and walk though the resulting doc\n");
3061
- #endif /* LIBXML_READER_ENABLED */
3062
- #ifdef LIBXML_PATTERN_ENABLED
3063
- printf("\t--pattern pattern_value : test the pattern support\n");
3064
- #endif
3065
- printf("\t--chkregister : verify the node registration code\n");
3066
- #ifdef LIBXML_SCHEMAS_ENABLED
3067
- printf("\t--relaxng schema : do RelaxNG validation against the schema\n");
3068
- printf("\t--schema schema : do validation against the WXS schema\n");
3069
- #endif
3070
- #ifdef LIBXML_SCHEMATRON_ENABLED
3071
- printf("\t--schematron schema : do validation against a schematron\n");
3072
- #endif
3073
- #ifdef LIBXML_SAX1_ENABLED
3074
- printf("\t--sax1: use the old SAX1 interfaces for processing\n");
3075
- #endif
3076
- printf("\t--sax: do not build a tree but work just at the SAX level\n");
3077
- printf("\t--oldxml10: use XML-1.0 parsing rules before the 5th edition\n");
3078
- #ifdef LIBXML_XPATH_ENABLED
3079
- printf("\t--xpath expr: evaluate the XPath expression, inply --noout\n");
3080
- #endif
3081
-
3082
- printf("\nLibxml project home page: http://xmlsoft.org/\n");
3083
- printf("To report bugs or get some help check: http://xmlsoft.org/bugs.html\n");
3084
- }
3085
-
3086
- static void registerNode(xmlNodePtr node)
3087
- {
3088
- node->_private = malloc(sizeof(long));
3089
- *(long*)node->_private = (long) 0x81726354;
3090
- nbregister++;
3091
- }
3092
-
3093
- static void deregisterNode(xmlNodePtr node)
3094
- {
3095
- assert(node->_private != NULL);
3096
- assert(*(long*)node->_private == (long) 0x81726354);
3097
- free(node->_private);
3098
- nbregister--;
3099
- }
3100
-
3101
- int
3102
- main(int argc, char **argv) {
3103
- int i, acount;
3104
- int files = 0;
3105
- int version = 0;
3106
- const char* indent;
3107
-
3108
- if (argc <= 1) {
3109
- usage(argv[0]);
3110
- return(1);
3111
- }
3112
- LIBXML_TEST_VERSION
3113
- for (i = 1; i < argc ; i++) {
3114
- if (!strcmp(argv[i], "-"))
3115
- break;
3116
-
3117
- if (argv[i][0] != '-')
3118
- continue;
3119
- if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
3120
- debug++;
3121
- else
3122
- #ifdef LIBXML_DEBUG_ENABLED
3123
- if ((!strcmp(argv[i], "-shell")) ||
3124
- (!strcmp(argv[i], "--shell"))) {
3125
- shell++;
3126
- noout = 1;
3127
- } else
3128
- #endif
3129
- #ifdef LIBXML_TREE_ENABLED
3130
- if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy")))
3131
- copy++;
3132
- else
3133
- #endif /* LIBXML_TREE_ENABLED */
3134
- if ((!strcmp(argv[i], "-recover")) ||
3135
- (!strcmp(argv[i], "--recover"))) {
3136
- recovery++;
3137
- options |= XML_PARSE_RECOVER;
3138
- } else if ((!strcmp(argv[i], "-huge")) ||
3139
- (!strcmp(argv[i], "--huge"))) {
3140
- options |= XML_PARSE_HUGE;
3141
- } else if ((!strcmp(argv[i], "-noent")) ||
3142
- (!strcmp(argv[i], "--noent"))) {
3143
- noent++;
3144
- options |= XML_PARSE_NOENT;
3145
- } else if ((!strcmp(argv[i], "-noenc")) ||
3146
- (!strcmp(argv[i], "--noenc"))) {
3147
- noenc++;
3148
- options |= XML_PARSE_IGNORE_ENC;
3149
- } else if ((!strcmp(argv[i], "-nsclean")) ||
3150
- (!strcmp(argv[i], "--nsclean"))) {
3151
- options |= XML_PARSE_NSCLEAN;
3152
- } else if ((!strcmp(argv[i], "-nocdata")) ||
3153
- (!strcmp(argv[i], "--nocdata"))) {
3154
- options |= XML_PARSE_NOCDATA;
3155
- } else if ((!strcmp(argv[i], "-nodict")) ||
3156
- (!strcmp(argv[i], "--nodict"))) {
3157
- options |= XML_PARSE_NODICT;
3158
- } else if ((!strcmp(argv[i], "-version")) ||
3159
- (!strcmp(argv[i], "--version"))) {
3160
- showVersion(argv[0]);
3161
- version = 1;
3162
- } else if ((!strcmp(argv[i], "-noout")) ||
3163
- (!strcmp(argv[i], "--noout")))
3164
- noout++;
3165
- #ifdef LIBXML_OUTPUT_ENABLED
3166
- else if ((!strcmp(argv[i], "-o")) ||
3167
- (!strcmp(argv[i], "-output")) ||
3168
- (!strcmp(argv[i], "--output"))) {
3169
- i++;
3170
- output = argv[i];
3171
- }
3172
- #endif /* LIBXML_OUTPUT_ENABLED */
3173
- else if ((!strcmp(argv[i], "-htmlout")) ||
3174
- (!strcmp(argv[i], "--htmlout")))
3175
- htmlout++;
3176
- else if ((!strcmp(argv[i], "-nowrap")) ||
3177
- (!strcmp(argv[i], "--nowrap")))
3178
- nowrap++;
3179
- #ifdef LIBXML_HTML_ENABLED
3180
- else if ((!strcmp(argv[i], "-html")) ||
3181
- (!strcmp(argv[i], "--html"))) {
3182
- html++;
3183
- }
3184
- else if ((!strcmp(argv[i], "-xmlout")) ||
3185
- (!strcmp(argv[i], "--xmlout"))) {
3186
- xmlout++;
3187
- } else if ((!strcmp(argv[i], "-nodefdtd")) ||
3188
- (!strcmp(argv[i], "--nodefdtd"))) {
3189
- nodefdtd++;
3190
- options |= HTML_PARSE_NODEFDTD;
3191
- }
3192
- #endif /* LIBXML_HTML_ENABLED */
3193
- else if ((!strcmp(argv[i], "-loaddtd")) ||
3194
- (!strcmp(argv[i], "--loaddtd"))) {
3195
- loaddtd++;
3196
- options |= XML_PARSE_DTDLOAD;
3197
- } else if ((!strcmp(argv[i], "-dtdattr")) ||
3198
- (!strcmp(argv[i], "--dtdattr"))) {
3199
- loaddtd++;
3200
- dtdattrs++;
3201
- options |= XML_PARSE_DTDATTR;
3202
- }
3203
- #ifdef LIBXML_VALID_ENABLED
3204
- else if ((!strcmp(argv[i], "-valid")) ||
3205
- (!strcmp(argv[i], "--valid"))) {
3206
- valid++;
3207
- options |= XML_PARSE_DTDVALID;
3208
- } else if ((!strcmp(argv[i], "-postvalid")) ||
3209
- (!strcmp(argv[i], "--postvalid"))) {
3210
- postvalid++;
3211
- loaddtd++;
3212
- options |= XML_PARSE_DTDLOAD;
3213
- } else if ((!strcmp(argv[i], "-dtdvalid")) ||
3214
- (!strcmp(argv[i], "--dtdvalid"))) {
3215
- i++;
3216
- dtdvalid = argv[i];
3217
- loaddtd++;
3218
- options |= XML_PARSE_DTDLOAD;
3219
- } else if ((!strcmp(argv[i], "-dtdvalidfpi")) ||
3220
- (!strcmp(argv[i], "--dtdvalidfpi"))) {
3221
- i++;
3222
- dtdvalidfpi = argv[i];
3223
- loaddtd++;
3224
- options |= XML_PARSE_DTDLOAD;
3225
- }
3226
- #endif /* LIBXML_VALID_ENABLED */
3227
- else if ((!strcmp(argv[i], "-dropdtd")) ||
3228
- (!strcmp(argv[i], "--dropdtd")))
3229
- dropdtd++;
3230
- else if ((!strcmp(argv[i], "-insert")) ||
3231
- (!strcmp(argv[i], "--insert")))
3232
- insert++;
3233
- else if ((!strcmp(argv[i], "-timing")) ||
3234
- (!strcmp(argv[i], "--timing")))
3235
- timing++;
3236
- else if ((!strcmp(argv[i], "-auto")) ||
3237
- (!strcmp(argv[i], "--auto")))
3238
- generate++;
3239
- else if ((!strcmp(argv[i], "-repeat")) ||
3240
- (!strcmp(argv[i], "--repeat"))) {
3241
- if (repeat)
3242
- repeat *= 10;
3243
- else
3244
- repeat = 100;
3245
- }
3246
- #ifdef LIBXML_PUSH_ENABLED
3247
- else if ((!strcmp(argv[i], "-push")) ||
3248
- (!strcmp(argv[i], "--push")))
3249
- push++;
3250
- #endif /* LIBXML_PUSH_ENABLED */
3251
- #ifdef HAVE_MMAP
3252
- else if ((!strcmp(argv[i], "-memory")) ||
3253
- (!strcmp(argv[i], "--memory")))
3254
- memory++;
3255
- #endif
3256
- else if ((!strcmp(argv[i], "-testIO")) ||
3257
- (!strcmp(argv[i], "--testIO")))
3258
- testIO++;
3259
- #ifdef LIBXML_XINCLUDE_ENABLED
3260
- else if ((!strcmp(argv[i], "-xinclude")) ||
3261
- (!strcmp(argv[i], "--xinclude"))) {
3262
- xinclude++;
3263
- options |= XML_PARSE_XINCLUDE;
3264
- }
3265
- else if ((!strcmp(argv[i], "-noxincludenode")) ||
3266
- (!strcmp(argv[i], "--noxincludenode"))) {
3267
- xinclude++;
3268
- options |= XML_PARSE_XINCLUDE;
3269
- options |= XML_PARSE_NOXINCNODE;
3270
- }
3271
- else if ((!strcmp(argv[i], "-nofixup-base-uris")) ||
3272
- (!strcmp(argv[i], "--nofixup-base-uris"))) {
3273
- xinclude++;
3274
- options |= XML_PARSE_XINCLUDE;
3275
- options |= XML_PARSE_NOBASEFIX;
3276
- }
3277
- #endif
3278
- #ifdef LIBXML_OUTPUT_ENABLED
3279
- #ifdef HAVE_ZLIB_H
3280
- else if ((!strcmp(argv[i], "-compress")) ||
3281
- (!strcmp(argv[i], "--compress"))) {
3282
- compress++;
3283
- xmlSetCompressMode(9);
3284
- }
3285
- #endif
3286
- #endif /* LIBXML_OUTPUT_ENABLED */
3287
- else if ((!strcmp(argv[i], "-nowarning")) ||
3288
- (!strcmp(argv[i], "--nowarning"))) {
3289
- xmlGetWarningsDefaultValue = 0;
3290
- xmlPedanticParserDefault(0);
3291
- options |= XML_PARSE_NOWARNING;
3292
- }
3293
- else if ((!strcmp(argv[i], "-pedantic")) ||
3294
- (!strcmp(argv[i], "--pedantic"))) {
3295
- xmlGetWarningsDefaultValue = 1;
3296
- xmlPedanticParserDefault(1);
3297
- options |= XML_PARSE_PEDANTIC;
3298
- }
3299
- #ifdef LIBXML_DEBUG_ENABLED
3300
- else if ((!strcmp(argv[i], "-debugent")) ||
3301
- (!strcmp(argv[i], "--debugent"))) {
3302
- debugent++;
3303
- xmlParserDebugEntities = 1;
3304
- }
3305
- #endif
3306
- #ifdef LIBXML_C14N_ENABLED
3307
- else if ((!strcmp(argv[i], "-c14n")) ||
3308
- (!strcmp(argv[i], "--c14n"))) {
3309
- canonical++;
3310
- options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
3311
- }
3312
- else if ((!strcmp(argv[i], "-c14n11")) ||
3313
- (!strcmp(argv[i], "--c14n11"))) {
3314
- canonical_11++;
3315
- options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
3316
- }
3317
- else if ((!strcmp(argv[i], "-exc-c14n")) ||
3318
- (!strcmp(argv[i], "--exc-c14n"))) {
3319
- exc_canonical++;
3320
- options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
3321
- }
3322
- #endif
3323
- #ifdef LIBXML_CATALOG_ENABLED
3324
- else if ((!strcmp(argv[i], "-catalogs")) ||
3325
- (!strcmp(argv[i], "--catalogs"))) {
3326
- catalogs++;
3327
- } else if ((!strcmp(argv[i], "-nocatalogs")) ||
3328
- (!strcmp(argv[i], "--nocatalogs"))) {
3329
- nocatalogs++;
3330
- }
3331
- #endif
3332
- else if ((!strcmp(argv[i], "-encode")) ||
3333
- (!strcmp(argv[i], "--encode"))) {
3334
- i++;
3335
- encoding = argv[i];
3336
- /*
3337
- * OK it's for testing purposes
3338
- */
3339
- xmlAddEncodingAlias("UTF-8", "DVEnc");
3340
- }
3341
- else if ((!strcmp(argv[i], "-noblanks")) ||
3342
- (!strcmp(argv[i], "--noblanks"))) {
3343
- noblanks++;
3344
- xmlKeepBlanksDefault(0);
3345
- options |= XML_PARSE_NOBLANKS;
3346
- }
3347
- else if ((!strcmp(argv[i], "-maxmem")) ||
3348
- (!strcmp(argv[i], "--maxmem"))) {
3349
- i++;
3350
- if (sscanf(argv[i], "%d", &maxmem) == 1) {
3351
- xmlMemSetup(myFreeFunc, myMallocFunc, myReallocFunc,
3352
- myStrdupFunc);
3353
- } else {
3354
- maxmem = 0;
3355
- }
3356
- }
3357
- else if ((!strcmp(argv[i], "-format")) ||
3358
- (!strcmp(argv[i], "--format"))) {
3359
- noblanks++;
3360
- #ifdef LIBXML_OUTPUT_ENABLED
3361
- format = 1;
3362
- #endif /* LIBXML_OUTPUT_ENABLED */
3363
- xmlKeepBlanksDefault(0);
3364
- }
3365
- else if ((!strcmp(argv[i], "-pretty")) ||
3366
- (!strcmp(argv[i], "--pretty"))) {
3367
- i++;
3368
- #ifdef LIBXML_OUTPUT_ENABLED
3369
- format = atoi(argv[i]);
3370
- if (format == 1) {
3371
- noblanks++;
3372
- xmlKeepBlanksDefault(0);
3373
- }
3374
- #endif /* LIBXML_OUTPUT_ENABLED */
3375
- }
3376
- #ifdef LIBXML_READER_ENABLED
3377
- else if ((!strcmp(argv[i], "-stream")) ||
3378
- (!strcmp(argv[i], "--stream"))) {
3379
- stream++;
3380
- }
3381
- else if ((!strcmp(argv[i], "-walker")) ||
3382
- (!strcmp(argv[i], "--walker"))) {
3383
- walker++;
3384
- noout++;
3385
- }
3386
- #endif /* LIBXML_READER_ENABLED */
3387
- #ifdef LIBXML_SAX1_ENABLED
3388
- else if ((!strcmp(argv[i], "-sax1")) ||
3389
- (!strcmp(argv[i], "--sax1"))) {
3390
- sax1++;
3391
- options |= XML_PARSE_SAX1;
3392
- }
3393
- #endif /* LIBXML_SAX1_ENABLED */
3394
- else if ((!strcmp(argv[i], "-sax")) ||
3395
- (!strcmp(argv[i], "--sax"))) {
3396
- sax++;
3397
- }
3398
- else if ((!strcmp(argv[i], "-chkregister")) ||
3399
- (!strcmp(argv[i], "--chkregister"))) {
3400
- chkregister++;
3401
- #ifdef LIBXML_SCHEMAS_ENABLED
3402
- } else if ((!strcmp(argv[i], "-relaxng")) ||
3403
- (!strcmp(argv[i], "--relaxng"))) {
3404
- i++;
3405
- relaxng = argv[i];
3406
- noent++;
3407
- options |= XML_PARSE_NOENT;
3408
- } else if ((!strcmp(argv[i], "-schema")) ||
3409
- (!strcmp(argv[i], "--schema"))) {
3410
- i++;
3411
- schema = argv[i];
3412
- noent++;
3413
- #endif
3414
- #ifdef LIBXML_SCHEMATRON_ENABLED
3415
- } else if ((!strcmp(argv[i], "-schematron")) ||
3416
- (!strcmp(argv[i], "--schematron"))) {
3417
- i++;
3418
- schematron = argv[i];
3419
- noent++;
3420
- #endif
3421
- } else if ((!strcmp(argv[i], "-nonet")) ||
3422
- (!strcmp(argv[i], "--nonet"))) {
3423
- options |= XML_PARSE_NONET;
3424
- xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
3425
- } else if ((!strcmp(argv[i], "-nocompact")) ||
3426
- (!strcmp(argv[i], "--nocompact"))) {
3427
- options &= ~XML_PARSE_COMPACT;
3428
- } else if ((!strcmp(argv[i], "-load-trace")) ||
3429
- (!strcmp(argv[i], "--load-trace"))) {
3430
- load_trace++;
3431
- } else if ((!strcmp(argv[i], "-path")) ||
3432
- (!strcmp(argv[i], "--path"))) {
3433
- i++;
3434
- parsePath(BAD_CAST argv[i]);
3435
- #ifdef LIBXML_PATTERN_ENABLED
3436
- } else if ((!strcmp(argv[i], "-pattern")) ||
3437
- (!strcmp(argv[i], "--pattern"))) {
3438
- i++;
3439
- pattern = argv[i];
3440
- #endif
3441
- #ifdef LIBXML_XPATH_ENABLED
3442
- } else if ((!strcmp(argv[i], "-xpath")) ||
3443
- (!strcmp(argv[i], "--xpath"))) {
3444
- i++;
3445
- noout++;
3446
- xpathquery = argv[i];
3447
- #endif
3448
- } else if ((!strcmp(argv[i], "-oldxml10")) ||
3449
- (!strcmp(argv[i], "--oldxml10"))) {
3450
- oldxml10++;
3451
- options |= XML_PARSE_OLD10;
3452
- } else {
3453
- fprintf(stderr, "Unknown option %s\n", argv[i]);
3454
- usage(argv[0]);
3455
- return(1);
3456
- }
3457
- }
3458
-
3459
- #ifdef LIBXML_CATALOG_ENABLED
3460
- if (nocatalogs == 0) {
3461
- if (catalogs) {
3462
- const char *catal;
3463
-
3464
- catal = getenv("SGML_CATALOG_FILES");
3465
- if (catal != NULL) {
3466
- xmlLoadCatalogs(catal);
3467
- } else {
3468
- fprintf(stderr, "Variable $SGML_CATALOG_FILES not set\n");
3469
- }
3470
- }
3471
- }
3472
- #endif
3473
-
3474
- #ifdef LIBXML_SAX1_ENABLED
3475
- if (sax1)
3476
- xmlSAXDefaultVersion(1);
3477
- else
3478
- xmlSAXDefaultVersion(2);
3479
- #endif /* LIBXML_SAX1_ENABLED */
3480
-
3481
- if (chkregister) {
3482
- xmlRegisterNodeDefault(registerNode);
3483
- xmlDeregisterNodeDefault(deregisterNode);
3484
- }
3485
-
3486
- indent = getenv("XMLLINT_INDENT");
3487
- if(indent != NULL) {
3488
- xmlTreeIndentString = indent;
3489
- }
3490
-
3491
-
3492
- defaultEntityLoader = xmlGetExternalEntityLoader();
3493
- xmlSetExternalEntityLoader(xmllintExternalEntityLoader);
3494
-
3495
- xmlLineNumbersDefault(1);
3496
- if (loaddtd != 0)
3497
- xmlLoadExtDtdDefaultValue |= XML_DETECT_IDS;
3498
- if (dtdattrs)
3499
- xmlLoadExtDtdDefaultValue |= XML_COMPLETE_ATTRS;
3500
- if (noent != 0) xmlSubstituteEntitiesDefault(1);
3501
- #ifdef LIBXML_VALID_ENABLED
3502
- if (valid != 0) xmlDoValidityCheckingDefaultValue = 1;
3503
- #endif /* LIBXML_VALID_ENABLED */
3504
- if ((htmlout) && (!nowrap)) {
3505
- xmlGenericError(xmlGenericErrorContext,
3506
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\n");
3507
- xmlGenericError(xmlGenericErrorContext,
3508
- "\t\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n");
3509
- xmlGenericError(xmlGenericErrorContext,
3510
- "<html><head><title>%s output</title></head>\n",
3511
- argv[0]);
3512
- xmlGenericError(xmlGenericErrorContext,
3513
- "<body bgcolor=\"#ffffff\"><h1 align=\"center\">%s output</h1>\n",
3514
- argv[0]);
3515
- }
3516
-
3517
- #ifdef LIBXML_SCHEMATRON_ENABLED
3518
- if ((schematron != NULL) && (sax == 0)
3519
- #ifdef LIBXML_READER_ENABLED
3520
- && (stream == 0)
3521
- #endif /* LIBXML_READER_ENABLED */
3522
- ) {
3523
- xmlSchematronParserCtxtPtr ctxt;
3524
-
3525
- /* forces loading the DTDs */
3526
- xmlLoadExtDtdDefaultValue |= 1;
3527
- options |= XML_PARSE_DTDLOAD;
3528
- if (timing) {
3529
- startTimer();
3530
- }
3531
- ctxt = xmlSchematronNewParserCtxt(schematron);
3532
- #if 0
3533
- xmlSchematronSetParserErrors(ctxt,
3534
- (xmlSchematronValidityErrorFunc) fprintf,
3535
- (xmlSchematronValidityWarningFunc) fprintf,
3536
- stderr);
3537
- #endif
3538
- wxschematron = xmlSchematronParse(ctxt);
3539
- if (wxschematron == NULL) {
3540
- xmlGenericError(xmlGenericErrorContext,
3541
- "Schematron schema %s failed to compile\n", schematron);
3542
- progresult = XMLLINT_ERR_SCHEMACOMP;
3543
- schematron = NULL;
3544
- }
3545
- xmlSchematronFreeParserCtxt(ctxt);
3546
- if (timing) {
3547
- endTimer("Compiling the schemas");
3548
- }
3549
- }
3550
- #endif
3551
- #ifdef LIBXML_SCHEMAS_ENABLED
3552
- if ((relaxng != NULL) && (sax == 0)
3553
- #ifdef LIBXML_READER_ENABLED
3554
- && (stream == 0)
3555
- #endif /* LIBXML_READER_ENABLED */
3556
- ) {
3557
- xmlRelaxNGParserCtxtPtr ctxt;
3558
-
3559
- /* forces loading the DTDs */
3560
- xmlLoadExtDtdDefaultValue |= 1;
3561
- options |= XML_PARSE_DTDLOAD;
3562
- if (timing) {
3563
- startTimer();
3564
- }
3565
- ctxt = xmlRelaxNGNewParserCtxt(relaxng);
3566
- xmlRelaxNGSetParserErrors(ctxt,
3567
- (xmlRelaxNGValidityErrorFunc) fprintf,
3568
- (xmlRelaxNGValidityWarningFunc) fprintf,
3569
- stderr);
3570
- relaxngschemas = xmlRelaxNGParse(ctxt);
3571
- if (relaxngschemas == NULL) {
3572
- xmlGenericError(xmlGenericErrorContext,
3573
- "Relax-NG schema %s failed to compile\n", relaxng);
3574
- progresult = XMLLINT_ERR_SCHEMACOMP;
3575
- relaxng = NULL;
3576
- }
3577
- xmlRelaxNGFreeParserCtxt(ctxt);
3578
- if (timing) {
3579
- endTimer("Compiling the schemas");
3580
- }
3581
- } else if ((schema != NULL)
3582
- #ifdef LIBXML_READER_ENABLED
3583
- && (stream == 0)
3584
- #endif
3585
- ) {
3586
- xmlSchemaParserCtxtPtr ctxt;
3587
-
3588
- if (timing) {
3589
- startTimer();
3590
- }
3591
- ctxt = xmlSchemaNewParserCtxt(schema);
3592
- xmlSchemaSetParserErrors(ctxt,
3593
- (xmlSchemaValidityErrorFunc) fprintf,
3594
- (xmlSchemaValidityWarningFunc) fprintf,
3595
- stderr);
3596
- wxschemas = xmlSchemaParse(ctxt);
3597
- if (wxschemas == NULL) {
3598
- xmlGenericError(xmlGenericErrorContext,
3599
- "WXS schema %s failed to compile\n", schema);
3600
- progresult = XMLLINT_ERR_SCHEMACOMP;
3601
- schema = NULL;
3602
- }
3603
- xmlSchemaFreeParserCtxt(ctxt);
3604
- if (timing) {
3605
- endTimer("Compiling the schemas");
3606
- }
3607
- }
3608
- #endif /* LIBXML_SCHEMAS_ENABLED */
3609
- #ifdef LIBXML_PATTERN_ENABLED
3610
- if ((pattern != NULL)
3611
- #ifdef LIBXML_READER_ENABLED
3612
- && (walker == 0)
3613
- #endif
3614
- ) {
3615
- patternc = xmlPatterncompile((const xmlChar *) pattern, NULL, 0, NULL);
3616
- if (patternc == NULL) {
3617
- xmlGenericError(xmlGenericErrorContext,
3618
- "Pattern %s failed to compile\n", pattern);
3619
- progresult = XMLLINT_ERR_SCHEMAPAT;
3620
- pattern = NULL;
3621
- }
3622
- }
3623
- #endif /* LIBXML_PATTERN_ENABLED */
3624
- for (i = 1; i < argc ; i++) {
3625
- if ((!strcmp(argv[i], "-encode")) ||
3626
- (!strcmp(argv[i], "--encode"))) {
3627
- i++;
3628
- continue;
3629
- } else if ((!strcmp(argv[i], "-o")) ||
3630
- (!strcmp(argv[i], "-output")) ||
3631
- (!strcmp(argv[i], "--output"))) {
3632
- i++;
3633
- continue;
3634
- }
3635
- #ifdef LIBXML_VALID_ENABLED
3636
- if ((!strcmp(argv[i], "-dtdvalid")) ||
3637
- (!strcmp(argv[i], "--dtdvalid"))) {
3638
- i++;
3639
- continue;
3640
- }
3641
- if ((!strcmp(argv[i], "-path")) ||
3642
- (!strcmp(argv[i], "--path"))) {
3643
- i++;
3644
- continue;
3645
- }
3646
- if ((!strcmp(argv[i], "-dtdvalidfpi")) ||
3647
- (!strcmp(argv[i], "--dtdvalidfpi"))) {
3648
- i++;
3649
- continue;
3650
- }
3651
- #endif /* LIBXML_VALID_ENABLED */
3652
- if ((!strcmp(argv[i], "-relaxng")) ||
3653
- (!strcmp(argv[i], "--relaxng"))) {
3654
- i++;
3655
- continue;
3656
- }
3657
- if ((!strcmp(argv[i], "-maxmem")) ||
3658
- (!strcmp(argv[i], "--maxmem"))) {
3659
- i++;
3660
- continue;
3661
- }
3662
- if ((!strcmp(argv[i], "-pretty")) ||
3663
- (!strcmp(argv[i], "--pretty"))) {
3664
- i++;
3665
- continue;
3666
- }
3667
- if ((!strcmp(argv[i], "-schema")) ||
3668
- (!strcmp(argv[i], "--schema"))) {
3669
- i++;
3670
- continue;
3671
- }
3672
- if ((!strcmp(argv[i], "-schematron")) ||
3673
- (!strcmp(argv[i], "--schematron"))) {
3674
- i++;
3675
- continue;
3676
- }
3677
- #ifdef LIBXML_PATTERN_ENABLED
3678
- if ((!strcmp(argv[i], "-pattern")) ||
3679
- (!strcmp(argv[i], "--pattern"))) {
3680
- i++;
3681
- continue;
3682
- }
3683
- #endif
3684
- #ifdef LIBXML_XPATH_ENABLED
3685
- if ((!strcmp(argv[i], "-xpath")) ||
3686
- (!strcmp(argv[i], "--xpath"))) {
3687
- i++;
3688
- continue;
3689
- }
3690
- #endif
3691
- if ((timing) && (repeat))
3692
- startTimer();
3693
- /* Remember file names. "-" means stdin. <sven@zen.org> */
3694
- if ((argv[i][0] != '-') || (strcmp(argv[i], "-") == 0)) {
3695
- if (repeat) {
3696
- xmlParserCtxtPtr ctxt = NULL;
3697
-
3698
- for (acount = 0;acount < repeat;acount++) {
3699
- #ifdef LIBXML_READER_ENABLED
3700
- if (stream != 0) {
3701
- streamFile(argv[i]);
3702
- } else {
3703
- #endif /* LIBXML_READER_ENABLED */
3704
- if (sax) {
3705
- testSAX(argv[i]);
3706
- } else {
3707
- if (ctxt == NULL)
3708
- ctxt = xmlNewParserCtxt();
3709
- parseAndPrintFile(argv[i], ctxt);
3710
- }
3711
- #ifdef LIBXML_READER_ENABLED
3712
- }
3713
- #endif /* LIBXML_READER_ENABLED */
3714
- }
3715
- if (ctxt != NULL)
3716
- xmlFreeParserCtxt(ctxt);
3717
- } else {
3718
- nbregister = 0;
3719
-
3720
- #ifdef LIBXML_READER_ENABLED
3721
- if (stream != 0)
3722
- streamFile(argv[i]);
3723
- else
3724
- #endif /* LIBXML_READER_ENABLED */
3725
- if (sax) {
3726
- testSAX(argv[i]);
3727
- } else {
3728
- parseAndPrintFile(argv[i], NULL);
3729
- }
3730
-
3731
- if ((chkregister) && (nbregister != 0)) {
3732
- fprintf(stderr, "Registration count off: %d\n", nbregister);
3733
- progresult = XMLLINT_ERR_RDREGIS;
3734
- }
3735
- }
3736
- files ++;
3737
- if ((timing) && (repeat)) {
3738
- endTimer("%d iterations", repeat);
3739
- }
3740
- }
3741
- }
3742
- if (generate)
3743
- parseAndPrintFile(NULL, NULL);
3744
- if ((htmlout) && (!nowrap)) {
3745
- xmlGenericError(xmlGenericErrorContext, "</body></html>\n");
3746
- }
3747
- if ((files == 0) && (!generate) && (version == 0)) {
3748
- usage(argv[0]);
3749
- }
3750
- #ifdef LIBXML_SCHEMATRON_ENABLED
3751
- if (wxschematron != NULL)
3752
- xmlSchematronFree(wxschematron);
3753
- #endif
3754
- #ifdef LIBXML_SCHEMAS_ENABLED
3755
- if (relaxngschemas != NULL)
3756
- xmlRelaxNGFree(relaxngschemas);
3757
- if (wxschemas != NULL)
3758
- xmlSchemaFree(wxschemas);
3759
- xmlRelaxNGCleanupTypes();
3760
- #endif
3761
- #ifdef LIBXML_PATTERN_ENABLED
3762
- if (patternc != NULL)
3763
- xmlFreePattern(patternc);
3764
- #endif
3765
- xmlCleanupParser();
3766
- xmlMemoryDump();
3767
-
3768
- return(progresult);
3769
- }
3770
-