rsvg2 1.1.5-x86-mingw32 → 1.1.6-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (224) hide show
  1. data/lib/1.8/rsvg2.so +0 -0
  2. data/lib/1.9/rsvg2.so +0 -0
  3. data/vendor/local/bin/libxml2-2.dll +0 -0
  4. data/vendor/local/bin/xmlcatalog.exe +0 -0
  5. data/vendor/local/bin/xmllint.exe +0 -0
  6. data/vendor/local/include/libxml2/libxml/DOCBparser.h +9 -9
  7. data/vendor/local/include/libxml2/libxml/HTMLparser.h +25 -23
  8. data/vendor/local/include/libxml2/libxml/HTMLtree.h +19 -19
  9. data/vendor/local/include/libxml2/libxml/SAX.h +37 -37
  10. data/vendor/local/include/libxml2/libxml/SAX2.h +34 -34
  11. data/vendor/local/include/libxml2/libxml/c14n.h +1 -1
  12. data/vendor/local/include/libxml2/libxml/catalog.h +35 -35
  13. data/vendor/local/include/libxml2/libxml/debugXML.h +26 -26
  14. data/vendor/local/include/libxml2/libxml/dict.h +16 -5
  15. data/vendor/local/include/libxml2/libxml/encoding.h +28 -14
  16. data/vendor/local/include/libxml2/libxml/hash.h +24 -24
  17. data/vendor/local/include/libxml2/libxml/list.h +26 -26
  18. data/vendor/local/include/libxml2/libxml/nanoftp.h +44 -24
  19. data/vendor/local/include/libxml2/libxml/nanohttp.h +13 -13
  20. data/vendor/local/include/libxml2/libxml/parser.h +78 -73
  21. data/vendor/local/include/libxml2/libxml/parserInternals.h +106 -73
  22. data/vendor/local/include/libxml2/libxml/schemasInternals.h +2 -2
  23. data/vendor/local/include/libxml2/libxml/schematron.h +11 -11
  24. data/vendor/local/include/libxml2/libxml/tree.h +203 -152
  25. data/vendor/local/include/libxml2/libxml/valid.h +72 -72
  26. data/vendor/local/include/libxml2/libxml/xlink.h +7 -7
  27. data/vendor/local/include/libxml2/libxml/xmlIO.h +71 -65
  28. data/vendor/local/include/libxml2/libxml/xmlautomata.h +22 -22
  29. data/vendor/local/include/libxml2/libxml/xmlerror.h +6 -6
  30. data/vendor/local/include/libxml2/libxml/xmlexports.h +2 -2
  31. data/vendor/local/include/libxml2/libxml/xmlmodule.h +1 -1
  32. data/vendor/local/include/libxml2/libxml/xmlreader.h +24 -20
  33. data/vendor/local/include/libxml2/libxml/xmlsave.h +2 -1
  34. data/vendor/local/include/libxml2/libxml/xmlschemas.h +30 -2
  35. data/vendor/local/include/libxml2/libxml/xmlschemastypes.h +20 -20
  36. data/vendor/local/include/libxml2/libxml/xmlstring.h +3 -3
  37. data/vendor/local/include/libxml2/libxml/xmlversion.h +29 -7
  38. data/vendor/local/include/libxml2/libxml/xmlwriter.h +4 -1
  39. data/vendor/local/include/libxml2/libxml/xpath.h +47 -43
  40. data/vendor/local/include/libxml2/libxml/xpathInternals.h +81 -79
  41. data/vendor/local/include/libxml2/libxml/xpointer.h +23 -23
  42. data/vendor/local/lib/libxml2.def +16 -14
  43. data/vendor/local/lib/libxml2.dll.a +0 -0
  44. data/vendor/local/lib/libxml2.lib +0 -0
  45. data/vendor/local/lib/pkgconfig/libxml-2.0.pc +3 -3
  46. data/vendor/local/manifest/libxml2-dev_2.9.0-1_win32.mft +268 -0
  47. data/vendor/local/manifest/libxml2_2.9.0-1_win32.mft +2 -0
  48. data/vendor/local/share/doc/libxml2-2.9.0/Copyright +27 -0
  49. data/vendor/local/share/doc/libxml2-2.9.0/examples/testHTML.c +880 -0
  50. data/vendor/local/share/doc/libxml2-2.9.0/examples/testSAX.c +1198 -0
  51. data/vendor/local/share/doc/libxml2-2.9.0/examples/testXPath.c +229 -0
  52. data/vendor/local/share/doc/libxml2-2.9.0/examples/xmllint.c +3770 -0
  53. data/vendor/local/share/doc/libxml2-2.9.0/html/DOM.gif +0 -0
  54. data/vendor/local/share/doc/libxml2-2.9.0/html/FAQ.html +282 -0
  55. data/vendor/local/share/doc/libxml2-2.9.0/html/Libxml2-Logo-180x168.gif +0 -0
  56. data/vendor/local/share/doc/libxml2-2.9.0/html/Libxml2-Logo-90x34.gif +0 -0
  57. data/vendor/local/share/doc/libxml2-2.9.0/html/encoding.html +207 -0
  58. data/vendor/local/share/doc/libxml2-2.9.0/html/examples.xml +751 -0
  59. data/vendor/local/share/doc/libxml2-2.9.0/html/examples.xsl +174 -0
  60. data/vendor/local/share/doc/libxml2-2.9.0/html/html/book1.html +13 -0
  61. data/vendor/local/share/doc/libxml2-2.9.0/html/html/home.png +0 -0
  62. data/vendor/local/share/doc/libxml2-2.9.0/html/html/index.html +13 -0
  63. data/vendor/local/share/doc/libxml2-2.9.0/html/html/left.png +0 -0
  64. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-DOCBparser.html +51 -0
  65. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-HTMLparser.html +184 -0
  66. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-HTMLtree.html +73 -0
  67. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-SAX.html +125 -0
  68. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-SAX2.html +128 -0
  69. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-c14n.html +38 -0
  70. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-catalog.html +142 -0
  71. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-chvalid.html +72 -0
  72. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-debugXML.html +120 -0
  73. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-dict.html +58 -0
  74. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-encoding.html +124 -0
  75. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-entities.html +79 -0
  76. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-globals.html +152 -0
  77. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-hash.html +116 -0
  78. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-lib.html +13 -0
  79. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-list.html +120 -0
  80. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-nanoftp.html +94 -0
  81. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-nanohttp.html +65 -0
  82. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-parser.html +559 -0
  83. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-parserInternals.html +322 -0
  84. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-pattern.html +76 -0
  85. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-relaxng.html +162 -0
  86. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-schemasInternals.html +373 -0
  87. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-schematron.html +81 -0
  88. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-threads.html +72 -0
  89. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-tree.html +989 -0
  90. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-uri.html +73 -0
  91. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-valid.html +289 -0
  92. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xinclude.html +59 -0
  93. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xlink.html +82 -0
  94. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlIO.html +212 -0
  95. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlautomata.html +85 -0
  96. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlerror.html +864 -0
  97. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlexports.html +20 -0
  98. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlmemory.html +107 -0
  99. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlmodule.html +38 -0
  100. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlreader.html +330 -0
  101. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlregexp.html +143 -0
  102. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlsave.html +60 -0
  103. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlschemas.html +185 -0
  104. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlschemastypes.html +123 -0
  105. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlstring.html +108 -0
  106. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlunicode.html +512 -0
  107. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlversion.html +62 -0
  108. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xmlwriter.html +261 -0
  109. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xpath.html +310 -0
  110. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xpathInternals.html +394 -0
  111. data/vendor/local/share/doc/libxml2-2.9.0/html/html/libxml-xpointer.html +83 -0
  112. data/vendor/local/share/doc/libxml2-2.9.0/html/html/right.png +0 -0
  113. data/vendor/local/share/doc/libxml2-2.9.0/html/html/up.png +0 -0
  114. data/vendor/local/share/doc/libxml2-2.9.0/html/index.html +14 -0
  115. data/vendor/local/share/doc/libxml2-2.9.0/html/io1.c +166 -0
  116. data/vendor/local/share/doc/libxml2-2.9.0/html/io1.res +5 -0
  117. data/vendor/local/share/doc/libxml2-2.9.0/html/io2.c +58 -0
  118. data/vendor/local/share/doc/libxml2-2.9.0/html/io2.res +2 -0
  119. data/vendor/local/share/doc/libxml2-2.9.0/html/libxml.gif +0 -0
  120. data/vendor/local/share/doc/libxml2-2.9.0/html/parse1.c +56 -0
  121. data/vendor/local/share/doc/libxml2-2.9.0/html/parse2.c +72 -0
  122. data/vendor/local/share/doc/libxml2-2.9.0/html/parse3.c +60 -0
  123. data/vendor/local/share/doc/libxml2-2.9.0/html/parse4.c +143 -0
  124. data/vendor/local/share/doc/libxml2-2.9.0/html/reader1.c +107 -0
  125. data/vendor/local/share/doc/libxml2-2.9.0/html/reader1.res +14 -0
  126. data/vendor/local/share/doc/libxml2-2.9.0/html/reader2.c +122 -0
  127. data/vendor/local/share/doc/libxml2-2.9.0/html/reader3.c +120 -0
  128. data/vendor/local/share/doc/libxml2-2.9.0/html/reader3.res +13 -0
  129. data/vendor/local/share/doc/libxml2-2.9.0/html/reader4.c +122 -0
  130. data/vendor/local/share/doc/libxml2-2.9.0/html/reader4.res +3 -0
  131. data/vendor/local/share/doc/libxml2-2.9.0/html/redhat.gif +0 -0
  132. data/vendor/local/share/doc/libxml2-2.9.0/html/smallfootonly.gif +0 -0
  133. data/vendor/local/share/doc/libxml2-2.9.0/html/structure.gif +0 -0
  134. data/vendor/local/share/doc/libxml2-2.9.0/html/test1.xml +1 -0
  135. data/vendor/local/share/doc/libxml2-2.9.0/html/test2.xml +13 -0
  136. data/vendor/local/share/doc/libxml2-2.9.0/html/test3.xml +39 -0
  137. data/vendor/local/share/doc/libxml2-2.9.0/html/testWriter.c +1198 -0
  138. data/vendor/local/share/doc/libxml2-2.9.0/html/tree1.c +94 -0
  139. data/vendor/local/share/doc/libxml2-2.9.0/html/tree1.res +4 -0
  140. data/vendor/local/share/doc/libxml2-2.9.0/html/tree2.c +118 -0
  141. data/vendor/local/share/doc/libxml2-2.9.0/html/tree2.res +18 -0
  142. data/vendor/local/share/doc/libxml2-2.9.0/html/tst.xml +7 -0
  143. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apa.html +8 -0
  144. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apb.html +14 -0
  145. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apc.html +82 -0
  146. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apd.html +76 -0
  147. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ape.html +78 -0
  148. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apf.html +67 -0
  149. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/apg.html +75 -0
  150. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/aph.html +76 -0
  151. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/api.html +4 -0
  152. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s02.html +14 -0
  153. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s03.html +47 -0
  154. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s04.html +54 -0
  155. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s05.html +55 -0
  156. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s06.html +35 -0
  157. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s07.html +30 -0
  158. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s08.html +38 -0
  159. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ar01s09.html +63 -0
  160. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/blank.png +0 -0
  161. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/1.png +0 -0
  162. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/10.png +0 -0
  163. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/2.png +0 -0
  164. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/3.png +0 -0
  165. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/4.png +0 -0
  166. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/5.png +0 -0
  167. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/6.png +0 -0
  168. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/7.png +0 -0
  169. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/8.png +0 -0
  170. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/callouts/9.png +0 -0
  171. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/caution.png +0 -0
  172. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/draft.png +0 -0
  173. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/home.png +0 -0
  174. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/important.png +0 -0
  175. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/next.png +0 -0
  176. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/note.png +0 -0
  177. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/prev.png +0 -0
  178. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/tip.png +0 -0
  179. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/toc-blank.png +0 -0
  180. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/toc-minus.png +0 -0
  181. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/toc-plus.png +0 -0
  182. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/up.png +0 -0
  183. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/images/warning.png +0 -0
  184. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includeaddattribute.c +64 -0
  185. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includeaddkeyword.c +75 -0
  186. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includeconvert.c +73 -0
  187. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includegetattribute.c +72 -0
  188. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includekeyword.c +79 -0
  189. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/includexpath.c +74 -0
  190. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/index.html +14 -0
  191. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/ix01.html +1 -0
  192. data/vendor/local/share/doc/libxml2-2.9.0/html/tutorial/xmltutorial.pdf +1336 -0
  193. data/vendor/local/share/doc/libxml2-2.9.0/html/w3c.png +0 -0
  194. data/vendor/local/share/doc/libxml2-2.9.0/html/writer.xml +2 -0
  195. data/vendor/local/share/doc/libxml2-2.9.0/html/xml.html +5715 -0
  196. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath1.c +250 -0
  197. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath1.res +5 -0
  198. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath2.c +190 -0
  199. data/vendor/local/share/doc/libxml2-2.9.0/html/xpath2.res +30 -0
  200. data/vendor/local/share/gtk-doc/html/libxml2/general.html +1 -1
  201. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-HTMLparser.html +3 -1
  202. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-dict.html +16 -1
  203. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-encoding.html +11 -1
  204. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-nanoftp.html +15 -5
  205. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-parser.html +8 -4
  206. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-parserInternals.html +20 -5
  207. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-tree.html +72 -18
  208. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlIO.html +10 -0
  209. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlerror.html +5 -3
  210. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlmodule.html +2 -2
  211. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlreader.html +8 -3
  212. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlsave.html +2 -1
  213. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlschemas.html +15 -0
  214. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlversion.html +12 -2
  215. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xmlwriter.html +8 -3
  216. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpath.html +3 -0
  217. data/vendor/local/share/gtk-doc/html/libxml2/libxml2-xpathInternals.html +9 -9
  218. data/vendor/local/share/gtk-doc/html/libxml2/libxml2.devhelp +42 -2
  219. data/vendor/local/share/man/man1/xml2-config.1 +0 -1
  220. data/vendor/local/share/man/man1/xmlcatalog.1 +204 -93
  221. data/vendor/local/share/man/man3/libxml.3 +1 -1
  222. data/vendor/local/src/dieterv/packaging/libxml2_2.9.0-1_win32.log +867 -0
  223. data/vendor/local/src/dieterv/packaging/libxml2_2.9.0-1_win32.sh +68 -0
  224. metadata +163 -7
@@ -0,0 +1,2 @@
1
+ manifest/libxml2_2.9.0-1_win32.mft
2
+ bin/libxml2-2.dll
@@ -0,0 +1,27 @@
1
+ Except where otherwise noted in the source code (e.g. the files hash.c,
2
+ list.c and the trio files, which are covered by a similar licence but
3
+ with different Copyright notices) all the files are:
4
+
5
+ Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is fur-
12
+ nished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
19
+ NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
22
+ NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ Except as contained in this notice, the name of Daniel Veillard shall not
25
+ be used in advertising or otherwise to promote the sale, use or other deal-
26
+ ings in this Software without prior written authorization from him.
27
+
@@ -0,0 +1,880 @@
1
+ /*
2
+ * testHTML.c : a small tester program for HTML input.
3
+ *
4
+ * See Copyright for the status of this software.
5
+ *
6
+ * daniel@veillard.com
7
+ */
8
+
9
+ #include "libxml.h"
10
+
11
+ #ifdef LIBXML_HTML_ENABLED
12
+
13
+ #include <string.h>
14
+ #include <stdarg.h>
15
+
16
+
17
+ #ifdef HAVE_SYS_TYPES_H
18
+ #include <sys/types.h>
19
+ #endif
20
+ #ifdef HAVE_SYS_STAT_H
21
+ #include <sys/stat.h>
22
+ #endif
23
+ #ifdef HAVE_FCNTL_H
24
+ #include <fcntl.h>
25
+ #endif
26
+ #ifdef HAVE_UNISTD_H
27
+ #include <unistd.h>
28
+ #endif
29
+ #ifdef HAVE_STDLIB_H
30
+ #include <stdlib.h>
31
+ #endif
32
+
33
+ #include <libxml/xmlmemory.h>
34
+ #include <libxml/HTMLparser.h>
35
+ #include <libxml/HTMLtree.h>
36
+ #include <libxml/debugXML.h>
37
+ #include <libxml/xmlerror.h>
38
+ #include <libxml/globals.h>
39
+
40
+ #ifdef LIBXML_DEBUG_ENABLED
41
+ static int debug = 0;
42
+ #endif
43
+ static int copy = 0;
44
+ static int sax = 0;
45
+ static int repeat = 0;
46
+ static int noout = 0;
47
+ #ifdef LIBXML_PUSH_ENABLED
48
+ static int push = 0;
49
+ #endif /* LIBXML_PUSH_ENABLED */
50
+ static char *encoding = NULL;
51
+ static int options = 0;
52
+
53
+ static xmlSAXHandler emptySAXHandlerStruct = {
54
+ NULL, /* internalSubset */
55
+ NULL, /* isStandalone */
56
+ NULL, /* hasInternalSubset */
57
+ NULL, /* hasExternalSubset */
58
+ NULL, /* resolveEntity */
59
+ NULL, /* getEntity */
60
+ NULL, /* entityDecl */
61
+ NULL, /* notationDecl */
62
+ NULL, /* attributeDecl */
63
+ NULL, /* elementDecl */
64
+ NULL, /* unparsedEntityDecl */
65
+ NULL, /* setDocumentLocator */
66
+ NULL, /* startDocument */
67
+ NULL, /* endDocument */
68
+ NULL, /* startElement */
69
+ NULL, /* endElement */
70
+ NULL, /* reference */
71
+ NULL, /* characters */
72
+ NULL, /* ignorableWhitespace */
73
+ NULL, /* processingInstruction */
74
+ NULL, /* comment */
75
+ NULL, /* xmlParserWarning */
76
+ NULL, /* xmlParserError */
77
+ NULL, /* xmlParserError */
78
+ NULL, /* getParameterEntity */
79
+ NULL, /* cdataBlock */
80
+ NULL, /* externalSubset */
81
+ 1, /* initialized */
82
+ NULL, /* private */
83
+ NULL, /* startElementNsSAX2Func */
84
+ NULL, /* endElementNsSAX2Func */
85
+ NULL /* xmlStructuredErrorFunc */
86
+ };
87
+
88
+ static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct;
89
+ extern xmlSAXHandlerPtr debugSAXHandler;
90
+
91
+ /************************************************************************
92
+ * *
93
+ * Debug Handlers *
94
+ * *
95
+ ************************************************************************/
96
+
97
+ /**
98
+ * isStandaloneDebug:
99
+ * @ctxt: An XML parser context
100
+ *
101
+ * Is this document tagged standalone ?
102
+ *
103
+ * Returns 1 if true
104
+ */
105
+ static int
106
+ isStandaloneDebug(void *ctx ATTRIBUTE_UNUSED)
107
+ {
108
+ fprintf(stdout, "SAX.isStandalone()\n");
109
+ return(0);
110
+ }
111
+
112
+ /**
113
+ * hasInternalSubsetDebug:
114
+ * @ctxt: An XML parser context
115
+ *
116
+ * Does this document has an internal subset
117
+ *
118
+ * Returns 1 if true
119
+ */
120
+ static int
121
+ hasInternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
122
+ {
123
+ fprintf(stdout, "SAX.hasInternalSubset()\n");
124
+ return(0);
125
+ }
126
+
127
+ /**
128
+ * hasExternalSubsetDebug:
129
+ * @ctxt: An XML parser context
130
+ *
131
+ * Does this document has an external subset
132
+ *
133
+ * Returns 1 if true
134
+ */
135
+ static int
136
+ hasExternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
137
+ {
138
+ fprintf(stdout, "SAX.hasExternalSubset()\n");
139
+ return(0);
140
+ }
141
+
142
+ /**
143
+ * hasInternalSubsetDebug:
144
+ * @ctxt: An XML parser context
145
+ *
146
+ * Does this document has an internal subset
147
+ */
148
+ static void
149
+ internalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
150
+ const xmlChar *ExternalID, const xmlChar *SystemID)
151
+ {
152
+ fprintf(stdout, "SAX.internalSubset(%s,", name);
153
+ if (ExternalID == NULL)
154
+ fprintf(stdout, " ,");
155
+ else
156
+ fprintf(stdout, " %s,", ExternalID);
157
+ if (SystemID == NULL)
158
+ fprintf(stdout, " )\n");
159
+ else
160
+ fprintf(stdout, " %s)\n", SystemID);
161
+ }
162
+
163
+ /**
164
+ * resolveEntityDebug:
165
+ * @ctxt: An XML parser context
166
+ * @publicId: The public ID of the entity
167
+ * @systemId: The system ID of the entity
168
+ *
169
+ * Special entity resolver, better left to the parser, it has
170
+ * more context than the application layer.
171
+ * The default behaviour is to NOT resolve the entities, in that case
172
+ * the ENTITY_REF nodes are built in the structure (and the parameter
173
+ * values).
174
+ *
175
+ * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
176
+ */
177
+ static xmlParserInputPtr
178
+ resolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xmlChar *systemId)
179
+ {
180
+ /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
181
+
182
+
183
+ fprintf(stdout, "SAX.resolveEntity(");
184
+ if (publicId != NULL)
185
+ fprintf(stdout, "%s", (char *)publicId);
186
+ else
187
+ fprintf(stdout, " ");
188
+ if (systemId != NULL)
189
+ fprintf(stdout, ", %s)\n", (char *)systemId);
190
+ else
191
+ fprintf(stdout, ", )\n");
192
+ /*********
193
+ if (systemId != NULL) {
194
+ return(xmlNewInputFromFile(ctxt, (char *) systemId));
195
+ }
196
+ *********/
197
+ return(NULL);
198
+ }
199
+
200
+ /**
201
+ * getEntityDebug:
202
+ * @ctxt: An XML parser context
203
+ * @name: The entity name
204
+ *
205
+ * Get an entity by name
206
+ *
207
+ * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
208
+ */
209
+ static xmlEntityPtr
210
+ getEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
211
+ {
212
+ fprintf(stdout, "SAX.getEntity(%s)\n", name);
213
+ return(NULL);
214
+ }
215
+
216
+ /**
217
+ * getParameterEntityDebug:
218
+ * @ctxt: An XML parser context
219
+ * @name: The entity name
220
+ *
221
+ * Get a parameter entity by name
222
+ *
223
+ * Returns the xmlParserInputPtr
224
+ */
225
+ static xmlEntityPtr
226
+ getParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
227
+ {
228
+ fprintf(stdout, "SAX.getParameterEntity(%s)\n", name);
229
+ return(NULL);
230
+ }
231
+
232
+
233
+ /**
234
+ * entityDeclDebug:
235
+ * @ctxt: An XML parser context
236
+ * @name: the entity name
237
+ * @type: the entity type
238
+ * @publicId: The public ID of the entity
239
+ * @systemId: The system ID of the entity
240
+ * @content: the entity value (without processing).
241
+ *
242
+ * An entity definition has been parsed
243
+ */
244
+ static void
245
+ entityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
246
+ const xmlChar *publicId, const xmlChar *systemId, xmlChar *content)
247
+ {
248
+ fprintf(stdout, "SAX.entityDecl(%s, %d, %s, %s, %s)\n",
249
+ name, type, publicId, systemId, content);
250
+ }
251
+
252
+ /**
253
+ * attributeDeclDebug:
254
+ * @ctxt: An XML parser context
255
+ * @name: the attribute name
256
+ * @type: the attribute type
257
+ *
258
+ * An attribute definition has been parsed
259
+ */
260
+ static void
261
+ attributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *elem, const xmlChar *name,
262
+ int type, int def, const xmlChar *defaultValue,
263
+ xmlEnumerationPtr tree ATTRIBUTE_UNUSED)
264
+ {
265
+ fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, %s, ...)\n",
266
+ elem, name, type, def, defaultValue);
267
+ }
268
+
269
+ /**
270
+ * elementDeclDebug:
271
+ * @ctxt: An XML parser context
272
+ * @name: the element name
273
+ * @type: the element type
274
+ * @content: the element value (without processing).
275
+ *
276
+ * An element definition has been parsed
277
+ */
278
+ static void
279
+ elementDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
280
+ xmlElementContentPtr content ATTRIBUTE_UNUSED)
281
+ {
282
+ fprintf(stdout, "SAX.elementDecl(%s, %d, ...)\n",
283
+ name, type);
284
+ }
285
+
286
+ /**
287
+ * notationDeclDebug:
288
+ * @ctxt: An XML parser context
289
+ * @name: The name of the notation
290
+ * @publicId: The public ID of the entity
291
+ * @systemId: The system ID of the entity
292
+ *
293
+ * What to do when a notation declaration has been parsed.
294
+ */
295
+ static void
296
+ notationDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
297
+ const xmlChar *publicId, const xmlChar *systemId)
298
+ {
299
+ fprintf(stdout, "SAX.notationDecl(%s, %s, %s)\n",
300
+ (char *) name, (char *) publicId, (char *) systemId);
301
+ }
302
+
303
+ /**
304
+ * unparsedEntityDeclDebug:
305
+ * @ctxt: An XML parser context
306
+ * @name: The name of the entity
307
+ * @publicId: The public ID of the entity
308
+ * @systemId: The system ID of the entity
309
+ * @notationName: the name of the notation
310
+ *
311
+ * What to do when an unparsed entity declaration is parsed
312
+ */
313
+ static void
314
+ unparsedEntityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
315
+ const xmlChar *publicId, const xmlChar *systemId,
316
+ const xmlChar *notationName)
317
+ {
318
+ fprintf(stdout, "SAX.unparsedEntityDecl(%s, %s, %s, %s)\n",
319
+ (char *) name, (char *) publicId, (char *) systemId,
320
+ (char *) notationName);
321
+ }
322
+
323
+ /**
324
+ * setDocumentLocatorDebug:
325
+ * @ctxt: An XML parser context
326
+ * @loc: A SAX Locator
327
+ *
328
+ * Receive the document locator at startup, actually xmlDefaultSAXLocator
329
+ * Everything is available on the context, so this is useless in our case.
330
+ */
331
+ static void
332
+ setDocumentLocatorDebug(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
333
+ {
334
+ fprintf(stdout, "SAX.setDocumentLocator()\n");
335
+ }
336
+
337
+ /**
338
+ * startDocumentDebug:
339
+ * @ctxt: An XML parser context
340
+ *
341
+ * called when the document start being processed.
342
+ */
343
+ static void
344
+ startDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
345
+ {
346
+ fprintf(stdout, "SAX.startDocument()\n");
347
+ }
348
+
349
+ /**
350
+ * endDocumentDebug:
351
+ * @ctxt: An XML parser context
352
+ *
353
+ * called when the document end has been detected.
354
+ */
355
+ static void
356
+ endDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
357
+ {
358
+ fprintf(stdout, "SAX.endDocument()\n");
359
+ }
360
+
361
+ /**
362
+ * startElementDebug:
363
+ * @ctxt: An XML parser context
364
+ * @name: The element name
365
+ *
366
+ * called when an opening tag has been processed.
367
+ */
368
+ static void
369
+ startElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts)
370
+ {
371
+ int i;
372
+
373
+ fprintf(stdout, "SAX.startElement(%s", (char *) name);
374
+ if (atts != NULL) {
375
+ for (i = 0;(atts[i] != NULL);i++) {
376
+ fprintf(stdout, ", %s", atts[i++]);
377
+ if (atts[i] != NULL) {
378
+ unsigned char output[40];
379
+ const unsigned char *att = atts[i];
380
+ int outlen, attlen;
381
+ fprintf(stdout, "='");
382
+ while ((attlen = strlen((char*)att)) > 0) {
383
+ outlen = sizeof output - 1;
384
+ htmlEncodeEntities(output, &outlen, att, &attlen, '\'');
385
+ output[outlen] = 0;
386
+ fprintf(stdout, "%s", (char *) output);
387
+ att += attlen;
388
+ }
389
+ fprintf(stdout, "'");
390
+ }
391
+ }
392
+ }
393
+ fprintf(stdout, ")\n");
394
+ }
395
+
396
+ /**
397
+ * endElementDebug:
398
+ * @ctxt: An XML parser context
399
+ * @name: The element name
400
+ *
401
+ * called when the end of an element has been detected.
402
+ */
403
+ static void
404
+ endElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
405
+ {
406
+ fprintf(stdout, "SAX.endElement(%s)\n", (char *) name);
407
+ }
408
+
409
+ /**
410
+ * charactersDebug:
411
+ * @ctxt: An XML parser context
412
+ * @ch: a xmlChar string
413
+ * @len: the number of xmlChar
414
+ *
415
+ * receiving some chars from the parser.
416
+ * Question: how much at a time ???
417
+ */
418
+ static void
419
+ charactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
420
+ {
421
+ unsigned char output[40];
422
+ int inlen = len, outlen = 30;
423
+
424
+ htmlEncodeEntities(output, &outlen, ch, &inlen, 0);
425
+ output[outlen] = 0;
426
+
427
+ fprintf(stdout, "SAX.characters(%s, %d)\n", output, len);
428
+ }
429
+
430
+ /**
431
+ * cdataDebug:
432
+ * @ctxt: An XML parser context
433
+ * @ch: a xmlChar string
434
+ * @len: the number of xmlChar
435
+ *
436
+ * receiving some cdata chars from the parser.
437
+ * Question: how much at a time ???
438
+ */
439
+ static void
440
+ cdataDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
441
+ {
442
+ unsigned char output[40];
443
+ int inlen = len, outlen = 30;
444
+
445
+ htmlEncodeEntities(output, &outlen, ch, &inlen, 0);
446
+ output[outlen] = 0;
447
+
448
+ fprintf(stdout, "SAX.cdata(%s, %d)\n", output, len);
449
+ }
450
+
451
+ /**
452
+ * referenceDebug:
453
+ * @ctxt: An XML parser context
454
+ * @name: The entity name
455
+ *
456
+ * called when an entity reference is detected.
457
+ */
458
+ static void
459
+ referenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
460
+ {
461
+ fprintf(stdout, "SAX.reference(%s)\n", name);
462
+ }
463
+
464
+ /**
465
+ * ignorableWhitespaceDebug:
466
+ * @ctxt: An XML parser context
467
+ * @ch: a xmlChar string
468
+ * @start: the first char in the string
469
+ * @len: the number of xmlChar
470
+ *
471
+ * receiving some ignorable whitespaces from the parser.
472
+ * Question: how much at a time ???
473
+ */
474
+ static void
475
+ ignorableWhitespaceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
476
+ {
477
+ char output[40];
478
+ int i;
479
+
480
+ for (i = 0;(i<len) && (i < 30);i++)
481
+ output[i] = ch[i];
482
+ output[i] = 0;
483
+
484
+ fprintf(stdout, "SAX.ignorableWhitespace(%s, %d)\n", output, len);
485
+ }
486
+
487
+ /**
488
+ * processingInstructionDebug:
489
+ * @ctxt: An XML parser context
490
+ * @target: the target name
491
+ * @data: the PI data's
492
+ * @len: the number of xmlChar
493
+ *
494
+ * A processing instruction has been parsed.
495
+ */
496
+ static void
497
+ processingInstructionDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *target,
498
+ const xmlChar *data)
499
+ {
500
+ fprintf(stdout, "SAX.processingInstruction(%s, %s)\n",
501
+ (char *) target, (char *) data);
502
+ }
503
+
504
+ /**
505
+ * commentDebug:
506
+ * @ctxt: An XML parser context
507
+ * @value: the comment content
508
+ *
509
+ * A comment has been parsed.
510
+ */
511
+ static void
512
+ commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value)
513
+ {
514
+ fprintf(stdout, "SAX.comment(%s)\n", value);
515
+ }
516
+
517
+ /**
518
+ * warningDebug:
519
+ * @ctxt: An XML parser context
520
+ * @msg: the message to display/transmit
521
+ * @...: extra parameters for the message display
522
+ *
523
+ * Display and format a warning messages, gives file, line, position and
524
+ * extra parameters.
525
+ */
526
+ static void XMLCDECL
527
+ warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
528
+ {
529
+ va_list args;
530
+
531
+ va_start(args, msg);
532
+ fprintf(stdout, "SAX.warning: ");
533
+ vfprintf(stdout, msg, args);
534
+ va_end(args);
535
+ }
536
+
537
+ /**
538
+ * errorDebug:
539
+ * @ctxt: An XML parser context
540
+ * @msg: the message to display/transmit
541
+ * @...: extra parameters for the message display
542
+ *
543
+ * Display and format a error messages, gives file, line, position and
544
+ * extra parameters.
545
+ */
546
+ static void XMLCDECL
547
+ errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
548
+ {
549
+ va_list args;
550
+
551
+ va_start(args, msg);
552
+ fprintf(stdout, "SAX.error: ");
553
+ vfprintf(stdout, msg, args);
554
+ va_end(args);
555
+ }
556
+
557
+ /**
558
+ * fatalErrorDebug:
559
+ * @ctxt: An XML parser context
560
+ * @msg: the message to display/transmit
561
+ * @...: extra parameters for the message display
562
+ *
563
+ * Display and format a fatalError messages, gives file, line, position and
564
+ * extra parameters.
565
+ */
566
+ static void XMLCDECL
567
+ fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
568
+ {
569
+ va_list args;
570
+
571
+ va_start(args, msg);
572
+ fprintf(stdout, "SAX.fatalError: ");
573
+ vfprintf(stdout, msg, args);
574
+ va_end(args);
575
+ }
576
+
577
+ static xmlSAXHandler debugSAXHandlerStruct = {
578
+ internalSubsetDebug,
579
+ isStandaloneDebug,
580
+ hasInternalSubsetDebug,
581
+ hasExternalSubsetDebug,
582
+ resolveEntityDebug,
583
+ getEntityDebug,
584
+ entityDeclDebug,
585
+ notationDeclDebug,
586
+ attributeDeclDebug,
587
+ elementDeclDebug,
588
+ unparsedEntityDeclDebug,
589
+ setDocumentLocatorDebug,
590
+ startDocumentDebug,
591
+ endDocumentDebug,
592
+ startElementDebug,
593
+ endElementDebug,
594
+ referenceDebug,
595
+ charactersDebug,
596
+ ignorableWhitespaceDebug,
597
+ processingInstructionDebug,
598
+ commentDebug,
599
+ warningDebug,
600
+ errorDebug,
601
+ fatalErrorDebug,
602
+ getParameterEntityDebug,
603
+ cdataDebug,
604
+ NULL,
605
+ 1,
606
+ NULL,
607
+ NULL,
608
+ NULL,
609
+ NULL
610
+ };
611
+
612
+ xmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct;
613
+ /************************************************************************
614
+ * *
615
+ * Debug *
616
+ * *
617
+ ************************************************************************/
618
+
619
+ static void
620
+ parseSAXFile(char *filename) {
621
+ htmlDocPtr doc = NULL;
622
+
623
+ /*
624
+ * Empty callbacks for checking
625
+ */
626
+ #ifdef LIBXML_PUSH_ENABLED
627
+ if (push) {
628
+ FILE *f;
629
+
630
+ #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
631
+ f = fopen(filename, "rb");
632
+ #else
633
+ f = fopen(filename, "r");
634
+ #endif
635
+ if (f != NULL) {
636
+ int res, size = 3;
637
+ char chars[4096];
638
+ htmlParserCtxtPtr ctxt;
639
+
640
+ /* if (repeat) */
641
+ size = 4096;
642
+ res = fread(chars, 1, 4, f);
643
+ if (res > 0) {
644
+ ctxt = htmlCreatePushParserCtxt(emptySAXHandler, NULL,
645
+ chars, res, filename, XML_CHAR_ENCODING_NONE);
646
+ while ((res = fread(chars, 1, size, f)) > 0) {
647
+ htmlParseChunk(ctxt, chars, res, 0);
648
+ }
649
+ htmlParseChunk(ctxt, chars, 0, 1);
650
+ doc = ctxt->myDoc;
651
+ htmlFreeParserCtxt(ctxt);
652
+ }
653
+ if (doc != NULL) {
654
+ fprintf(stdout, "htmlSAXParseFile returned non-NULL\n");
655
+ xmlFreeDoc(doc);
656
+ }
657
+ fclose(f);
658
+ }
659
+ if (!noout) {
660
+ #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
661
+ f = fopen(filename, "rb");
662
+ #else
663
+ f = fopen(filename, "r");
664
+ #endif
665
+ if (f != NULL) {
666
+ int res, size = 3;
667
+ char chars[4096];
668
+ htmlParserCtxtPtr ctxt;
669
+
670
+ /* if (repeat) */
671
+ size = 4096;
672
+ res = fread(chars, 1, 4, f);
673
+ if (res > 0) {
674
+ ctxt = htmlCreatePushParserCtxt(debugSAXHandler, NULL,
675
+ chars, res, filename, XML_CHAR_ENCODING_NONE);
676
+ while ((res = fread(chars, 1, size, f)) > 0) {
677
+ htmlParseChunk(ctxt, chars, res, 0);
678
+ }
679
+ htmlParseChunk(ctxt, chars, 0, 1);
680
+ doc = ctxt->myDoc;
681
+ htmlFreeParserCtxt(ctxt);
682
+ }
683
+ if (doc != NULL) {
684
+ fprintf(stdout, "htmlSAXParseFile returned non-NULL\n");
685
+ xmlFreeDoc(doc);
686
+ }
687
+ fclose(f);
688
+ }
689
+ }
690
+ } else {
691
+ #endif /* LIBXML_PUSH_ENABLED */
692
+ doc = htmlSAXParseFile(filename, NULL, emptySAXHandler, NULL);
693
+ if (doc != NULL) {
694
+ fprintf(stdout, "htmlSAXParseFile returned non-NULL\n");
695
+ xmlFreeDoc(doc);
696
+ }
697
+
698
+ if (!noout) {
699
+ /*
700
+ * Debug callback
701
+ */
702
+ doc = htmlSAXParseFile(filename, NULL, debugSAXHandler, NULL);
703
+ if (doc != NULL) {
704
+ fprintf(stdout, "htmlSAXParseFile returned non-NULL\n");
705
+ xmlFreeDoc(doc);
706
+ }
707
+ }
708
+ #ifdef LIBXML_PUSH_ENABLED
709
+ }
710
+ #endif /* LIBXML_PUSH_ENABLED */
711
+ }
712
+
713
+ static void
714
+ parseAndPrintFile(char *filename) {
715
+ htmlDocPtr doc = NULL;
716
+
717
+ /*
718
+ * build an HTML tree from a string;
719
+ */
720
+ #ifdef LIBXML_PUSH_ENABLED
721
+ if (push) {
722
+ FILE *f;
723
+
724
+ #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
725
+ f = fopen(filename, "rb");
726
+ #else
727
+ f = fopen(filename, "r");
728
+ #endif
729
+ if (f != NULL) {
730
+ int res, size = 3;
731
+ char chars[4096];
732
+ htmlParserCtxtPtr ctxt;
733
+
734
+ /* if (repeat) */
735
+ size = 4096;
736
+ res = fread(chars, 1, 4, f);
737
+ if (res > 0) {
738
+ ctxt = htmlCreatePushParserCtxt(NULL, NULL,
739
+ chars, res, filename, XML_CHAR_ENCODING_NONE);
740
+ while ((res = fread(chars, 1, size, f)) > 0) {
741
+ htmlParseChunk(ctxt, chars, res, 0);
742
+ }
743
+ htmlParseChunk(ctxt, chars, 0, 1);
744
+ doc = ctxt->myDoc;
745
+ htmlFreeParserCtxt(ctxt);
746
+ }
747
+ fclose(f);
748
+ }
749
+ } else {
750
+ doc = htmlReadFile(filename, NULL, options);
751
+ }
752
+ #else
753
+ doc = htmlReadFile(filename,NULL,options);
754
+ #endif
755
+ if (doc == NULL) {
756
+ xmlGenericError(xmlGenericErrorContext,
757
+ "Could not parse %s\n", filename);
758
+ }
759
+
760
+ #ifdef LIBXML_TREE_ENABLED
761
+ /*
762
+ * test intermediate copy if needed.
763
+ */
764
+ if (copy) {
765
+ htmlDocPtr tmp;
766
+
767
+ tmp = doc;
768
+ doc = xmlCopyDoc(doc, 1);
769
+ xmlFreeDoc(tmp);
770
+ }
771
+ #endif
772
+
773
+ #ifdef LIBXML_OUTPUT_ENABLED
774
+ /*
775
+ * print it.
776
+ */
777
+ if (!noout) {
778
+ #ifdef LIBXML_DEBUG_ENABLED
779
+ if (!debug) {
780
+ if (encoding)
781
+ htmlSaveFileEnc("-", doc, encoding);
782
+ else
783
+ htmlDocDump(stdout, doc);
784
+ } else
785
+ xmlDebugDumpDocument(stdout, doc);
786
+ #else
787
+ if (encoding)
788
+ htmlSaveFileEnc("-", doc, encoding);
789
+ else
790
+ htmlDocDump(stdout, doc);
791
+ #endif
792
+ }
793
+ #endif /* LIBXML_OUTPUT_ENABLED */
794
+
795
+ /*
796
+ * free it.
797
+ */
798
+ xmlFreeDoc(doc);
799
+ }
800
+
801
+ int main(int argc, char **argv) {
802
+ int i, count;
803
+ int files = 0;
804
+
805
+ for (i = 1; i < argc ; i++) {
806
+ #ifdef LIBXML_DEBUG_ENABLED
807
+ if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
808
+ debug++;
809
+ else
810
+ #endif
811
+ if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy")))
812
+ copy++;
813
+ #ifdef LIBXML_PUSH_ENABLED
814
+ else if ((!strcmp(argv[i], "-push")) || (!strcmp(argv[i], "--push")))
815
+ push++;
816
+ #endif /* LIBXML_PUSH_ENABLED */
817
+ else if ((!strcmp(argv[i], "-sax")) || (!strcmp(argv[i], "--sax")))
818
+ sax++;
819
+ else if ((!strcmp(argv[i], "-noout")) || (!strcmp(argv[i], "--noout")))
820
+ noout++;
821
+ else if ((!strcmp(argv[i], "-repeat")) ||
822
+ (!strcmp(argv[i], "--repeat")))
823
+ repeat++;
824
+ else if ((!strcmp(argv[i], "-encode")) ||
825
+ (!strcmp(argv[i], "--encode"))) {
826
+ i++;
827
+ encoding = argv[i];
828
+ }
829
+ }
830
+ for (i = 1; i < argc ; i++) {
831
+ if ((!strcmp(argv[i], "-encode")) ||
832
+ (!strcmp(argv[i], "--encode"))) {
833
+ i++;
834
+ continue;
835
+ }
836
+ if (argv[i][0] != '-') {
837
+ if (repeat) {
838
+ for (count = 0;count < 100 * repeat;count++) {
839
+ if (sax)
840
+ parseSAXFile(argv[i]);
841
+ else
842
+ parseAndPrintFile(argv[i]);
843
+ }
844
+ } else {
845
+ if (sax)
846
+ parseSAXFile(argv[i]);
847
+ else
848
+ parseAndPrintFile(argv[i]);
849
+ }
850
+ files ++;
851
+ }
852
+ }
853
+ if (files == 0) {
854
+ printf("Usage : %s [--debug] [--copy] [--copy] HTMLfiles ...\n",
855
+ argv[0]);
856
+ printf("\tParse the HTML files and output the result of the parsing\n");
857
+ #ifdef LIBXML_DEBUG_ENABLED
858
+ printf("\t--debug : dump a debug tree of the in-memory document\n");
859
+ #endif
860
+ printf("\t--copy : used to test the internal copy implementation\n");
861
+ printf("\t--sax : debug the sequence of SAX callbacks\n");
862
+ printf("\t--repeat : parse the file 100 times, for timing\n");
863
+ printf("\t--noout : do not print the result\n");
864
+ #ifdef LIBXML_PUSH_ENABLED
865
+ printf("\t--push : use the push mode parser\n");
866
+ #endif /* LIBXML_PUSH_ENABLED */
867
+ printf("\t--encode encoding : output in the given encoding\n");
868
+ }
869
+ xmlCleanupParser();
870
+ xmlMemoryDump();
871
+
872
+ return(0);
873
+ }
874
+ #else /* !LIBXML_HTML_ENABLED */
875
+ #include <stdio.h>
876
+ int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
877
+ printf("%s : HTML support not compiled in\n", argv[0]);
878
+ return(0);
879
+ }
880
+ #endif