finishm 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (554) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/Gemfile +31 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +59 -0
  8. data/Rakefile +51 -0
  9. data/VERSION +1 -0
  10. data/bin/assembly_visualiser +106 -0
  11. data/bin/check_primer_combinations.rb +73 -0
  12. data/bin/contig_joiner.rb +244 -0
  13. data/bin/contigs_against_assembly.rb +153 -0
  14. data/bin/finishm +143 -0
  15. data/bin/finishm_assembler +55 -0
  16. data/bin/finishm_gap_closer.rb +241 -0
  17. data/bin/kmer_abundance_file_tool.rb +49 -0
  18. data/bin/kmer_pattern_to_assembly.rb +377 -0
  19. data/bin/kmer_profile_finder.rb +92 -0
  20. data/bin/kmers_count_parse.d +52 -0
  21. data/bin/kmers_count_tabulate.d +123 -0
  22. data/bin/kmers_count_tabulate.rb +84 -0
  23. data/bin/pcr_result_parser.rb +108 -0
  24. data/bin/primer_finder.rb +119 -0
  25. data/bin/read_selection_by_kmer.d +174 -0
  26. data/bin/scaffold_by_pattern.rb +119 -0
  27. data/bin/scaffold_connection_possibilities_to_knowns.rb +193 -0
  28. data/bin/scaffold_end_coverages.rb +69 -0
  29. data/bin/trail_validator.rb +84 -0
  30. data/ext/mkrf_conf.rb +56 -0
  31. data/ext/src/Makefile +140 -0
  32. data/ext/src/src/allocArray.c +305 -0
  33. data/ext/src/src/allocArray.h +86 -0
  34. data/ext/src/src/autoOpen.c +107 -0
  35. data/ext/src/src/autoOpen.h +18 -0
  36. data/ext/src/src/binarySequences.c +813 -0
  37. data/ext/src/src/binarySequences.h +125 -0
  38. data/ext/src/src/concatenatedGraph.c +233 -0
  39. data/ext/src/src/concatenatedGraph.h +30 -0
  40. data/ext/src/src/concatenatedPreGraph.c +262 -0
  41. data/ext/src/src/concatenatedPreGraph.h +29 -0
  42. data/ext/src/src/correctedGraph.c +2643 -0
  43. data/ext/src/src/correctedGraph.h +32 -0
  44. data/ext/src/src/dfib.c +509 -0
  45. data/ext/src/src/dfib.h +69 -0
  46. data/ext/src/src/dfibHeap.c +89 -0
  47. data/ext/src/src/dfibHeap.h +39 -0
  48. data/ext/src/src/dfibpriv.h +105 -0
  49. data/ext/src/src/fib.c +628 -0
  50. data/ext/src/src/fib.h +78 -0
  51. data/ext/src/src/fibHeap.c +79 -0
  52. data/ext/src/src/fibHeap.h +41 -0
  53. data/ext/src/src/fibpriv.h +110 -0
  54. data/ext/src/src/globals.h +154 -0
  55. data/ext/src/src/graph.c +3932 -0
  56. data/ext/src/src/graph.h +233 -0
  57. data/ext/src/src/graphReConstruction.c +1472 -0
  58. data/ext/src/src/graphReConstruction.h +30 -0
  59. data/ext/src/src/graphStats.c +2167 -0
  60. data/ext/src/src/graphStats.h +72 -0
  61. data/ext/src/src/graphStructures.h +52 -0
  62. data/ext/src/src/kmer.c +652 -0
  63. data/ext/src/src/kmer.h +73 -0
  64. data/ext/src/src/kmerOccurenceTable.c +236 -0
  65. data/ext/src/src/kmerOccurenceTable.h +44 -0
  66. data/ext/src/src/kseq.h +223 -0
  67. data/ext/src/src/locallyCorrectedGraph.c +557 -0
  68. data/ext/src/src/locallyCorrectedGraph.h +40 -0
  69. data/ext/src/src/passageMarker.c +677 -0
  70. data/ext/src/src/passageMarker.h +137 -0
  71. data/ext/src/src/preGraph.c +1717 -0
  72. data/ext/src/src/preGraph.h +106 -0
  73. data/ext/src/src/preGraphConstruction.c +990 -0
  74. data/ext/src/src/preGraphConstruction.h +26 -0
  75. data/ext/src/src/probe_node_finder.c +84 -0
  76. data/ext/src/src/probe_node_finder.h +6 -0
  77. data/ext/src/src/readCoherentGraph.c +557 -0
  78. data/ext/src/src/readCoherentGraph.h +30 -0
  79. data/ext/src/src/readSet.c +1734 -0
  80. data/ext/src/src/readSet.h +67 -0
  81. data/ext/src/src/readToNode.c +218 -0
  82. data/ext/src/src/readToNode.h +35 -0
  83. data/ext/src/src/recycleBin.c +199 -0
  84. data/ext/src/src/recycleBin.h +58 -0
  85. data/ext/src/src/roadMap.c +342 -0
  86. data/ext/src/src/roadMap.h +65 -0
  87. data/ext/src/src/run.c +318 -0
  88. data/ext/src/src/run.h +52 -0
  89. data/ext/src/src/run2.c +744 -0
  90. data/ext/src/src/runReadToNode.c +29 -0
  91. data/ext/src/src/scaffold.c +1876 -0
  92. data/ext/src/src/scaffold.h +64 -0
  93. data/ext/src/src/shortReadPairs.c +1243 -0
  94. data/ext/src/src/shortReadPairs.h +32 -0
  95. data/ext/src/src/splay.c +259 -0
  96. data/ext/src/src/splay.h +43 -0
  97. data/ext/src/src/splayTable.c +1315 -0
  98. data/ext/src/src/splayTable.h +31 -0
  99. data/ext/src/src/tightString.c +362 -0
  100. data/ext/src/src/tightString.h +82 -0
  101. data/ext/src/src/utility.c +199 -0
  102. data/ext/src/src/utility.h +98 -0
  103. data/ext/src/third-party/zlib-1.2.3/ChangeLog +855 -0
  104. data/ext/src/third-party/zlib-1.2.3/FAQ +339 -0
  105. data/ext/src/third-party/zlib-1.2.3/INDEX +51 -0
  106. data/ext/src/third-party/zlib-1.2.3/Makefile +154 -0
  107. data/ext/src/third-party/zlib-1.2.3/Makefile.in +154 -0
  108. data/ext/src/third-party/zlib-1.2.3/README +125 -0
  109. data/ext/src/third-party/zlib-1.2.3/adler32.c +149 -0
  110. data/ext/src/third-party/zlib-1.2.3/adler32.o +0 -0
  111. data/ext/src/third-party/zlib-1.2.3/algorithm.txt +209 -0
  112. data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.pup +66 -0
  113. data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.sas +65 -0
  114. data/ext/src/third-party/zlib-1.2.3/as400/bndsrc +132 -0
  115. data/ext/src/third-party/zlib-1.2.3/as400/compile.clp +123 -0
  116. data/ext/src/third-party/zlib-1.2.3/as400/readme.txt +111 -0
  117. data/ext/src/third-party/zlib-1.2.3/as400/zlib.inc +331 -0
  118. data/ext/src/third-party/zlib-1.2.3/compress.c +79 -0
  119. data/ext/src/third-party/zlib-1.2.3/compress.o +0 -0
  120. data/ext/src/third-party/zlib-1.2.3/configure +459 -0
  121. data/ext/src/third-party/zlib-1.2.3/contrib/README.contrib +71 -0
  122. data/ext/src/third-party/zlib-1.2.3/contrib/ada/buffer_demo.adb +106 -0
  123. data/ext/src/third-party/zlib-1.2.3/contrib/ada/mtest.adb +156 -0
  124. data/ext/src/third-party/zlib-1.2.3/contrib/ada/read.adb +156 -0
  125. data/ext/src/third-party/zlib-1.2.3/contrib/ada/readme.txt +65 -0
  126. data/ext/src/third-party/zlib-1.2.3/contrib/ada/test.adb +463 -0
  127. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.adb +225 -0
  128. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.ads +114 -0
  129. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.adb +141 -0
  130. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.ads +450 -0
  131. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.adb +701 -0
  132. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.ads +328 -0
  133. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.gpr +20 -0
  134. data/ext/src/third-party/zlib-1.2.3/contrib/asm586/README.586 +43 -0
  135. data/ext/src/third-party/zlib-1.2.3/contrib/asm586/match.S +364 -0
  136. data/ext/src/third-party/zlib-1.2.3/contrib/asm686/README.686 +34 -0
  137. data/ext/src/third-party/zlib-1.2.3/contrib/asm686/match.S +329 -0
  138. data/ext/src/third-party/zlib-1.2.3/contrib/blast/Makefile +8 -0
  139. data/ext/src/third-party/zlib-1.2.3/contrib/blast/README +4 -0
  140. data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.c +444 -0
  141. data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.h +71 -0
  142. data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.pk +0 -0
  143. data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.txt +1 -0
  144. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLib.pas +557 -0
  145. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLibConst.pas +11 -0
  146. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/readme.txt +76 -0
  147. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/zlibd32.mak +93 -0
  148. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.build +33 -0
  149. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.chm +0 -0
  150. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.sln +21 -0
  151. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  152. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  153. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  154. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  155. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  156. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  157. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  158. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  159. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  160. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  161. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  162. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/readme.txt +58 -0
  163. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/README +1 -0
  164. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.c +608 -0
  165. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.h +37 -0
  166. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inffix9.h +107 -0
  167. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inflate9.h +47 -0
  168. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.c +323 -0
  169. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.h +55 -0
  170. data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffas86.c +1157 -0
  171. data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffast.S +1368 -0
  172. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/test.cpp +24 -0
  173. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.cpp +329 -0
  174. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.h +128 -0
  175. data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream.h +307 -0
  176. data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream_test.cpp +25 -0
  177. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/README +35 -0
  178. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/TODO +17 -0
  179. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/test.cc +50 -0
  180. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.cc +479 -0
  181. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.h +466 -0
  182. data/ext/src/third-party/zlib-1.2.3/contrib/masm686/match.asm +413 -0
  183. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/bld_ml64.bat +2 -0
  184. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.asm +513 -0
  185. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.obj +0 -0
  186. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffas8664.c +186 -0
  187. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.asm +392 -0
  188. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.obj +0 -0
  189. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/readme.txt +28 -0
  190. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/bld_ml32.bat +2 -0
  191. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.asm +972 -0
  192. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.obj +0 -0
  193. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32c.c +62 -0
  194. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.asm +1083 -0
  195. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.obj +0 -0
  196. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/mkasm.bat +3 -0
  197. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/readme.txt +21 -0
  198. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ChangeLogUnzip +67 -0
  199. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/Makefile +25 -0
  200. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/crypt.h +132 -0
  201. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.c +177 -0
  202. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.h +75 -0
  203. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.c +270 -0
  204. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.h +21 -0
  205. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/miniunz.c +585 -0
  206. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/minizip.c +420 -0
  207. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.c +281 -0
  208. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.h +31 -0
  209. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.c +1598 -0
  210. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.h +354 -0
  211. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.c +1219 -0
  212. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.h +235 -0
  213. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/example.pas +599 -0
  214. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/readme.txt +76 -0
  215. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibd32.mak +93 -0
  216. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibpas.pas +236 -0
  217. data/ext/src/third-party/zlib-1.2.3/contrib/puff/Makefile +8 -0
  218. data/ext/src/third-party/zlib-1.2.3/contrib/puff/README +63 -0
  219. data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.c +837 -0
  220. data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.h +31 -0
  221. data/ext/src/third-party/zlib-1.2.3/contrib/puff/zeros.raw +0 -0
  222. data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.c +275 -0
  223. data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.txt +10 -0
  224. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile +14 -0
  225. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile.msc +17 -0
  226. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/untgz.c +674 -0
  227. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/readme.txt +73 -0
  228. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/miniunz.vcproj +126 -0
  229. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/minizip.vcproj +126 -0
  230. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/testzlib.vcproj +126 -0
  231. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlib.rc +32 -0
  232. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibstat.vcproj +246 -0
  233. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.def +92 -0
  234. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.sln +78 -0
  235. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.vcproj +445 -0
  236. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/miniunz.vcproj +566 -0
  237. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/minizip.vcproj +563 -0
  238. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlib.vcproj +948 -0
  239. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlibdll.vcproj +567 -0
  240. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlib.rc +32 -0
  241. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibstat.vcproj +870 -0
  242. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.def +92 -0
  243. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.sln +144 -0
  244. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.vcproj +1219 -0
  245. data/ext/src/third-party/zlib-1.2.3/crc32.c +423 -0
  246. data/ext/src/third-party/zlib-1.2.3/crc32.h +441 -0
  247. data/ext/src/third-party/zlib-1.2.3/crc32.o +0 -0
  248. data/ext/src/third-party/zlib-1.2.3/deflate.c +1736 -0
  249. data/ext/src/third-party/zlib-1.2.3/deflate.h +331 -0
  250. data/ext/src/third-party/zlib-1.2.3/deflate.o +0 -0
  251. data/ext/src/third-party/zlib-1.2.3/example +0 -0
  252. data/ext/src/third-party/zlib-1.2.3/example.c +565 -0
  253. data/ext/src/third-party/zlib-1.2.3/examples/README.examples +42 -0
  254. data/ext/src/third-party/zlib-1.2.3/examples/fitblk.c +233 -0
  255. data/ext/src/third-party/zlib-1.2.3/examples/gun.c +693 -0
  256. data/ext/src/third-party/zlib-1.2.3/examples/gzappend.c +500 -0
  257. data/ext/src/third-party/zlib-1.2.3/examples/gzjoin.c +448 -0
  258. data/ext/src/third-party/zlib-1.2.3/examples/gzlog.c +413 -0
  259. data/ext/src/third-party/zlib-1.2.3/examples/gzlog.h +58 -0
  260. data/ext/src/third-party/zlib-1.2.3/examples/zlib_how.html +523 -0
  261. data/ext/src/third-party/zlib-1.2.3/examples/zpipe.c +191 -0
  262. data/ext/src/third-party/zlib-1.2.3/examples/zran.c +404 -0
  263. data/ext/src/third-party/zlib-1.2.3/gzio.c +1026 -0
  264. data/ext/src/third-party/zlib-1.2.3/gzio.o +0 -0
  265. data/ext/src/third-party/zlib-1.2.3/infback.c +623 -0
  266. data/ext/src/third-party/zlib-1.2.3/infback.o +0 -0
  267. data/ext/src/third-party/zlib-1.2.3/inffast.c +318 -0
  268. data/ext/src/third-party/zlib-1.2.3/inffast.h +11 -0
  269. data/ext/src/third-party/zlib-1.2.3/inffast.o +0 -0
  270. data/ext/src/third-party/zlib-1.2.3/inffixed.h +94 -0
  271. data/ext/src/third-party/zlib-1.2.3/inflate.c +1368 -0
  272. data/ext/src/third-party/zlib-1.2.3/inflate.h +115 -0
  273. data/ext/src/third-party/zlib-1.2.3/inflate.o +0 -0
  274. data/ext/src/third-party/zlib-1.2.3/inftrees.c +329 -0
  275. data/ext/src/third-party/zlib-1.2.3/inftrees.h +55 -0
  276. data/ext/src/third-party/zlib-1.2.3/inftrees.o +0 -0
  277. data/ext/src/third-party/zlib-1.2.3/libz.a +0 -0
  278. data/ext/src/third-party/zlib-1.2.3/make_vms.com +461 -0
  279. data/ext/src/third-party/zlib-1.2.3/minigzip +0 -0
  280. data/ext/src/third-party/zlib-1.2.3/minigzip.c +322 -0
  281. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.bor +109 -0
  282. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.dj2 +104 -0
  283. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.emx +69 -0
  284. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.msc +106 -0
  285. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.tc +94 -0
  286. data/ext/src/third-party/zlib-1.2.3/old/Makefile.riscos +151 -0
  287. data/ext/src/third-party/zlib-1.2.3/old/README +3 -0
  288. data/ext/src/third-party/zlib-1.2.3/old/descrip.mms +48 -0
  289. data/ext/src/third-party/zlib-1.2.3/old/os2/Makefile.os2 +136 -0
  290. data/ext/src/third-party/zlib-1.2.3/old/os2/zlib.def +51 -0
  291. data/ext/src/third-party/zlib-1.2.3/old/visual-basic.txt +160 -0
  292. data/ext/src/third-party/zlib-1.2.3/old/zlib.html +971 -0
  293. data/ext/src/third-party/zlib-1.2.3/projects/README.projects +41 -0
  294. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/README.txt +73 -0
  295. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/example.dsp +278 -0
  296. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/minigzip.dsp +278 -0
  297. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsp +609 -0
  298. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsw +59 -0
  299. data/ext/src/third-party/zlib-1.2.3/qnx/package.qpg +141 -0
  300. data/ext/src/third-party/zlib-1.2.3/trees.c +1219 -0
  301. data/ext/src/third-party/zlib-1.2.3/trees.h +128 -0
  302. data/ext/src/third-party/zlib-1.2.3/trees.o +0 -0
  303. data/ext/src/third-party/zlib-1.2.3/uncompr.c +61 -0
  304. data/ext/src/third-party/zlib-1.2.3/uncompr.o +0 -0
  305. data/ext/src/third-party/zlib-1.2.3/win32/DLL_FAQ.txt +397 -0
  306. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.bor +107 -0
  307. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.emx +69 -0
  308. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.gcc +141 -0
  309. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.msc +126 -0
  310. data/ext/src/third-party/zlib-1.2.3/win32/VisualC.txt +3 -0
  311. data/ext/src/third-party/zlib-1.2.3/win32/zlib.def +60 -0
  312. data/ext/src/third-party/zlib-1.2.3/win32/zlib1.rc +39 -0
  313. data/ext/src/third-party/zlib-1.2.3/zconf.h +332 -0
  314. data/ext/src/third-party/zlib-1.2.3/zconf.in.h +332 -0
  315. data/ext/src/third-party/zlib-1.2.3/zlib.3 +159 -0
  316. data/ext/src/third-party/zlib-1.2.3/zlib.h +1357 -0
  317. data/ext/src/third-party/zlib-1.2.3/zutil.c +318 -0
  318. data/ext/src/third-party/zlib-1.2.3/zutil.h +269 -0
  319. data/ext/src/third-party/zlib-1.2.3/zutil.o +0 -0
  320. data/lib/assembly/a_b_visualiser.rb +169 -0
  321. data/lib/assembly/acyclic_connection_finder.rb +81 -0
  322. data/lib/assembly/all_orfs.rb +615 -0
  323. data/lib/assembly/bad_format_writer.rb +46 -0
  324. data/lib/assembly/bam_probe_read_selector.rb +48 -0
  325. data/lib/assembly/bubbly_assembler.rb +842 -0
  326. data/lib/assembly/c_probe_node_finder.rb +38 -0
  327. data/lib/assembly/connection_interpreter.rb +350 -0
  328. data/lib/assembly/contig_printer.rb +400 -0
  329. data/lib/assembly/coverage_based_graph_filter.rb +68 -0
  330. data/lib/assembly/depth_first_search.rb +63 -0
  331. data/lib/assembly/dijkstra.rb +216 -0
  332. data/lib/assembly/fluffer.rb +253 -0
  333. data/lib/assembly/graph_explorer.rb +85 -0
  334. data/lib/assembly/graph_generator.rb +315 -0
  335. data/lib/assembly/height_finder.rb +355 -0
  336. data/lib/assembly/hybrid_velvet_graph.rb +70 -0
  337. data/lib/assembly/input_genome.rb +182 -0
  338. data/lib/assembly/kmer_coverage_based_path_filter.rb +65 -0
  339. data/lib/assembly/node_finder.rb +171 -0
  340. data/lib/assembly/oriented_node_trail.rb +507 -0
  341. data/lib/assembly/paired_end_assembler.rb +53 -0
  342. data/lib/assembly/paired_end_neighbour_finder.rb +176 -0
  343. data/lib/assembly/probed_graph.rb +105 -0
  344. data/lib/assembly/read_input.rb +79 -0
  345. data/lib/assembly/read_to_node.rb +37 -0
  346. data/lib/assembly/scaffold_breaker.rb +126 -0
  347. data/lib/assembly/sequence_hasher.rb +71 -0
  348. data/lib/assembly/single_coherent_paths_between_nodes.rb +533 -0
  349. data/lib/assembly/single_coherent_wanderer.rb +261 -0
  350. data/lib/assembly/single_ended_assembler.rb +441 -0
  351. data/lib/assembly/velvet_c_binding.rb +54 -0
  352. data/lib/assembly/velvet_graph_sequence_extractor.rb +123 -0
  353. data/lib/external/VERSION +1 -0
  354. data/lib/finishm/assemble.rb +224 -0
  355. data/lib/finishm/explore.rb +217 -0
  356. data/lib/finishm/finisher.rb +303 -0
  357. data/lib/finishm/fluff.rb +122 -0
  358. data/lib/finishm/gapfiller.rb +325 -0
  359. data/lib/finishm/orfs_finder.rb +88 -0
  360. data/lib/finishm/path_counter.rb +90 -0
  361. data/lib/finishm/primers.rb +425 -0
  362. data/lib/finishm/primers_check.rb +176 -0
  363. data/lib/finishm/roundup.rb +344 -0
  364. data/lib/finishm/sequence.rb +142 -0
  365. data/lib/finishm/visualise.rb +430 -0
  366. data/lib/finishm/wander.rb +270 -0
  367. data/lib/kmer_abundance_pattern.rb +79 -0
  368. data/lib/kmer_multi_abundance_file.rb +48 -0
  369. data/lib/oligo_designer.rb +88 -0
  370. data/lib/priner.rb +66 -0
  371. data/spec/acyclic_connection_finder_spec.rb +551 -0
  372. data/spec/all_orfs_spec.rb +443 -0
  373. data/spec/assemble_spec.rb +186 -0
  374. data/spec/bubbly_assembler_spec.rb +707 -0
  375. data/spec/c_node_finder_spec.rb +58 -0
  376. data/spec/connection_interpreter_spec.rb +284 -0
  377. data/spec/contig_printer_spec.rb +291 -0
  378. data/spec/coverage_based_graph_filter_spec.rb +102 -0
  379. data/spec/data/6_3e4e5e6e.1vANME.bam +0 -0
  380. data/spec/data/6_3e4e5e6e.1vANME.bam.bai +0 -0
  381. data/spec/data/acyclic_connection_finder/1/probes.fa +5 -0
  382. data/spec/data/acyclic_connection_finder/1/random1.fa +2 -0
  383. data/spec/data/acyclic_connection_finder/1/random1.sammy.fa.gz +0 -0
  384. data/spec/data/acyclic_connection_finder/1/random2.fa +2 -0
  385. data/spec/data/acyclic_connection_finder/1/random2.sammy.fa.gz +0 -0
  386. data/spec/data/assembly/1_simple_bubble_uneven_coverage/random3000.fa +39 -0
  387. data/spec/data/assembly/1_simple_bubble_uneven_coverage/random3000.slightly_changed.fa +39 -0
  388. data/spec/data/assembly/1_simple_bubble_uneven_coverage/reads_combined.fa.gz +0 -0
  389. data/spec/data/assembly_visualiser/Contig_6_1_to_250.fa.kmers31 +220 -0
  390. data/spec/data/assembly_visualiser/Contig_7_1_to_250.fa.kmers31 +220 -0
  391. data/spec/data/assembly_visualiser/Graph +46 -0
  392. data/spec/data/assembly_visualiser/start_kmers1 +2 -0
  393. data/spec/data/bands.csv +1 -0
  394. data/spec/data/c_probe_node_finder/1/CnyUnifiedSeq +0 -0
  395. data/spec/data/c_probe_node_finder/1/CnyUnifiedSeq.names +544 -0
  396. data/spec/data/c_probe_node_finder/1/Graph2 +668 -0
  397. data/spec/data/c_probe_node_finder/1/LastGraph +668 -0
  398. data/spec/data/c_probe_node_finder/1/Log +756 -0
  399. data/spec/data/c_probe_node_finder/1/PreGraph +11 -0
  400. data/spec/data/c_probe_node_finder/1/Roadmaps +2009 -0
  401. data/spec/data/c_probe_node_finder/1/contigs.fa +29 -0
  402. data/spec/data/c_probe_node_finder/1/stats.txt +6 -0
  403. data/spec/data/contig_printer/1/HOWTO_RECREATE +17 -0
  404. data/spec/data/contig_printer/1/contigs.fa +4 -0
  405. data/spec/data/contig_printer/1/seq.fa +2408 -0
  406. data/spec/data/contig_printer/1/seq.fa.svg +153 -0
  407. data/spec/data/contig_printer/1/seq.fa.velvet/Graph2 +2953 -0
  408. data/spec/data/contig_printer/1/seq.fa.velvet/LastGraph +2953 -0
  409. data/spec/data/contig_printer/1/seq.fa.velvet/Log +21 -0
  410. data/spec/data/contig_printer/1/seq.fa.velvet/PreGraph +27 -0
  411. data/spec/data/contig_printer/1/seq.fa.velvet/Roadmaps +5182 -0
  412. data/spec/data/contig_printer/1/seq.fa.velvet/Sequences +3612 -0
  413. data/spec/data/contig_printer/1/seq.fa.velvet/contigs.fa +36 -0
  414. data/spec/data/contig_printer/1/seq.fa.velvet/stats.txt +14 -0
  415. data/spec/data/contig_printer/1/seq.faVseq2_1to550.fa.bam +0 -0
  416. data/spec/data/contig_printer/1/seq.faVseq2_1to550.fa.bam.bai +0 -0
  417. data/spec/data/contig_printer/1/seq.node12.fa +4 -0
  418. data/spec/data/contig_printer/1/seq1_1to550.fa +2 -0
  419. data/spec/data/contig_printer/1/seq2_1to550.fa +2 -0
  420. data/spec/data/contig_printer/1/seq2_1to550.fa.fai +1 -0
  421. data/spec/data/explore/1/2seqs.sammy.fa +12004 -0
  422. data/spec/data/explore/1/HOWTO_RECREATE.txt +6 -0
  423. data/spec/data/explore/1/a.fa +2 -0
  424. data/spec/data/explore/1/seq1_and_a.fa +3 -0
  425. data/spec/data/explore/1/seq2.fa +2 -0
  426. data/spec/data/fluff/1/2seqs.sammy.fa +12004 -0
  427. data/spec/data/fluff/1/HOWTO_RECREATE.txt +5 -0
  428. data/spec/data/fluff/1/seq1.fa +2 -0
  429. data/spec/data/fluff/1/seq2.fa +2 -0
  430. data/spec/data/gapfilling/1/reads.fa +171 -0
  431. data/spec/data/gapfilling/1/trail_with_Ns.fa +5 -0
  432. data/spec/data/gapfilling/1/velvetAssembly/Graph2 +130 -0
  433. data/spec/data/gapfilling/1/velvetAssembly/LastGraph +130 -0
  434. data/spec/data/gapfilling/1/velvetAssembly/Log +199 -0
  435. data/spec/data/gapfilling/1/velvetAssembly/PreGraph +7 -0
  436. data/spec/data/gapfilling/1/velvetAssembly/Roadmaps +239 -0
  437. data/spec/data/gapfilling/1/velvetAssembly/Sequences +281 -0
  438. data/spec/data/gapfilling/1/velvetAssembly/contigs.fa +12 -0
  439. data/spec/data/gapfilling/1/velvetAssembly/stats.txt +4 -0
  440. data/spec/data/gapfilling/2/HOWTO_recreate +17 -0
  441. data/spec/data/gapfilling/2/reference.fa +2 -0
  442. data/spec/data/gapfilling/2/reference_part1.fa +4 -0
  443. data/spec/data/gapfilling/2/reference_part2.fa +4 -0
  444. data/spec/data/gapfilling/2/sammy_reads.fa.gz +0 -0
  445. data/spec/data/gapfilling/2/with_gaps.fa +4 -0
  446. data/spec/data/gapfilling/3/HOWTO_recreate +4 -0
  447. data/spec/data/gapfilling/3/reads.fa.gz +0 -0
  448. data/spec/data/gapfilling/3/reference_part1.fa +4 -0
  449. data/spec/data/gapfilling/3/reference_part2.fa +4 -0
  450. data/spec/data/gapfilling/3/with_gaps.fa +4 -0
  451. data/spec/data/gapfilling/4/HOWTO_recreate +1 -0
  452. data/spec/data/gapfilling/4/reads.fa.gz +0 -0
  453. data/spec/data/gapfilling/5/HOWTO_RECREATE +7 -0
  454. data/spec/data/gapfilling/5/answer.fna +2 -0
  455. data/spec/data/gapfilling/5/gappy.fna +2 -0
  456. data/spec/data/gapfilling/5/reads.fa +17961 -0
  457. data/spec/data/gapfilling/5/velvet51_3.5/LastGraph +8337 -0
  458. data/spec/data/gapfilling/5/velvet51_3.5/Sequences +20921 -0
  459. data/spec/data/gapfilling/6/random1.fa +28 -0
  460. data/spec/data/gapfilling/6/random2.fa +28 -0
  461. data/spec/data/gapfilling/6/random_sequence_length_2000 +0 -0
  462. data/spec/data/gapfilling/6/reads.random1.fa.gz +0 -0
  463. data/spec/data/gapfilling/6/reads.random2.fa.gz +0 -0
  464. data/spec/data/gapfilling/6/to_gapfill.fa +22 -0
  465. data/spec/data/kmer_profile_to_assembly/multiple_abundance_file1.csv +2 -0
  466. data/spec/data/kmers_count1.csv +2 -0
  467. data/spec/data/kmers_count2.csv +3 -0
  468. data/spec/data/out +3 -0
  469. data/spec/data/positive_latching_pair.fa +2 -0
  470. data/spec/data/primers.csv +4 -0
  471. data/spec/data/read_selection_by_kmer/blacklist1.txt +1 -0
  472. data/spec/data/read_selection_by_kmer/input.fasta +6 -0
  473. data/spec/data/read_selection_by_kmer/whitelist1.txt +1 -0
  474. data/spec/data/read_selection_by_kmer/whitelist2.txt +2 -0
  475. data/spec/data/read_to_node/1_a_graph/HOWTO_RECREATE.txt +2 -0
  476. data/spec/data/read_to_node/1_a_graph/LastGraph +6695 -0
  477. data/spec/data/read_to_node/1_a_graph/ReadToNode.bin +0 -0
  478. data/spec/data/read_to_node/2_no_read256_or_259/HOWTO_RECREATE.txt +3 -0
  479. data/spec/data/read_to_node/2_no_read256_or_259/LastGraph +6693 -0
  480. data/spec/data/read_to_node/2_no_read256_or_259/ReadToNode.bin +0 -0
  481. data/spec/data/read_to_node/3_no_last_read/LastGraph +6694 -0
  482. data/spec/data/read_to_node/3_no_last_read/ReadToNode.bin +0 -0
  483. data/spec/data/t/details.txt +5 -0
  484. data/spec/data/t/details.txt.srt +5 -0
  485. data/spec/data/t/location.txt +3 -0
  486. data/spec/data/t/location.txt.srt +3 -0
  487. data/spec/data/tweak/1_gap_then_unscaffolded/answer.fa +2 -0
  488. data/spec/data/tweak/1_gap_then_unscaffolded/reads.fa.gz +0 -0
  489. data/spec/data/tweak/1_gap_then_unscaffolded/scaffolds.fa +6 -0
  490. data/spec/data/tweak/2_second_genome/answer2.fa +2 -0
  491. data/spec/data/tweak/2_second_genome/reads.fa.gz +0 -0
  492. data/spec/data/tweak/3_variant/answer.fa +2 -0
  493. data/spec/data/tweak/3_variant/lesser_answer.fa +2 -0
  494. data/spec/data/tweak/3_variant/reads.fa.gz +0 -0
  495. data/spec/data/tweak/3_variant/with_gaps.fa +2 -0
  496. data/spec/data/velvet_test_trails/Assem/Graph +17 -0
  497. data/spec/data/velvet_test_trails/Assem/Graph2 +40 -0
  498. data/spec/data/velvet_test_trails/Assem/LastGraph +40 -0
  499. data/spec/data/velvet_test_trails/Assem/Log +35 -0
  500. data/spec/data/velvet_test_trails/Assem/PreGraph +9 -0
  501. data/spec/data/velvet_test_trails/Assem/Roadmaps +89 -0
  502. data/spec/data/velvet_test_trails/Assem/Sequences +50 -0
  503. data/spec/data/velvet_test_trails/Assem/a.svg +53 -0
  504. data/spec/data/velvet_test_trails/Assem/contigs.fa +15 -0
  505. data/spec/data/velvet_test_trails/Assem/stats.txt +5 -0
  506. data/spec/data/velvet_test_trails/node_fwds.fa +8 -0
  507. data/spec/data/velvet_test_trails/node_seqs.fa +9 -0
  508. data/spec/data/velvet_test_trails/nodes_fwd_rev.fa +16 -0
  509. data/spec/data/velvet_test_trails/read1.fa +2 -0
  510. data/spec/data/velvet_test_trails/reads.fa +50 -0
  511. data/spec/data/velvet_test_trails_reverse/Assem/LastGraph +17 -0
  512. data/spec/data/velvet_test_trails_reverse/Assem/a.svg +53 -0
  513. data/spec/data/velvet_test_trails_reverse/reads_reversed.fa +10 -0
  514. data/spec/data/visualise/1/LastGraph +6695 -0
  515. data/spec/data/visualise/2_paired_end/HOWTO_RECREATE.txt +10 -0
  516. data/spec/data/visualise/2_paired_end/rand1.fa +2 -0
  517. data/spec/data/visualise/2_paired_end/rand2.fa +2 -0
  518. data/spec/data/visualise/2_paired_end/with_gaps.fa +8 -0
  519. data/spec/data/visualise/2_paired_end/with_gaps.read_pairs.fa.gz +0 -0
  520. data/spec/data/wander/1/random1.fa +2 -0
  521. data/spec/data/wander/1/random1.sammy.fa +804 -0
  522. data/spec/depth_first_search_spec.rb +190 -0
  523. data/spec/dijkstra_spec.rb +143 -0
  524. data/spec/explore_spec.rb +29 -0
  525. data/spec/fluffer_spec.rb +155 -0
  526. data/spec/gapfiller_spec.rb +107 -0
  527. data/spec/graph_explorer_spec.rb +475 -0
  528. data/spec/graph_generator_spec.rb +99 -0
  529. data/spec/height_finder_spec.rb +306 -0
  530. data/spec/kmer_abundance_pattern_spec.rb +56 -0
  531. data/spec/kmer_coverage_based_path_filter_spec.rb +73 -0
  532. data/spec/kmer_profile_finder_spec.rb +38 -0
  533. data/spec/kmers_count_tabulate_spec.rb +120 -0
  534. data/spec/oriented_node_trail_spec.rb +221 -0
  535. data/spec/paired_end_neighbours_spec.rb +126 -0
  536. data/spec/paths_between_nodes_spec.rb +349 -0
  537. data/spec/priner_spec.rb +7 -0
  538. data/spec/read_input_spec.rb +23 -0
  539. data/spec/read_selection_by_kmer_spec.rb +166 -0
  540. data/spec/read_to_node_spec.rb +35 -0
  541. data/spec/roundup_spec.rb +366 -0
  542. data/spec/scaffold_breaker_spec.rb +144 -0
  543. data/spec/sequence_spec.rb +43 -0
  544. data/spec/single_coherent_paths_between_nodes_spec.rb +492 -0
  545. data/spec/single_coherent_wanderer_spec.rb +120 -0
  546. data/spec/single_ended_assembler_spec.rb +398 -0
  547. data/spec/spec_helper.rb +310 -0
  548. data/spec/velvet_graph_sequence_extractor_spec.rb +80 -0
  549. data/spec/visualise_spec.rb +105 -0
  550. data/spec/wander_spec.rb +119 -0
  551. data/spec/watch_for_changes.sh +16 -0
  552. data/validation/fasta_compare.rb +72 -0
  553. data/validation/gapfill_simulate_perfect.rb +108 -0
  554. metadata +899 -0
@@ -0,0 +1,136 @@
1
+ # Makefile for zlib under OS/2 using GCC (PGCC)
2
+ # For conditions of distribution and use, see copyright notice in zlib.h
3
+
4
+ # To compile and test, type:
5
+ # cp Makefile.os2 ..
6
+ # cd ..
7
+ # make -f Makefile.os2 test
8
+
9
+ # This makefile will build a static library z.lib, a shared library
10
+ # z.dll and a import library zdll.lib. You can use either z.lib or
11
+ # zdll.lib by specifying either -lz or -lzdll on gcc's command line
12
+
13
+ CC=gcc -Zomf -s
14
+
15
+ CFLAGS=-O6 -Wall
16
+ #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
17
+ #CFLAGS=-g -DDEBUG
18
+ #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
19
+ # -Wstrict-prototypes -Wmissing-prototypes
20
+
21
+ #################### BUG WARNING: #####################
22
+ ## infcodes.c hits a bug in pgcc-1.0, so you have to use either
23
+ ## -O# where # <= 4 or one of (-fno-ommit-frame-pointer or -fno-force-mem)
24
+ ## This bug is reportedly fixed in pgcc >1.0, but this was not tested
25
+ CFLAGS+=-fno-force-mem
26
+
27
+ LDFLAGS=-s -L. -lzdll -Zcrtdll
28
+ LDSHARED=$(CC) -s -Zomf -Zdll -Zcrtdll
29
+
30
+ VER=1.1.0
31
+ ZLIB=z.lib
32
+ SHAREDLIB=z.dll
33
+ SHAREDLIBIMP=zdll.lib
34
+ LIBS=$(ZLIB) $(SHAREDLIB) $(SHAREDLIBIMP)
35
+
36
+ AR=emxomfar cr
37
+ IMPLIB=emximp
38
+ RANLIB=echo
39
+ TAR=tar
40
+ SHELL=bash
41
+
42
+ prefix=/usr/local
43
+ exec_prefix = $(prefix)
44
+
45
+ OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
46
+ zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
47
+
48
+ TEST_OBJS = example.o minigzip.o
49
+
50
+ DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] *.[ch] descrip.mms \
51
+ algorithm.txt zlib.3 msdos/Make*[a-z0-9] msdos/zlib.def msdos/zlib.rc \
52
+ nt/Makefile.nt nt/zlib.dnt contrib/README.contrib contrib/*.txt \
53
+ contrib/asm386/*.asm contrib/asm386/*.c \
54
+ contrib/asm386/*.bat contrib/asm386/zlibvc.d?? contrib/iostream/*.cpp \
55
+ contrib/iostream/*.h contrib/iostream2/*.h contrib/iostream2/*.cpp \
56
+ contrib/untgz/Makefile contrib/untgz/*.c contrib/untgz/*.w32
57
+
58
+ all: example.exe minigzip.exe
59
+
60
+ test: all
61
+ @LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
62
+ echo hello world | ./minigzip | ./minigzip -d || \
63
+ echo ' *** minigzip test FAILED ***' ; \
64
+ if ./example; then \
65
+ echo ' *** zlib test OK ***'; \
66
+ else \
67
+ echo ' *** zlib test FAILED ***'; \
68
+ fi
69
+
70
+ $(ZLIB): $(OBJS)
71
+ $(AR) $@ $(OBJS)
72
+ -@ ($(RANLIB) $@ || true) >/dev/null 2>&1
73
+
74
+ $(SHAREDLIB): $(OBJS) os2/z.def
75
+ $(LDSHARED) -o $@ $^
76
+
77
+ $(SHAREDLIBIMP): os2/z.def
78
+ $(IMPLIB) -o $@ $^
79
+
80
+ example.exe: example.o $(LIBS)
81
+ $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS)
82
+
83
+ minigzip.exe: minigzip.o $(LIBS)
84
+ $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
85
+
86
+ clean:
87
+ rm -f *.o *~ example minigzip libz.a libz.so* foo.gz
88
+
89
+ distclean: clean
90
+
91
+ zip:
92
+ mv Makefile Makefile~; cp -p Makefile.in Makefile
93
+ rm -f test.c ztest*.c
94
+ v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
95
+ zip -ul9 zlib$$v $(DISTFILES)
96
+ mv Makefile~ Makefile
97
+
98
+ dist:
99
+ mv Makefile Makefile~; cp -p Makefile.in Makefile
100
+ rm -f test.c ztest*.c
101
+ d=zlib-`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
102
+ rm -f $$d.tar.gz; \
103
+ if test ! -d ../$$d; then rm -f ../$$d; ln -s `pwd` ../$$d; fi; \
104
+ files=""; \
105
+ for f in $(DISTFILES); do files="$$files $$d/$$f"; done; \
106
+ cd ..; \
107
+ GZIP=-9 $(TAR) chofz $$d/$$d.tar.gz $$files; \
108
+ if test ! -d $$d; then rm -f $$d; fi
109
+ mv Makefile~ Makefile
110
+
111
+ tags:
112
+ etags *.[ch]
113
+
114
+ depend:
115
+ makedepend -- $(CFLAGS) -- *.[ch]
116
+
117
+ # DO NOT DELETE THIS LINE -- make depend depends on it.
118
+
119
+ adler32.o: zlib.h zconf.h
120
+ compress.o: zlib.h zconf.h
121
+ crc32.o: zlib.h zconf.h
122
+ deflate.o: deflate.h zutil.h zlib.h zconf.h
123
+ example.o: zlib.h zconf.h
124
+ gzio.o: zutil.h zlib.h zconf.h
125
+ infblock.o: infblock.h inftrees.h infcodes.h infutil.h zutil.h zlib.h zconf.h
126
+ infcodes.o: zutil.h zlib.h zconf.h
127
+ infcodes.o: inftrees.h infblock.h infcodes.h infutil.h inffast.h
128
+ inffast.o: zutil.h zlib.h zconf.h inftrees.h
129
+ inffast.o: infblock.h infcodes.h infutil.h inffast.h
130
+ inflate.o: zutil.h zlib.h zconf.h infblock.h
131
+ inftrees.o: zutil.h zlib.h zconf.h inftrees.h
132
+ infutil.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
133
+ minigzip.o: zlib.h zconf.h
134
+ trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
135
+ uncompr.o: zlib.h zconf.h
136
+ zutil.o: zutil.h zlib.h zconf.h
@@ -0,0 +1,51 @@
1
+ ;
2
+ ; Slightly modified version of ../nt/zlib.dnt :-)
3
+ ;
4
+
5
+ LIBRARY Z
6
+ DESCRIPTION "Zlib compression library for OS/2"
7
+ CODE PRELOAD MOVEABLE DISCARDABLE
8
+ DATA PRELOAD MOVEABLE MULTIPLE
9
+
10
+ EXPORTS
11
+ adler32
12
+ compress
13
+ crc32
14
+ deflate
15
+ deflateCopy
16
+ deflateEnd
17
+ deflateInit2_
18
+ deflateInit_
19
+ deflateParams
20
+ deflateReset
21
+ deflateSetDictionary
22
+ gzclose
23
+ gzdopen
24
+ gzerror
25
+ gzflush
26
+ gzopen
27
+ gzread
28
+ gzwrite
29
+ inflate
30
+ inflateEnd
31
+ inflateInit2_
32
+ inflateInit_
33
+ inflateReset
34
+ inflateSetDictionary
35
+ inflateSync
36
+ uncompress
37
+ zlibVersion
38
+ gzprintf
39
+ gzputc
40
+ gzgetc
41
+ gzseek
42
+ gzrewind
43
+ gztell
44
+ gzeof
45
+ gzsetparams
46
+ zError
47
+ inflateSyncPoint
48
+ get_crc_table
49
+ compress2
50
+ gzputs
51
+ gzgets
@@ -0,0 +1,160 @@
1
+ See below some functions declarations for Visual Basic.
2
+
3
+ Frequently Asked Question:
4
+
5
+ Q: Each time I use the compress function I get the -5 error (not enough
6
+ room in the output buffer).
7
+
8
+ A: Make sure that the length of the compressed buffer is passed by
9
+ reference ("as any"), not by value ("as long"). Also check that
10
+ before the call of compress this length is equal to the total size of
11
+ the compressed buffer and not zero.
12
+
13
+
14
+ From: "Jon Caruana" <jon-net@usa.net>
15
+ Subject: Re: How to port zlib declares to vb?
16
+ Date: Mon, 28 Oct 1996 18:33:03 -0600
17
+
18
+ Got the answer! (I haven't had time to check this but it's what I got, and
19
+ looks correct):
20
+
21
+ He has the following routines working:
22
+ compress
23
+ uncompress
24
+ gzopen
25
+ gzwrite
26
+ gzread
27
+ gzclose
28
+
29
+ Declares follow: (Quoted from Carlos Rios <c_rios@sonda.cl>, in Vb4 form)
30
+
31
+ #If Win16 Then 'Use Win16 calls.
32
+ Declare Function compress Lib "ZLIB.DLL" (ByVal compr As
33
+ String, comprLen As Any, ByVal buf As String, ByVal buflen
34
+ As Long) As Integer
35
+ Declare Function uncompress Lib "ZLIB.DLL" (ByVal uncompr
36
+ As String, uncomprLen As Any, ByVal compr As String, ByVal
37
+ lcompr As Long) As Integer
38
+ Declare Function gzopen Lib "ZLIB.DLL" (ByVal filePath As
39
+ String, ByVal mode As String) As Long
40
+ Declare Function gzread Lib "ZLIB.DLL" (ByVal file As
41
+ Long, ByVal uncompr As String, ByVal uncomprLen As Integer)
42
+ As Integer
43
+ Declare Function gzwrite Lib "ZLIB.DLL" (ByVal file As
44
+ Long, ByVal uncompr As String, ByVal uncomprLen As Integer)
45
+ As Integer
46
+ Declare Function gzclose Lib "ZLIB.DLL" (ByVal file As
47
+ Long) As Integer
48
+ #Else
49
+ Declare Function compress Lib "ZLIB32.DLL"
50
+ (ByVal compr As String, comprLen As Any, ByVal buf As
51
+ String, ByVal buflen As Long) As Integer
52
+ Declare Function uncompress Lib "ZLIB32.DLL"
53
+ (ByVal uncompr As String, uncomprLen As Any, ByVal compr As
54
+ String, ByVal lcompr As Long) As Long
55
+ Declare Function gzopen Lib "ZLIB32.DLL"
56
+ (ByVal file As String, ByVal mode As String) As Long
57
+ Declare Function gzread Lib "ZLIB32.DLL"
58
+ (ByVal file As Long, ByVal uncompr As String, ByVal
59
+ uncomprLen As Long) As Long
60
+ Declare Function gzwrite Lib "ZLIB32.DLL"
61
+ (ByVal file As Long, ByVal uncompr As String, ByVal
62
+ uncomprLen As Long) As Long
63
+ Declare Function gzclose Lib "ZLIB32.DLL"
64
+ (ByVal file As Long) As Long
65
+ #End If
66
+
67
+ -Jon Caruana
68
+ jon-net@usa.net
69
+ Microsoft Sitebuilder Network Level 1 Member - HTML Writer's Guild Member
70
+
71
+
72
+ Here is another example from Michael <michael_borgsys@hotmail.com> that he
73
+ says conforms to the VB guidelines, and that solves the problem of not
74
+ knowing the uncompressed size by storing it at the end of the file:
75
+
76
+ 'Calling the functions:
77
+ 'bracket meaning: <parameter> [optional] {Range of possible values}
78
+ 'Call subCompressFile(<path with filename to compress> [, <path with
79
+ filename to write to>, [level of compression {1..9}]])
80
+ 'Call subUncompressFile(<path with filename to compress>)
81
+
82
+ Option Explicit
83
+ Private lngpvtPcnSml As Long 'Stores value for 'lngPercentSmaller'
84
+ Private Const SUCCESS As Long = 0
85
+ Private Const strFilExt As String = ".cpr"
86
+ Private Declare Function lngfncCpr Lib "zlib.dll" Alias "compress2" (ByRef
87
+ dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long,
88
+ ByVal level As Integer) As Long
89
+ Private Declare Function lngfncUcp Lib "zlib.dll" Alias "uncompress" (ByRef
90
+ dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long)
91
+ As Long
92
+
93
+ Public Sub subCompressFile(ByVal strargOriFilPth As String, Optional ByVal
94
+ strargCprFilPth As String, Optional ByVal intLvl As Integer = 9)
95
+ Dim strCprPth As String
96
+ Dim lngOriSiz As Long
97
+ Dim lngCprSiz As Long
98
+ Dim bytaryOri() As Byte
99
+ Dim bytaryCpr() As Byte
100
+ lngOriSiz = FileLen(strargOriFilPth)
101
+ ReDim bytaryOri(lngOriSiz - 1)
102
+ Open strargOriFilPth For Binary Access Read As #1
103
+ Get #1, , bytaryOri()
104
+ Close #1
105
+ strCprPth = IIf(strargCprFilPth = "", strargOriFilPth, strargCprFilPth)
106
+ 'Select file path and name
107
+ strCprPth = strCprPth & IIf(Right(strCprPth, Len(strFilExt)) =
108
+ strFilExt, "", strFilExt) 'Add file extension if not exists
109
+ lngCprSiz = (lngOriSiz * 1.01) + 12 'Compression needs temporary a bit
110
+ more space then original file size
111
+ ReDim bytaryCpr(lngCprSiz - 1)
112
+ If lngfncCpr(bytaryCpr(0), lngCprSiz, bytaryOri(0), lngOriSiz, intLvl) =
113
+ SUCCESS Then
114
+ lngpvtPcnSml = (1# - (lngCprSiz / lngOriSiz)) * 100
115
+ ReDim Preserve bytaryCpr(lngCprSiz - 1)
116
+ Open strCprPth For Binary Access Write As #1
117
+ Put #1, , bytaryCpr()
118
+ Put #1, , lngOriSiz 'Add the the original size value to the end
119
+ (last 4 bytes)
120
+ Close #1
121
+ Else
122
+ MsgBox "Compression error"
123
+ End If
124
+ Erase bytaryCpr
125
+ Erase bytaryOri
126
+ End Sub
127
+
128
+ Public Sub subUncompressFile(ByVal strargFilPth As String)
129
+ Dim bytaryCpr() As Byte
130
+ Dim bytaryOri() As Byte
131
+ Dim lngOriSiz As Long
132
+ Dim lngCprSiz As Long
133
+ Dim strOriPth As String
134
+ lngCprSiz = FileLen(strargFilPth)
135
+ ReDim bytaryCpr(lngCprSiz - 1)
136
+ Open strargFilPth For Binary Access Read As #1
137
+ Get #1, , bytaryCpr()
138
+ Close #1
139
+ 'Read the original file size value:
140
+ lngOriSiz = bytaryCpr(lngCprSiz - 1) * (2 ^ 24) _
141
+ + bytaryCpr(lngCprSiz - 2) * (2 ^ 16) _
142
+ + bytaryCpr(lngCprSiz - 3) * (2 ^ 8) _
143
+ + bytaryCpr(lngCprSiz - 4)
144
+ ReDim Preserve bytaryCpr(lngCprSiz - 5) 'Cut of the original size value
145
+ ReDim bytaryOri(lngOriSiz - 1)
146
+ If lngfncUcp(bytaryOri(0), lngOriSiz, bytaryCpr(0), lngCprSiz) = SUCCESS
147
+ Then
148
+ strOriPth = Left(strargFilPth, Len(strargFilPth) - Len(strFilExt))
149
+ Open strOriPth For Binary Access Write As #1
150
+ Put #1, , bytaryOri()
151
+ Close #1
152
+ Else
153
+ MsgBox "Uncompression error"
154
+ End If
155
+ Erase bytaryCpr
156
+ Erase bytaryOri
157
+ End Sub
158
+ Public Property Get lngPercentSmaller() As Long
159
+ lngPercentSmaller = lngpvtPcnSml
160
+ End Property
@@ -0,0 +1,971 @@
1
+ <html>
2
+ <head>
3
+ <title>
4
+ zlib general purpose compression library version 1.1.4
5
+ </title>
6
+ </head>
7
+ <body bgcolor="White" text="Black" vlink="Red" alink="Navy" link="Red">
8
+ <!-- background="zlibbg.gif" -->
9
+
10
+ <h1> zlib 1.1.4 Manual </h1>
11
+ <hr>
12
+ <a name="Contents"><h2>Contents</h2>
13
+ <ol type="I">
14
+ <li> <a href="#Prologue">Prologue</a>
15
+ <li> <a href="#Introduction">Introduction</a>
16
+ <li> <a href="#Utility functions">Utility functions</a>
17
+ <li> <a href="#Basic functions">Basic functions</a>
18
+ <li> <a href="#Advanced functions">Advanced functions</a>
19
+ <li> <a href="#Constants">Constants</a>
20
+ <li> <a href="#struct z_stream_s">struct z_stream_s</a>
21
+ <li> <a href="#Checksum functions">Checksum functions</a>
22
+ <li> <a href="#Misc">Misc</a>
23
+ </ol>
24
+ <hr>
25
+ <a name="Prologue"><h2> Prologue </h2>
26
+ 'zlib' general purpose compression library version 1.1.4, March 11th, 2002
27
+ <p>
28
+ Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
29
+ <p>
30
+ This software is provided 'as-is', without any express or implied
31
+ warranty. In no event will the authors be held liable for any damages
32
+ arising from the use of this software.
33
+ <p>
34
+ Permission is granted to anyone to use this software for any purpose,
35
+ including commercial applications, and to alter it and redistribute it
36
+ freely, subject to the following restrictions:
37
+ <ol>
38
+ <li> The origin of this software must not be misrepresented ; you must not
39
+ claim that you wrote the original software. If you use this software
40
+ in a product, an acknowledgment in the product documentation would be
41
+ appreciated but is not required.
42
+ <li> Altered source versions must be plainly marked as such, and must not be
43
+ misrepresented as being the original software.
44
+ <li> This notice may not be removed or altered from any source distribution.
45
+ </ol>
46
+
47
+ <dl>
48
+ <dt>Jean-loup Gailly
49
+ <dd><a href="mailto:jloup@gzip.org">jloup@gzip.org</a>
50
+ <dt>Mark Adler
51
+ <dd><a href="mailto:madler@alumni.caltech.edu">madler@alumni.caltech.edu</a>
52
+ </dl>
53
+
54
+ The data format used by the zlib library is described by RFCs (Request for
55
+ Comments) 1950 to 1952 in the files
56
+ <a href="ftp://ds.internic.net/rfc/rfc1950.txt">
57
+ ftp://ds.internic.net/rfc/rfc1950.txt </a>
58
+ (zlib format),
59
+ <a href="ftp://ds.internic.net/rfc/rfc1951.txt">
60
+ rfc1951.txt </a>
61
+ (<a href="#deflate">deflate</a> format) and
62
+ <a href="ftp://ds.internic.net/rfc/rfc1952.txt">
63
+ rfc1952.txt </a>
64
+ (gzip format).
65
+ <p>
66
+ This manual is converted from zlib.h by
67
+ <a href="mailto:piaip@csie.ntu.edu.tw"> piaip </a>
68
+ <p>
69
+ Visit <a href="http://ftp.cdrom.com/pub/infozip/zlib/">
70
+ http://ftp.cdrom.com/pub/infozip/zlib/</a>
71
+ for the official zlib web page.
72
+ <p>
73
+
74
+ <hr>
75
+ <a name="Introduction"><h2> Introduction </h2>
76
+ The 'zlib' compression library provides in-memory compression and
77
+ decompression functions, including integrity checks of the uncompressed
78
+ data. This version of the library supports only one compression method
79
+ (deflation) but other algorithms will be added later and will have the same
80
+ stream interface.
81
+ <p>
82
+
83
+ Compression can be done in a single step if the buffers are large
84
+ enough (for example if an input file is mmap'ed), or can be done by
85
+ repeated calls of the compression function. In the latter case, the
86
+ application must provide more input and/or consume the output
87
+ (providing more output space) before each call.
88
+ <p>
89
+
90
+ The library also supports reading and writing files in gzip (.gz) format
91
+ with an interface similar to that of stdio.
92
+ <p>
93
+
94
+ The library does not install any signal handler. The decoder checks
95
+ the consistency of the compressed data, so the library should never
96
+ crash even in case of corrupted input.
97
+ <p>
98
+
99
+ <hr>
100
+ <a name="Utility functions"><h2> Utility functions </h2>
101
+ The following utility functions are implemented on top of the
102
+ <a href="#Basic functions">basic stream-oriented functions</a>.
103
+ To simplify the interface, some
104
+ default options are assumed (compression level and memory usage,
105
+ standard memory allocation functions). The source code of these
106
+ utility functions can easily be modified if you need special options.
107
+ <h3> Function list </h3>
108
+ <ul>
109
+ <li> int <a href="#compress">compress</a> (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
110
+ <li> int <a href="#compress2">compress2</a> (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level);
111
+ <li> int <a href="#uncompress">uncompress</a> (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
112
+ <li> typedef voidp gzFile;
113
+ <li> gzFile <a href="#gzopen">gzopen</a> (const char *path, const char *mode);
114
+ <li> gzFile <a href="#gzdopen">gzdopen</a> (int fd, const char *mode);
115
+ <li> int <a href="#gzsetparams">gzsetparams</a> (gzFile file, int level, int strategy);
116
+ <li> int <a href="#gzread">gzread</a> (gzFile file, voidp buf, unsigned len);
117
+ <li> int <a href="#gzwrite">gzwrite</a> (gzFile file, const voidp buf, unsigned len);
118
+ <li> int VA <a href="#gzprintf">gzprintf</a> (gzFile file, const char *format, ...);
119
+ <li> int <a href="#gzputs">gzputs</a> (gzFile file, const char *s);
120
+ <li> char * <a href="#gzgets">gzgets</a> (gzFile file, char *buf, int len);
121
+ <li> int <a href="#gzputc">gzputc</a> (gzFile file, int c);
122
+ <li> int <a href="#gzgetc">gzgetc</a> (gzFile file);
123
+ <li> int <a href="#gzflush">gzflush</a> (gzFile file, int flush);
124
+ <li> z_off_t <a href="#gzseek">gzseek</a> (gzFile file, z_off_t offset, int whence);
125
+ <li> z_off_t <a href="#gztell">gztell</a> (gzFile file);
126
+ <li> int <a href="#gzrewind">gzrewind</a> (gzFile file);
127
+ <li> int <a href="#gzeof">gzeof</a> (gzFile file);
128
+ <li> int <a href="#gzclose">gzclose</a> (gzFile file);
129
+ <li> const char * <a href="#gzerror">gzerror</a> (gzFile file, int *errnum);
130
+ </ul>
131
+ <h3> Function description </h3>
132
+ <dl>
133
+ <font color="Blue"><dt> int <a name="compress">compress</a> (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);</font>
134
+ <dd>
135
+ Compresses the source buffer into the destination buffer. sourceLen is
136
+ the byte length of the source buffer. Upon entry, destLen is the total
137
+ size of the destination buffer, which must be at least 0.1% larger than
138
+ sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
139
+ compressed buffer.<p>
140
+ This function can be used to <a href="#compress">compress</a> a whole file at once if the
141
+ input file is mmap'ed.<p>
142
+ <a href="#compress">compress</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not
143
+ enough memory, <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a> if there was not enough room in the output
144
+ buffer.<p>
145
+
146
+ <font color="Blue"><dt> int <a name="compress2">compress2</a> (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level);</font>
147
+ <dd>
148
+ Compresses the source buffer into the destination buffer. The level
149
+ parameter has the same meaning as in <a href="#deflateInit">deflateInit</a>. sourceLen is the byte
150
+ length of the source buffer. Upon entry, destLen is the total size of the
151
+ destination buffer, which must be at least 0.1% larger than sourceLen plus
152
+ 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
153
+ <p>
154
+
155
+ <a href="#compress2">compress2</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not enough
156
+ memory, <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a> if there was not enough room in the output buffer,
157
+ <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the level parameter is invalid.
158
+ <p>
159
+
160
+ <font color="Blue"><dt> int <a name="uncompress">uncompress</a> (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);</font>
161
+ <dd>
162
+ Decompresses the source buffer into the destination buffer. sourceLen is
163
+ the byte length of the source buffer. Upon entry, destLen is the total
164
+ size of the destination buffer, which must be large enough to hold the
165
+ entire uncompressed data. (The size of the uncompressed data must have
166
+ been saved previously by the compressor and transmitted to the decompressor
167
+ by some mechanism outside the scope of this compression library.)
168
+ Upon exit, destLen is the actual size of the compressed buffer. <p>
169
+ This function can be used to decompress a whole file at once if the
170
+ input file is mmap'ed.
171
+ <p>
172
+
173
+ <a href="#uncompress">uncompress</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not
174
+ enough memory, <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a> if there was not enough room in the output
175
+ buffer, or <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a> if the input data was corrupted.
176
+ <p>
177
+
178
+ <dt> typedef voidp gzFile;
179
+ <dd> <p>
180
+
181
+ <font color="Blue"><dt> gzFile <a name="gzopen">gzopen</a> (const char *path, const char *mode);</font>
182
+ <dd>
183
+ Opens a gzip (.gz) file for reading or writing. The mode parameter
184
+ is as in fopen ("rb" or "wb") but can also include a compression level
185
+ ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
186
+ Huffman only compression as in "wb1h". (See the description
187
+ of <a href="#deflateInit2">deflateInit2</a> for more information about the strategy parameter.)
188
+ <p>
189
+
190
+ <a href="#gzopen">gzopen</a> can be used to read a file which is not in gzip format ; in this
191
+ case <a href="#gzread">gzread</a> will directly read from the file without decompression.
192
+ <p>
193
+
194
+ <a href="#gzopen">gzopen</a> returns NULL if the file could not be opened or if there was
195
+ insufficient memory to allocate the (de)compression <a href="#state">state</a> ; errno
196
+ can be checked to distinguish the two cases (if errno is zero, the
197
+ zlib error is <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a>).
198
+ <p>
199
+
200
+ <font color="Blue"><dt> gzFile <a name="gzdopen">gzdopen</a> (int fd, const char *mode);</font>
201
+ <dd>
202
+ <a href="#gzdopen">gzdopen</a>() associates a gzFile with the file descriptor fd. File
203
+ descriptors are obtained from calls like open, dup, creat, pipe or
204
+ fileno (in the file has been previously opened with fopen).
205
+ The mode parameter is as in <a href="#gzopen">gzopen</a>.
206
+ <p>
207
+ The next call of <a href="#gzclose">gzclose</a> on the returned gzFile will also close the
208
+ file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
209
+ descriptor fd. If you want to keep fd open, use <a href="#gzdopen">gzdopen</a>(dup(fd), mode).
210
+ <p>
211
+ <a href="#gzdopen">gzdopen</a> returns NULL if there was insufficient memory to allocate
212
+ the (de)compression <a href="#state">state</a>.
213
+ <p>
214
+
215
+ <font color="Blue"><dt> int <a name="gzsetparams">gzsetparams</a> (gzFile file, int level, int strategy);</font>
216
+ <dd>
217
+ Dynamically update the compression level or strategy. See the description
218
+ of <a href="#deflateInit2">deflateInit2</a> for the meaning of these parameters.
219
+ <p>
220
+ <a href="#gzsetparams">gzsetparams</a> returns <a href="#Z_OK">Z_OK</a> if success, or <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the file was not
221
+ opened for writing.
222
+ <p>
223
+
224
+ <font color="Blue"><dt> int <a name="gzread">gzread</a> (gzFile file, voidp buf, unsigned len);</font>
225
+ <dd>
226
+ Reads the given number of uncompressed bytes from the compressed file.
227
+ If the input file was not in gzip format, <a href="#gzread">gzread</a> copies the given number
228
+ of bytes into the buffer.
229
+ <p>
230
+ <a href="#gzread">gzread</a> returns the number of uncompressed bytes actually read (0 for
231
+ end of file, -1 for error).
232
+ <p>
233
+
234
+ <font color="Blue"><dt> int <a name="gzwrite">gzwrite</a> (gzFile file, const voidp buf, unsigned len);</font>
235
+ <dd>
236
+ Writes the given number of uncompressed bytes into the compressed file.
237
+ <a href="#gzwrite">gzwrite</a> returns the number of uncompressed bytes actually written
238
+ (0 in case of error).
239
+ <p>
240
+
241
+ <font color="Blue"><dt> int VA <a name="gzprintf">gzprintf</a> (gzFile file, const char *format, ...);</font>
242
+ <dd>
243
+ Converts, formats, and writes the args to the compressed file under
244
+ control of the format string, as in fprintf. <a href="#gzprintf">gzprintf</a> returns the number of
245
+ uncompressed bytes actually written (0 in case of error).
246
+ <p>
247
+
248
+ <font color="Blue"><dt> int <a name="gzputs">gzputs</a> (gzFile file, const char *s);</font>
249
+ <dd>
250
+ Writes the given null-terminated string to the compressed file, excluding
251
+ the terminating null character.
252
+ <p>
253
+ <a href="#gzputs">gzputs</a> returns the number of characters written, or -1 in case of error.
254
+ <p>
255
+
256
+ <font color="Blue"><dt> char * <a name="gzgets">gzgets</a> (gzFile file, char *buf, int len);</font>
257
+ <dd>
258
+ Reads bytes from the compressed file until len-1 characters are read, or
259
+ a newline character is read and transferred to buf, or an end-of-file
260
+ condition is encountered. The string is then terminated with a null
261
+ character.
262
+ <p>
263
+ <a href="#gzgets">gzgets</a> returns buf, or <a href="#Z_NULL">Z_NULL</a> in case of error.
264
+ <p>
265
+
266
+ <font color="Blue"><dt> int <a name="gzputc">gzputc</a> (gzFile file, int c);</font>
267
+ <dd>
268
+ Writes c, converted to an unsigned char, into the compressed file.
269
+ <a href="#gzputc">gzputc</a> returns the value that was written, or -1 in case of error.
270
+ <p>
271
+
272
+ <font color="Blue"><dt> int <a name="gzgetc">gzgetc</a> (gzFile file);</font>
273
+ <dd>
274
+ Reads one byte from the compressed file. <a href="#gzgetc">gzgetc</a> returns this byte
275
+ or -1 in case of end of file or error.
276
+ <p>
277
+
278
+ <font color="Blue"><dt> int <a name="gzflush">gzflush</a> (gzFile file, int flush);</font>
279
+ <dd>
280
+ Flushes all pending output into the compressed file. The parameter
281
+ flush is as in the <a href="#deflate">deflate</a>() function. The return value is the zlib
282
+ error number (see function <a href="#gzerror">gzerror</a> below). <a href="#gzflush">gzflush</a> returns <a href="#Z_OK">Z_OK</a> if
283
+ the flush parameter is <a href="#Z_FINISH">Z_FINISH</a> and all output could be flushed.
284
+ <p>
285
+ <a href="#gzflush">gzflush</a> should be called only when strictly necessary because it can
286
+ degrade compression.
287
+ <p>
288
+
289
+ <font color="Blue"><dt> z_off_t <a name="gzseek">gzseek</a> (gzFile file, z_off_t offset, int whence);</font>
290
+ <dd>
291
+ Sets the starting position for the next <a href="#gzread">gzread</a> or <a href="#gzwrite">gzwrite</a> on the
292
+ given compressed file. The offset represents a number of bytes in the
293
+ uncompressed data stream. The whence parameter is defined as in lseek(2);
294
+ the value SEEK_END is not supported.
295
+ <p>
296
+ If the file is opened for reading, this function is emulated but can be
297
+ extremely slow. If the file is opened for writing, only forward seeks are
298
+ supported ; <a href="#gzseek">gzseek</a> then compresses a sequence of zeroes up to the new
299
+ starting position.
300
+ <p>
301
+ <a href="#gzseek">gzseek</a> returns the resulting offset location as measured in bytes from
302
+ the beginning of the uncompressed stream, or -1 in case of error, in
303
+ particular if the file is opened for writing and the new starting position
304
+ would be before the current position.
305
+ <p>
306
+
307
+ <font color="Blue"><dt> int <a name="gzrewind">gzrewind</a> (gzFile file);</font>
308
+ <dd>
309
+ Rewinds the given file. This function is supported only for reading.
310
+ <p>
311
+ <a href="#gzrewind">gzrewind</a>(file) is equivalent to (int)<a href="#gzseek">gzseek</a>(file, 0L, SEEK_SET)
312
+ <p>
313
+
314
+ <font color="Blue"><dt> z_off_t <a name="gztell">gztell</a> (gzFile file);</font>
315
+ <dd>
316
+ Returns the starting position for the next <a href="#gzread">gzread</a> or <a href="#gzwrite">gzwrite</a> on the
317
+ given compressed file. This position represents a number of bytes in the
318
+ uncompressed data stream.
319
+ <p>
320
+
321
+ <a href="#gztell">gztell</a>(file) is equivalent to <a href="#gzseek">gzseek</a>(file, 0L, SEEK_CUR)
322
+ <p>
323
+
324
+ <font color="Blue"><dt> int <a name="gzeof">gzeof</a> (gzFile file);</font>
325
+ <dd>
326
+ Returns 1 when EOF has previously been detected reading the given
327
+ input stream, otherwise zero.
328
+ <p>
329
+
330
+ <font color="Blue"><dt> int <a name="gzclose">gzclose</a> (gzFile file);</font>
331
+ <dd>
332
+ Flushes all pending output if necessary, closes the compressed file
333
+ and deallocates all the (de)compression <a href="#state">state</a>. The return value is the zlib
334
+ error number (see function <a href="#gzerror">gzerror</a> below).
335
+ <p>
336
+
337
+ <font color="Blue"><dt> const char * <a name="gzerror">gzerror</a> (gzFile file, int *errnum);</font>
338
+ <dd>
339
+ Returns the error message for the last error which occurred on the
340
+ given compressed file. errnum is set to zlib error number. If an
341
+ error occurred in the file system and not in the compression library,
342
+ errnum is set to <a href="#Z_ERRNO">Z_ERRNO</a> and the application may consult errno
343
+ to get the exact error code.
344
+ <p>
345
+ </dl>
346
+ <hr>
347
+ <a name="Basic functions"><h2> Basic functions </h2>
348
+ <h3> Function list </h3>
349
+ <ul>
350
+ <li> const char * <a href="#zlibVersion">zlibVersion</a> (void);
351
+ <li> int <a href="#deflateInit">deflateInit</a> (<a href="#z_streamp">z_streamp</a> strm, int level);
352
+ <li> int <a href="#deflate">deflate</a> (<a href="#z_streamp">z_streamp</a> strm, int flush);
353
+ <li> int <a href="#deflateEnd">deflateEnd</a> (<a href="#z_streamp">z_streamp</a> strm);
354
+ <li> int <a href="#inflateInit">inflateInit</a> (<a href="#z_streamp">z_streamp</a> strm);
355
+ <li> int <a href="#inflate">inflate</a> (<a href="#z_streamp">z_streamp</a> strm, int flush);
356
+ <li> int <a href="#inflateEnd">inflateEnd</a> (<a href="#z_streamp">z_streamp</a> strm);
357
+ </ul>
358
+
359
+ <h3> Function description </h3>
360
+ <dl>
361
+ <font color="Blue"><dt> const char * <a name="zlibVersion">zlibVersion</a> (void);</font>
362
+ <dd> The application can compare <a href="#zlibVersion">zlibVersion</a> and ZLIB_VERSION for consistency.
363
+ If the first character differs, the library code actually used is
364
+ not compatible with the zlib.h header file used by the application.
365
+ This check is automatically made by <a href="#deflateInit">deflateInit</a> and <a href="#inflateInit">inflateInit</a>.
366
+ <p>
367
+
368
+ <font color="Blue"><dt> int <a name="deflateInit">deflateInit</a> (<a href="#z_streamp">z_streamp</a> strm, int level);</font>
369
+ <dd>
370
+ Initializes the internal stream <a href="#state">state</a> for compression. The fields
371
+ <a href="#zalloc">zalloc</a>, <a href="#zfree">zfree</a> and <a href="#opaque">opaque</a> must be initialized before by the caller.
372
+ If <a href="#zalloc">zalloc</a> and <a href="#zfree">zfree</a> are set to <a href="#Z_NULL">Z_NULL</a>, <a href="#deflateInit">deflateInit</a> updates them to
373
+ use default allocation functions.
374
+ <p>
375
+
376
+ The compression level must be <a href="#Z_DEFAULT_COMPRESSION">Z_DEFAULT_COMPRESSION</a>, or between 0 and 9:
377
+ 1 gives best speed, 9 gives best compression, 0 gives no compression at
378
+ all (the input data is simply copied a block at a time).
379
+ <p>
380
+
381
+ <a href="#Z_DEFAULT_COMPRESSION">Z_DEFAULT_COMPRESSION</a> requests a default compromise between speed and
382
+ compression (currently equivalent to level 6).
383
+ <p>
384
+
385
+ <a href="#deflateInit">deflateInit</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not
386
+ enough memory, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if level is not a valid compression level,
387
+ <a href="#Z_VERSION_ERROR">Z_VERSION_ERROR</a> if the zlib library version (<a href="#zlib_version">zlib_version</a>) is incompatible
388
+ with the version assumed by the caller (ZLIB_VERSION).
389
+ <a href="#msg">msg</a> is set to null if there is no error message. <a href="#deflateInit">deflateInit</a> does not
390
+ perform any compression: this will be done by <a href="#deflate">deflate</a>().
391
+ <p>
392
+
393
+ <font color="Blue"><dt> int <a name="deflate">deflate</a> (<a href="#z_streamp">z_streamp</a> strm, int flush);</font>
394
+ <dd>
395
+ <a href="#deflate">deflate</a> compresses as much data as possible, and stops when the input
396
+ buffer becomes empty or the output buffer becomes full. It may introduce some
397
+ output latency (reading input without producing any output) except when
398
+ forced to flush.<p>
399
+
400
+ The detailed semantics are as follows. <a href="#deflate">deflate</a> performs one or both of the
401
+ following actions:
402
+
403
+ <ul>
404
+ <li> Compress more input starting at <a href="#next_in">next_in</a> and update <a href="#next_in">next_in</a> and <a href="#avail_in">avail_in</a>
405
+ accordingly. If not all input can be processed (because there is not
406
+ enough room in the output buffer), <a href="#next_in">next_in</a> and <a href="#avail_in">avail_in</a> are updated and
407
+ processing will resume at this point for the next call of <a href="#deflate">deflate</a>().
408
+
409
+ <li>
410
+ Provide more output starting at <a href="#next_out">next_out</a> and update <a href="#next_out">next_out</a> and <a href="#avail_out">avail_out</a>
411
+ accordingly. This action is forced if the parameter flush is non zero.
412
+ Forcing flush frequently degrades the compression ratio, so this parameter
413
+ should be set only when necessary (in interactive applications).
414
+ Some output may be provided even if flush is not set.
415
+ </ul> <p>
416
+
417
+ Before the call of <a href="#deflate">deflate</a>(), the application should ensure that at least
418
+ one of the actions is possible, by providing more input and/or consuming
419
+ more output, and updating <a href="#avail_in">avail_in</a> or <a href="#avail_out">avail_out</a> accordingly ; <a href="#avail_out">avail_out</a>
420
+ should never be zero before the call. The application can consume the
421
+ compressed output when it wants, for example when the output buffer is full
422
+ (<a href="#avail_out">avail_out</a> == 0), or after each call of <a href="#deflate">deflate</a>(). If <a href="#deflate">deflate</a> returns <a href="#Z_OK">Z_OK</a>
423
+ and with zero <a href="#avail_out">avail_out</a>, it must be called again after making room in the
424
+ output buffer because there might be more output pending.
425
+ <p>
426
+
427
+ If the parameter flush is set to <a href="#Z_SYNC_FLUSH">Z_SYNC_FLUSH</a>, all pending output is
428
+ flushed to the output buffer and the output is aligned on a byte boundary, so
429
+ that the decompressor can get all input data available so far. (In particular
430
+ <a href="#avail_in">avail_in</a> is zero after the call if enough output space has been provided
431
+ before the call.) Flushing may degrade compression for some compression
432
+ algorithms and so it should be used only when necessary.
433
+ <p>
434
+
435
+ If flush is set to <a href="#Z_FULL_FLUSH">Z_FULL_FLUSH</a>, all output is flushed as with
436
+ <a href="#Z_SYNC_FLUSH">Z_SYNC_FLUSH</a>, and the compression <a href="#state">state</a> is reset so that decompression can
437
+ restart from this point if previous compressed data has been damaged or if
438
+ random access is desired. Using <a href="#Z_FULL_FLUSH">Z_FULL_FLUSH</a> too often can seriously degrade
439
+ the compression.
440
+ <p>
441
+
442
+ If <a href="#deflate">deflate</a> returns with <a href="#avail_out">avail_out</a> == 0, this function must be called again
443
+ with the same value of the flush parameter and more output space (updated
444
+ <a href="#avail_out">avail_out</a>), until the flush is complete (<a href="#deflate">deflate</a> returns with non-zero
445
+ <a href="#avail_out">avail_out</a>).
446
+ <p>
447
+
448
+ If the parameter flush is set to <a href="#Z_FINISH">Z_FINISH</a>, pending input is processed,
449
+ pending output is flushed and <a href="#deflate">deflate</a> returns with <a href="#Z_STREAM_END">Z_STREAM_END</a> if there
450
+ was enough output space ; if <a href="#deflate">deflate</a> returns with <a href="#Z_OK">Z_OK</a>, this function must be
451
+ called again with <a href="#Z_FINISH">Z_FINISH</a> and more output space (updated <a href="#avail_out">avail_out</a>) but no
452
+ more input data, until it returns with <a href="#Z_STREAM_END">Z_STREAM_END</a> or an error. After
453
+ <a href="#deflate">deflate</a> has returned <a href="#Z_STREAM_END">Z_STREAM_END</a>, the only possible operations on the
454
+ stream are <a href="#deflateReset">deflateReset</a> or <a href="#deflateEnd">deflateEnd</a>.
455
+ <p>
456
+
457
+ <a href="#Z_FINISH">Z_FINISH</a> can be used immediately after <a href="#deflateInit">deflateInit</a> if all the compression
458
+ is to be done in a single step. In this case, <a href="#avail_out">avail_out</a> must be at least
459
+ 0.1% larger than <a href="#avail_in">avail_in</a> plus 12 bytes. If <a href="#deflate">deflate</a> does not return
460
+ <a href="#Z_STREAM_END">Z_STREAM_END</a>, then it must be called again as described above.
461
+ <p>
462
+
463
+ <a href="#deflate">deflate</a>() sets strm-&gt <a href="#adler">adler</a> to the <a href="#adler32">adler32</a> checksum of all input read
464
+ so far (that is, <a href="#total_in">total_in</a> bytes).
465
+ <p>
466
+
467
+ <a href="#deflate">deflate</a>() may update <a href="#data_type">data_type</a> if it can make a good guess about
468
+ the input data type (<a href="#Z_ASCII">Z_ASCII</a> or <a href="#Z_BINARY">Z_BINARY</a>). In doubt, the data is considered
469
+ binary. This field is only for information purposes and does not affect
470
+ the compression algorithm in any manner.
471
+ <p>
472
+
473
+ <a href="#deflate">deflate</a>() returns <a href="#Z_OK">Z_OK</a> if some progress has been made (more input
474
+ processed or more output produced), <a href="#Z_STREAM_END">Z_STREAM_END</a> if all input has been
475
+ consumed and all output has been produced (only when flush is set to
476
+ <a href="#Z_FINISH">Z_FINISH</a>), <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the stream <a href="#state">state</a> was inconsistent (for example
477
+ if <a href="#next_in">next_in</a> or <a href="#next_out">next_out</a> was NULL), <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a> if no progress is possible
478
+ (for example <a href="#avail_in">avail_in</a> or <a href="#avail_out">avail_out</a> was zero).
479
+ <p>
480
+
481
+ <font color="Blue"><dt> int <a name="deflateEnd">deflateEnd</a> (<a href="#z_streamp">z_streamp</a> strm);</font>
482
+ <dd>
483
+ All dynamically allocated data structures for this stream are freed.
484
+ This function discards any unprocessed input and does not flush any
485
+ pending output.
486
+ <p>
487
+
488
+ <a href="#deflateEnd">deflateEnd</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the
489
+ stream <a href="#state">state</a> was inconsistent, <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a> if the stream was freed
490
+ prematurely (some input or output was discarded). In the error case,
491
+ <a href="#msg">msg</a> may be set but then points to a static string (which must not be
492
+ deallocated).
493
+ <p>
494
+
495
+ <font color="Blue"><dt> int <a name="inflateInit">inflateInit</a> (<a href="#z_streamp">z_streamp</a> strm);</font>
496
+ <dd>
497
+ Initializes the internal stream <a href="#state">state</a> for decompression. The fields
498
+ <a href="#next_in">next_in</a>, <a href="#avail_in">avail_in</a>, <a href="#zalloc">zalloc</a>, <a href="#zfree">zfree</a> and <a href="#opaque">opaque</a> must be initialized before by
499
+ the caller. If <a href="#next_in">next_in</a> is not <a href="#Z_NULL">Z_NULL</a> and <a href="#avail_in">avail_in</a> is large enough (the exact
500
+ value depends on the compression method), <a href="#inflateInit">inflateInit</a> determines the
501
+ compression method from the zlib header and allocates all data structures
502
+ accordingly ; otherwise the allocation will be deferred to the first call of
503
+ <a href="#inflate">inflate</a>. If <a href="#zalloc">zalloc</a> and <a href="#zfree">zfree</a> are set to <a href="#Z_NULL">Z_NULL</a>, <a href="#inflateInit">inflateInit</a> updates them to
504
+ use default allocation functions.
505
+ <p>
506
+
507
+ <a href="#inflateInit">inflateInit</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not enough
508
+ memory, <a href="#Z_VERSION_ERROR">Z_VERSION_ERROR</a> if the zlib library version is incompatible with the
509
+ version assumed by the caller. <a href="#msg">msg</a> is set to null if there is no error
510
+ message. <a href="#inflateInit">inflateInit</a> does not perform any decompression apart from reading
511
+ the zlib header if present: this will be done by <a href="#inflate">inflate</a>(). (So <a href="#next_in">next_in</a> and
512
+ <a href="#avail_in">avail_in</a> may be modified, but <a href="#next_out">next_out</a> and <a href="#avail_out">avail_out</a> are unchanged.)
513
+ <p>
514
+
515
+ <font color="Blue"><dt> int <a name="inflate">inflate</a> (<a href="#z_streamp">z_streamp</a> strm, int flush);</font>
516
+ <dd>
517
+ <a href="#inflate">inflate</a> decompresses as much data as possible, and stops when the input
518
+ buffer becomes empty or the output buffer becomes full. It may some
519
+ introduce some output latency (reading input without producing any output)
520
+ except when forced to flush.
521
+ <p>
522
+
523
+ The detailed semantics are as follows. <a href="#inflate">inflate</a> performs one or both of the
524
+ following actions:
525
+
526
+ <ul>
527
+ <li> Decompress more input starting at <a href="#next_in">next_in</a> and update <a href="#next_in">next_in</a> and <a href="#avail_in">avail_in</a>
528
+ accordingly. If not all input can be processed (because there is not
529
+ enough room in the output buffer), <a href="#next_in">next_in</a> is updated and processing
530
+ will resume at this point for the next call of <a href="#inflate">inflate</a>().
531
+
532
+ <li> Provide more output starting at <a href="#next_out">next_out</a> and update <a href="#next_out">next_out</a> and
533
+ <a href="#avail_out">avail_out</a> accordingly. <a href="#inflate">inflate</a>() provides as much output as possible,
534
+ until there is no more input data or no more space in the output buffer
535
+ (see below about the flush parameter).
536
+ </ul> <p>
537
+
538
+ Before the call of <a href="#inflate">inflate</a>(), the application should ensure that at least
539
+ one of the actions is possible, by providing more input and/or consuming
540
+ more output, and updating the next_* and avail_* values accordingly.
541
+ The application can consume the uncompressed output when it wants, for
542
+ example when the output buffer is full (<a href="#avail_out">avail_out</a> == 0), or after each
543
+ call of <a href="#inflate">inflate</a>(). If <a href="#inflate">inflate</a> returns <a href="#Z_OK">Z_OK</a> and with zero <a href="#avail_out">avail_out</a>, it
544
+ must be called again after making room in the output buffer because there
545
+ might be more output pending.
546
+ <p>
547
+
548
+ If the parameter flush is set to <a href="#Z_SYNC_FLUSH">Z_SYNC_FLUSH</a>, <a href="#inflate">inflate</a> flushes as much
549
+ output as possible to the output buffer. The flushing behavior of <a href="#inflate">inflate</a> is
550
+ not specified for values of the flush parameter other than <a href="#Z_SYNC_FLUSH">Z_SYNC_FLUSH</a>
551
+ and <a href="#Z_FINISH">Z_FINISH</a>, but the current implementation actually flushes as much output
552
+ as possible anyway.
553
+ <p>
554
+
555
+ <a href="#inflate">inflate</a>() should normally be called until it returns <a href="#Z_STREAM_END">Z_STREAM_END</a> or an
556
+ error. However if all decompression is to be performed in a single step
557
+ (a single call of <a href="#inflate">inflate</a>), the parameter flush should be set to
558
+ <a href="#Z_FINISH">Z_FINISH</a>. In this case all pending input is processed and all pending
559
+ output is flushed ; <a href="#avail_out">avail_out</a> must be large enough to hold all the
560
+ uncompressed data. (The size of the uncompressed data may have been saved
561
+ by the compressor for this purpose.) The next operation on this stream must
562
+ be <a href="#inflateEnd">inflateEnd</a> to deallocate the decompression <a href="#state">state</a>. The use of <a href="#Z_FINISH">Z_FINISH</a>
563
+ is never required, but can be used to inform <a href="#inflate">inflate</a> that a faster routine
564
+ may be used for the single <a href="#inflate">inflate</a>() call.
565
+ <p>
566
+
567
+ If a preset dictionary is needed at this point (see <a href="#inflateSetDictionary">inflateSetDictionary</a>
568
+ below), <a href="#inflate">inflate</a> sets strm-<a href="#adler">adler</a> to the <a href="#adler32">adler32</a> checksum of the
569
+ dictionary chosen by the compressor and returns <a href="#Z_NEED_DICT">Z_NEED_DICT</a> ; otherwise
570
+ it sets strm-&gt <a href="#adler">adler</a> to the <a href="#adler32">adler32</a> checksum of all output produced
571
+ so far (that is, <a href="#total_out">total_out</a> bytes) and returns <a href="#Z_OK">Z_OK</a>, <a href="#Z_STREAM_END">Z_STREAM_END</a> or
572
+ an error code as described below. At the end of the stream, <a href="#inflate">inflate</a>()
573
+ checks that its computed <a href="#adler32">adler32</a> checksum is equal to that saved by the
574
+ compressor and returns <a href="#Z_STREAM_END">Z_STREAM_END</a> only if the checksum is correct.
575
+ <p>
576
+
577
+ <a href="#inflate">inflate</a>() returns <a href="#Z_OK">Z_OK</a> if some progress has been made (more input processed
578
+ or more output produced), <a href="#Z_STREAM_END">Z_STREAM_END</a> if the end of the compressed data has
579
+ been reached and all uncompressed output has been produced, <a href="#Z_NEED_DICT">Z_NEED_DICT</a> if a
580
+ preset dictionary is needed at this point, <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a> if the input data was
581
+ corrupted (input stream not conforming to the zlib format or incorrect
582
+ <a href="#adler32">adler32</a> checksum), <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the stream structure was inconsistent
583
+ (for example if <a href="#next_in">next_in</a> or <a href="#next_out">next_out</a> was NULL), <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not
584
+ enough memory, <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a> if no progress is possible or if there was not
585
+ enough room in the output buffer when <a href="#Z_FINISH">Z_FINISH</a> is used. In the <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a>
586
+ case, the application may then call <a href="#inflateSync">inflateSync</a> to look for a good
587
+ compression block.
588
+ <p>
589
+
590
+ <font color="Blue"><dt> int <a name="inflateEnd">inflateEnd</a> (<a href="#z_streamp">z_streamp</a> strm);</font>
591
+ <dd>
592
+ All dynamically allocated data structures for this stream are freed.
593
+ This function discards any unprocessed input and does not flush any
594
+ pending output.
595
+ <p>
596
+
597
+ <a href="#inflateEnd">inflateEnd</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the stream <a href="#state">state</a>
598
+ was inconsistent. In the error case, <a href="#msg">msg</a> may be set but then points to a
599
+ static string (which must not be deallocated).
600
+ </dl>
601
+ <hr>
602
+ <a name="Advanced functions"><h2> Advanced functions </h2>
603
+ The following functions are needed only in some special applications.
604
+ <h3> Function list </h3>
605
+ <ul>
606
+ <li> int <a href="#deflateInit2">deflateInit2</a> (<a href="#z_streamp">z_streamp</a> strm,
607
+ <li> int <a href="#deflateSetDictionary">deflateSetDictionary</a> (<a href="#z_streamp">z_streamp</a> strm, const Bytef *dictionary, uInt dictLength);
608
+ <li> int <a href="#deflateCopy">deflateCopy</a> (<a href="#z_streamp">z_streamp</a> dest, <a href="#z_streamp">z_streamp</a> source);
609
+ <li> int <a href="#deflateReset">deflateReset</a> (<a href="#z_streamp">z_streamp</a> strm);
610
+ <li> int <a href="#deflateParams">deflateParams</a> (<a href="#z_streamp">z_streamp</a> strm, int level, int strategy);
611
+ <li> int <a href="#inflateInit2">inflateInit2</a> (<a href="#z_streamp">z_streamp</a> strm, int windowBits);
612
+ <li> int <a href="#inflateSetDictionary">inflateSetDictionary</a> (<a href="#z_streamp">z_streamp</a> strm, const Bytef *dictionary, uInt dictLength);
613
+ <li> int <a href="#inflateSync">inflateSync</a> (<a href="#z_streamp">z_streamp</a> strm);
614
+ <li> int <a href="#inflateReset">inflateReset</a> (<a href="#z_streamp">z_streamp</a> strm);
615
+
616
+ </ul>
617
+ <h3> Function description </h3>
618
+ <dl>
619
+ <font color="Blue"><dt> int <a name="deflateInit2">deflateInit2</a> (<a href="#z_streamp">z_streamp</a> strm, int level, int method, int windowBits, int memLevel, int strategy);</font>
620
+
621
+ <dd> This is another version of <a href="#deflateInit">deflateInit</a> with more compression options. The
622
+ fields <a href="#next_in">next_in</a>, <a href="#zalloc">zalloc</a>, <a href="#zfree">zfree</a> and <a href="#opaque">opaque</a> must be initialized before by
623
+ the caller.<p>
624
+
625
+ The method parameter is the compression method. It must be <a href="#Z_DEFLATED">Z_DEFLATED</a> in
626
+ this version of the library.<p>
627
+
628
+ The windowBits parameter is the base two logarithm of the window size
629
+ (the size of the history buffer). It should be in the range 8..15 for this
630
+ version of the library. Larger values of this parameter result in better
631
+ compression at the expense of memory usage. The default value is 15 if
632
+ <a href="#deflateInit">deflateInit</a> is used instead.<p>
633
+
634
+ The memLevel parameter specifies how much memory should be allocated
635
+ for the internal compression <a href="#state">state</a>. memLevel=1 uses minimum memory but
636
+ is slow and reduces compression ratio ; memLevel=9 uses maximum memory
637
+ for optimal speed. The default value is 8. See zconf.h for total memory
638
+ usage as a function of windowBits and memLevel.<p>
639
+
640
+ The strategy parameter is used to tune the compression algorithm. Use the
641
+ value <a href="#Z_DEFAULT_STRATEGY">Z_DEFAULT_STRATEGY</a> for normal data, <a href="#Z_FILTERED">Z_FILTERED</a> for data produced by a
642
+ filter (or predictor), or <a href="#Z_HUFFMAN_ONLY">Z_HUFFMAN_ONLY</a> to force Huffman encoding only (no
643
+ string match). Filtered data consists mostly of small values with a
644
+ somewhat random distribution. In this case, the compression algorithm is
645
+ tuned to <a href="#compress">compress</a> them better. The effect of <a href="#Z_FILTERED">Z_FILTERED</a> is to force more
646
+ Huffman coding and less string matching ; it is somewhat intermediate
647
+ between Z_DEFAULT and <a href="#Z_HUFFMAN_ONLY">Z_HUFFMAN_ONLY</a>. The strategy parameter only affects
648
+ the compression ratio but not the correctness of the compressed output even
649
+ if it is not set appropriately.<p>
650
+
651
+ <a href="#deflateInit2">deflateInit2</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not enough
652
+ memory, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if a parameter is invalid (such as an invalid
653
+ method). <a href="#msg">msg</a> is set to null if there is no error message. <a href="#deflateInit2">deflateInit2</a> does
654
+ not perform any compression: this will be done by <a href="#deflate">deflate</a>().<p>
655
+
656
+ <font color="Blue"><dt> int <a name="deflateSetDictionary">deflateSetDictionary</a> (<a href="#z_streamp">z_streamp</a> strm, const Bytef *dictionary, uInt dictLength);</font>
657
+ <dd>
658
+ Initializes the compression dictionary from the given byte sequence
659
+ without producing any compressed output. This function must be called
660
+ immediately after <a href="#deflateInit">deflateInit</a>, <a href="#deflateInit2">deflateInit2</a> or <a href="#deflateReset">deflateReset</a>, before any
661
+ call of <a href="#deflate">deflate</a>. The compressor and decompressor must use exactly the same
662
+ dictionary (see <a href="#inflateSetDictionary">inflateSetDictionary</a>).<p>
663
+
664
+ The dictionary should consist of strings (byte sequences) that are likely
665
+ to be encountered later in the data to be compressed, with the most commonly
666
+ used strings preferably put towards the end of the dictionary. Using a
667
+ dictionary is most useful when the data to be compressed is short and can be
668
+ predicted with good accuracy ; the data can then be compressed better than
669
+ with the default empty dictionary.<p>
670
+
671
+ Depending on the size of the compression data structures selected by
672
+ <a href="#deflateInit">deflateInit</a> or <a href="#deflateInit2">deflateInit2</a>, a part of the dictionary may in effect be
673
+ discarded, for example if the dictionary is larger than the window size in
674
+ <a href="#deflate">deflate</a> or deflate2. Thus the strings most likely to be useful should be
675
+ put at the end of the dictionary, not at the front.<p>
676
+
677
+ Upon return of this function, strm-&gt <a href="#adler">adler</a> is set to the Adler32 value
678
+ of the dictionary ; the decompressor may later use this value to determine
679
+ which dictionary has been used by the compressor. (The Adler32 value
680
+ applies to the whole dictionary even if only a subset of the dictionary is
681
+ actually used by the compressor.)<p>
682
+
683
+ <a href="#deflateSetDictionary">deflateSetDictionary</a> returns <a href="#Z_OK">Z_OK</a> if success, or <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if a
684
+ parameter is invalid (such as NULL dictionary) or the stream <a href="#state">state</a> is
685
+ inconsistent (for example if <a href="#deflate">deflate</a> has already been called for this stream
686
+ or if the compression method is bsort). <a href="#deflateSetDictionary">deflateSetDictionary</a> does not
687
+ perform any compression: this will be done by <a href="#deflate">deflate</a>().<p>
688
+
689
+ <font color="Blue"><dt> int <a name="deflateCopy">deflateCopy</a> (<a href="#z_streamp">z_streamp</a> dest, <a href="#z_streamp">z_streamp</a> source);</font>
690
+ <dd>
691
+ Sets the destination stream as a complete copy of the source stream.<p>
692
+
693
+ This function can be useful when several compression strategies will be
694
+ tried, for example when there are several ways of pre-processing the input
695
+ data with a filter. The streams that will be discarded should then be freed
696
+ by calling <a href="#deflateEnd">deflateEnd</a>. Note that <a href="#deflateCopy">deflateCopy</a> duplicates the internal
697
+ compression <a href="#state">state</a> which can be quite large, so this strategy is slow and
698
+ can consume lots of memory.<p>
699
+
700
+ <a href="#deflateCopy">deflateCopy</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not
701
+ enough memory, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the source stream <a href="#state">state</a> was inconsistent
702
+ (such as <a href="#zalloc">zalloc</a> being NULL). <a href="#msg">msg</a> is left unchanged in both source and
703
+ destination.<p>
704
+
705
+ <font color="Blue"><dt> int <a name="deflateReset">deflateReset</a> (<a href="#z_streamp">z_streamp</a> strm);</font>
706
+ <dd> This function is equivalent to <a href="#deflateEnd">deflateEnd</a> followed by <a href="#deflateInit">deflateInit</a>,
707
+ but does not free and reallocate all the internal compression <a href="#state">state</a>.
708
+ The stream will keep the same compression level and any other attributes
709
+ that may have been set by <a href="#deflateInit2">deflateInit2</a>.<p>
710
+
711
+ <a href="#deflateReset">deflateReset</a> returns <a href="#Z_OK">Z_OK</a> if success, or <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the source
712
+ stream <a href="#state">state</a> was inconsistent (such as <a href="#zalloc">zalloc</a> or <a href="#state">state</a> being NULL).<p>
713
+
714
+ <font color="Blue"><dt> int <a name="deflateParams">deflateParams</a> (<a href="#z_streamp">z_streamp</a> strm, int level, int strategy);</font>
715
+ <dd>
716
+ Dynamically update the compression level and compression strategy. The
717
+ interpretation of level and strategy is as in <a href="#deflateInit2">deflateInit2</a>. This can be
718
+ used to switch between compression and straight copy of the input data, or
719
+ to switch to a different kind of input data requiring a different
720
+ strategy. If the compression level is changed, the input available so far
721
+ is compressed with the old level (and may be flushed); the new level will
722
+ take effect only at the next call of <a href="#deflate">deflate</a>().<p>
723
+
724
+ Before the call of <a href="#deflateParams">deflateParams</a>, the stream <a href="#state">state</a> must be set as for
725
+ a call of <a href="#deflate">deflate</a>(), since the currently available input may have to
726
+ be compressed and flushed. In particular, strm-&gt <a href="#avail_out">avail_out</a> must be
727
+ non-zero.<p>
728
+
729
+ <a href="#deflateParams">deflateParams</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the source
730
+ stream <a href="#state">state</a> was inconsistent or if a parameter was invalid, <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a>
731
+ if strm-&gtavail_out was zero.<p>
732
+
733
+ <font color="Blue"><dt> int <a name="inflateInit2">inflateInit2</a> (<a href="#z_streamp">z_streamp</a> strm, int windowBits);</font>
734
+
735
+ <dd> This is another version of <a href="#inflateInit">inflateInit</a> with an extra parameter. The
736
+ fields <a href="#next_in">next_in</a>, <a href="#avail_in">avail_in</a>, <a href="#zalloc">zalloc</a>, <a href="#zfree">zfree</a> and <a href="#opaque">opaque</a> must be initialized
737
+ before by the caller.<p>
738
+
739
+ The windowBits parameter is the base two logarithm of the maximum window
740
+ size (the size of the history buffer). It should be in the range 8..15 for
741
+ this version of the library. The default value is 15 if <a href="#inflateInit">inflateInit</a> is used
742
+ instead. If a compressed stream with a larger window size is given as
743
+ input, <a href="#inflate">inflate</a>() will return with the error code <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a> instead of
744
+ trying to allocate a larger window.<p>
745
+
746
+ <a href="#inflateInit2">inflateInit2</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_MEM_ERROR">Z_MEM_ERROR</a> if there was not enough
747
+ memory, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if a parameter is invalid (such as a negative
748
+ memLevel). <a href="#msg">msg</a> is set to null if there is no error message. <a href="#inflateInit2">inflateInit2</a>
749
+ does not perform any decompression apart from reading the zlib header if
750
+ present: this will be done by <a href="#inflate">inflate</a>(). (So <a href="#next_in">next_in</a> and <a href="#avail_in">avail_in</a> may be
751
+ modified, but <a href="#next_out">next_out</a> and <a href="#avail_out">avail_out</a> are unchanged.)<p>
752
+
753
+ <font color="Blue"><dt> int <a name="inflateSetDictionary">inflateSetDictionary</a> (<a href="#z_streamp">z_streamp</a> strm, const Bytef *dictionary, uInt dictLength);</font>
754
+ <dd>
755
+ Initializes the decompression dictionary from the given uncompressed byte
756
+ sequence. This function must be called immediately after a call of <a href="#inflate">inflate</a>
757
+ if this call returned <a href="#Z_NEED_DICT">Z_NEED_DICT</a>. The dictionary chosen by the compressor
758
+ can be determined from the Adler32 value returned by this call of
759
+ <a href="#inflate">inflate</a>. The compressor and decompressor must use exactly the same
760
+ dictionary (see <a href="#deflateSetDictionary">deflateSetDictionary</a>).<p>
761
+
762
+ <a href="#inflateSetDictionary">inflateSetDictionary</a> returns <a href="#Z_OK">Z_OK</a> if success, <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if a
763
+ parameter is invalid (such as NULL dictionary) or the stream <a href="#state">state</a> is
764
+ inconsistent, <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a> if the given dictionary doesn't match the
765
+ expected one (incorrect Adler32 value). <a href="#inflateSetDictionary">inflateSetDictionary</a> does not
766
+ perform any decompression: this will be done by subsequent calls of
767
+ <a href="#inflate">inflate</a>().<p>
768
+
769
+ <font color="Blue"><dt> int <a name="inflateSync">inflateSync</a> (<a href="#z_streamp">z_streamp</a> strm);</font>
770
+
771
+ <dd> Skips invalid compressed data until a full flush point (see above the
772
+ description of <a href="#deflate">deflate</a> with <a href="#Z_FULL_FLUSH">Z_FULL_FLUSH</a>) can be found, or until all
773
+ available input is skipped. No output is provided.<p>
774
+
775
+ <a href="#inflateSync">inflateSync</a> returns <a href="#Z_OK">Z_OK</a> if a full flush point has been found, <a href="#Z_BUF_ERROR">Z_BUF_ERROR</a>
776
+ if no more input was provided, <a href="#Z_DATA_ERROR">Z_DATA_ERROR</a> if no flush point has been found,
777
+ or <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the stream structure was inconsistent. In the success
778
+ case, the application may save the current current value of <a href="#total_in">total_in</a> which
779
+ indicates where valid compressed data was found. In the error case, the
780
+ application may repeatedly call <a href="#inflateSync">inflateSync</a>, providing more input each time,
781
+ until success or end of the input data.<p>
782
+
783
+ <font color="Blue"><dt> int <a name="inflateReset">inflateReset</a> (<a href="#z_streamp">z_streamp</a> strm);</font>
784
+ <dd>
785
+ This function is equivalent to <a href="#inflateEnd">inflateEnd</a> followed by <a href="#inflateInit">inflateInit</a>,
786
+ but does not free and reallocate all the internal decompression <a href="#state">state</a>.
787
+ The stream will keep attributes that may have been set by <a href="#inflateInit2">inflateInit2</a>.
788
+ <p>
789
+
790
+ <a href="#inflateReset">inflateReset</a> returns <a href="#Z_OK">Z_OK</a> if success, or <a href="#Z_STREAM_ERROR">Z_STREAM_ERROR</a> if the source
791
+ stream <a href="#state">state</a> was inconsistent (such as <a href="#zalloc">zalloc</a> or <a href="#state">state</a> being NULL).
792
+ <p>
793
+ </dl>
794
+
795
+ <hr>
796
+ <a name="Checksum functions"><h2> Checksum functions </h2>
797
+ These functions are not related to compression but are exported
798
+ anyway because they might be useful in applications using the
799
+ compression library.
800
+ <h3> Function list </h3>
801
+ <ul>
802
+ <li> uLong <a href="#adler32">adler32</a> (uLong <a href="#adler">adler</a>, const Bytef *buf, uInt len);
803
+ <li> uLong <a href="#crc32">crc32</a> (uLong crc, const Bytef *buf, uInt len);
804
+ </ul>
805
+ <h3> Function description </h3>
806
+ <dl>
807
+ <font color="Blue"><dt> uLong <a name="adler32">adler32</a> (uLong <a href="#adler">adler</a>, const Bytef *buf, uInt len);</font>
808
+ <dd>
809
+ Update a running Adler-32 checksum with the bytes buf[0..len-1] and
810
+ return the updated checksum. If buf is NULL, this function returns
811
+ the required initial value for the checksum.
812
+ <p>
813
+ An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
814
+ much faster. Usage example:
815
+ <pre>
816
+
817
+ uLong <a href="#adler">adler</a> = <a href="#adler32">adler32</a>(0L, <a href="#Z_NULL">Z_NULL</a>, 0);
818
+
819
+ while (read_buffer(buffer, length) != EOF) {
820
+ <a href="#adler">adler</a> = <a href="#adler32">adler32</a>(<a href="#adler">adler</a>, buffer, length);
821
+ }
822
+ if (<a href="#adler">adler</a> != original_adler) error();
823
+ </pre>
824
+
825
+ <font color="Blue"><dt> uLong <a name="crc32">crc32</a> (uLong crc, const Bytef *buf, uInt len);</font>
826
+ <dd>
827
+ Update a running crc with the bytes buf[0..len-1] and return the updated
828
+ crc. If buf is NULL, this function returns the required initial value
829
+ for the crc. Pre- and post-conditioning (one's complement) is performed
830
+ within this function so it shouldn't be done by the application.
831
+ Usage example:
832
+ <pre>
833
+
834
+ uLong crc = <a href="#crc32">crc32</a>(0L, <a href="#Z_NULL">Z_NULL</a>, 0);
835
+
836
+ while (read_buffer(buffer, length) != EOF) {
837
+ crc = <a href="#crc32">crc32</a>(crc, buffer, length);
838
+ }
839
+ if (crc != original_crc) error();
840
+ </pre>
841
+ </dl>
842
+ <hr>
843
+ <a name="struct z_stream_s"><h2> struct z_stream_s </h2>
844
+ <font color="Blue">
845
+ <a name="z_stream_s">
846
+ <pre>
847
+ typedef struct z_stream_s {
848
+ Bytef *<a name="next_in">next_in</a>; /* next input byte */
849
+ uInt <a name="avail_in">avail_in</a>; /* number of bytes available at <a href="#next_in">next_in</a> */
850
+ uLong <a name="total_in">total_in</a>; /* total nb of input bytes read so far */
851
+
852
+ Bytef *<a name="next_out">next_out</a>; /* next output byte should be put there */
853
+ uInt <a name="avail_out">avail_out</a>; /* remaining free space at <a href="#next_out">next_out</a> */
854
+ uLong <a name="total_out">total_out</a>; /* total nb of bytes output so far */
855
+
856
+ char *<a name="msg">msg</a>; /* last error message, NULL if no error */
857
+ struct internal_state FAR *<a name="state">state</a>; /* not visible by applications */
858
+
859
+ alloc_func <a name="zalloc">zalloc</a>; /* used to allocate the internal <a href="#state">state</a> */
860
+ free_func <a name="zfree">zfree</a>; /* used to free the internal <a href="#state">state</a> */
861
+ voidpf <a name="opaque">opaque</a>; /* private data object passed to <a href="#zalloc">zalloc</a> and <a href="#zfree">zfree</a> */
862
+
863
+ int <a name="data_type">data_type</a>; /* best guess about the data type: ascii or binary */
864
+ uLong <a name="adler">adler</a>; /* <a href="#adler32">adler32</a> value of the uncompressed data */
865
+ uLong <a name="reserved">reserved</a>; /* <a href="#reserved">reserved</a> for future use */
866
+ } <a href="#z_stream_s">z_stream</a> ;
867
+
868
+ typedef <a href="#z_stream_s">z_stream</a> FAR * <a name="z_streamp">z_streamp</a>; �
869
+ </pre>
870
+ </font>
871
+ The application must update <a href="#next_in">next_in</a> and <a href="#avail_in">avail_in</a> when <a href="#avail_in">avail_in</a> has
872
+ dropped to zero. It must update <a href="#next_out">next_out</a> and <a href="#avail_out">avail_out</a> when <a href="#avail_out">avail_out</a>
873
+ has dropped to zero. The application must initialize <a href="#zalloc">zalloc</a>, <a href="#zfree">zfree</a> and
874
+ <a href="#opaque">opaque</a> before calling the init function. All other fields are set by the
875
+ compression library and must not be updated by the application. <p>
876
+
877
+ The <a href="#opaque">opaque</a> value provided by the application will be passed as the first
878
+ parameter for calls of <a href="#zalloc">zalloc</a> and <a href="#zfree">zfree</a>. This can be useful for custom
879
+ memory management. The compression library attaches no meaning to the
880
+ <a href="#opaque">opaque</a> value. <p>
881
+
882
+ <a href="#zalloc">zalloc</a> must return <a href="#Z_NULL">Z_NULL</a> if there is not enough memory for the object.
883
+ If zlib is used in a multi-threaded application, <a href="#zalloc">zalloc</a> and <a href="#zfree">zfree</a> must be
884
+ thread safe. <p>
885
+
886
+ On 16-bit systems, the functions <a href="#zalloc">zalloc</a> and <a href="#zfree">zfree</a> must be able to allocate
887
+ exactly 65536 bytes, but will not be required to allocate more than this
888
+ if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
889
+ pointers returned by <a href="#zalloc">zalloc</a> for objects of exactly 65536 bytes *must*
890
+ have their offset normalized to zero. The default allocation function
891
+ provided by this library ensures this (see zutil.c). To reduce memory
892
+ requirements and avoid any allocation of 64K objects, at the expense of
893
+ compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
894
+ <p>
895
+
896
+ The fields <a href="#total_in">total_in</a> and <a href="#total_out">total_out</a> can be used for statistics or
897
+ progress reports. After compression, <a href="#total_in">total_in</a> holds the total size of
898
+ the uncompressed data and may be saved for use in the decompressor
899
+ (particularly if the decompressor wants to decompress everything in
900
+ a single step). <p>
901
+
902
+ <hr>
903
+ <a name="Constants"><h2> Constants </h2>
904
+ <font color="Blue">
905
+ <pre>
906
+ #define <a name="Z_NO_FLUSH">Z_NO_FLUSH</a> 0
907
+ #define <a name="Z_PARTIAL_FLUSH">Z_PARTIAL_FLUSH</a> 1
908
+ /* will be removed, use <a href="#Z_SYNC_FLUSH">Z_SYNC_FLUSH</a> instead */
909
+ #define <a name="Z_SYNC_FLUSH">Z_SYNC_FLUSH</a> 2
910
+ #define <a name="Z_FULL_FLUSH">Z_FULL_FLUSH</a> 3
911
+ #define <a name="Z_FINISH">Z_FINISH</a> 4
912
+ /* Allowed flush values ; see <a href="#deflate">deflate</a>() below for details */
913
+
914
+ #define <a name="Z_OK">Z_OK</a> 0
915
+ #define <a name="Z_STREAM_END">Z_STREAM_END</a> 1
916
+ #define <a name="Z_NEED_DICT">Z_NEED_DICT</a> 2
917
+ #define <a name="Z_ERRNO">Z_ERRNO</a> (-1)
918
+ #define <a name="Z_STREAM_ERROR">Z_STREAM_ERROR</a> (-2)
919
+ #define <a name="Z_DATA_ERROR">Z_DATA_ERROR</a> (-3)
920
+ #define <a name="Z_MEM_ERROR">Z_MEM_ERROR</a> (-4)
921
+ #define <a name="Z_BUF_ERROR">Z_BUF_ERROR</a> (-5)
922
+ #define <a name="Z_VERSION_ERROR">Z_VERSION_ERROR</a> (-6)
923
+ /* Return codes for the compression/decompression functions. Negative
924
+ * values are errors, positive values are used for special but normal events.
925
+ */
926
+
927
+ #define <a name="Z_NO_COMPRESSION">Z_NO_COMPRESSION</a> 0
928
+ #define <a name="Z_BEST_SPEED">Z_BEST_SPEED</a> 1
929
+ #define <a name="Z_BEST_COMPRESSION">Z_BEST_COMPRESSION</a> 9
930
+ #define <a name="Z_DEFAULT_COMPRESSION">Z_DEFAULT_COMPRESSION</a> (-1)
931
+ /* compression levels */
932
+
933
+ #define <a name="Z_FILTERED">Z_FILTERED</a> 1
934
+ #define <a name="Z_HUFFMAN_ONLY">Z_HUFFMAN_ONLY</a> 2
935
+ #define <a name="Z_DEFAULT_STRATEGY">Z_DEFAULT_STRATEGY</a> 0
936
+ /* compression strategy ; see <a href="#deflateInit2">deflateInit2</a>() below for details */
937
+
938
+ #define <a name="Z_BINARY">Z_BINARY</a> 0
939
+ #define <a name="Z_ASCII">Z_ASCII</a> 1
940
+ #define <a name="Z_UNKNOWN">Z_UNKNOWN</a> 2
941
+ /* Possible values of the <a href="#data_type">data_type</a> field */
942
+
943
+ #define <a name="Z_DEFLATED">Z_DEFLATED</a> 8
944
+ /* The <a href="#deflate">deflate</a> compression method (the only one supported in this version) */
945
+
946
+ #define <a name="Z_NULL">Z_NULL</a> 0 /* for initializing <a href="#zalloc">zalloc</a>, <a href="#zfree">zfree</a>, <a href="#opaque">opaque</a> */
947
+
948
+ #define <a name="zlib_version">zlib_version</a> <a href="#zlibVersion">zlibVersion</a>()
949
+ /* for compatibility with versions less than 1.0.2 */
950
+ </pre>
951
+ </font>
952
+
953
+ <hr>
954
+ <a name="Misc"><h2> Misc </h2>
955
+ <a href="#deflateInit">deflateInit</a> and <a href="#inflateInit">inflateInit</a> are macros to allow checking the zlib version
956
+ and the compiler's view of <a href="#z_stream_s">z_stream</a>.
957
+ <p>
958
+ Other functions:
959
+ <dl>
960
+ <font color="Blue"><dt> const char * <a name="zError">zError</a> (int err);</font>
961
+ <font color="Blue"><dt> int <a name="inflateSyncPoint">inflateSyncPoint</a> (<a href="#z_streamp">z_streamp</a> z);</font>
962
+ <font color="Blue"><dt> const uLongf * <a name="get_crc_table">get_crc_table</a> (void);</font>
963
+ </dl>
964
+ <hr>
965
+ <font size="-1">
966
+ Last update: Wed Oct 13 20:42:34 1999<br>
967
+ piapi@csie.ntu.edu.tw
968
+ </font>
969
+
970
+ </body>
971
+ </html>