gosu 0.7.13.3 → 0.7.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (478) hide show
  1. data/Gosu/Audio.hpp +10 -4
  2. data/Gosu/Math.hpp +23 -10
  3. data/Gosu/Platform.hpp +2 -0
  4. data/Gosu/Version.hpp +9 -0
  5. data/GosuImpl/Audio/ALChannelManagement.hpp +13 -3
  6. data/GosuImpl/Audio/AudioFile.hpp +45 -0
  7. data/GosuImpl/Audio/AudioOpenAL.mm +533 -0
  8. data/GosuImpl/Audio/AudioToolboxFile.hpp +217 -0
  9. data/GosuImpl/Audio/OggFile.hpp +114 -0
  10. data/GosuImpl/AudioFmod.cpp +4 -0
  11. data/GosuImpl/AudioSDL.cpp +4 -0
  12. data/GosuImpl/Graphics/GosuView.mm +2 -2
  13. data/GosuImpl/Graphics/Texture.cpp +9 -4
  14. data/GosuImpl/Math.cpp +1 -1
  15. data/GosuImpl/RubyGosu.swg +10 -1
  16. data/GosuImpl/RubyGosu_wrap.cxx +175 -1416
  17. data/GosuImpl/RubyGosu_wrap.cxx.rej +187 -0
  18. data/GosuImpl/WinUtility.cpp +1 -1
  19. data/GosuImpl/WindowMac.mm +1 -0
  20. data/GosuImpl/WindowTouch.mm +1 -0
  21. data/README.txt +5 -5
  22. data/Rakefile +48 -9
  23. data/examples/media/Starfighter.bmp +0 -0
  24. data/linux/configure +1166 -975
  25. data/linux/configure.ac +14 -30
  26. data/linux/extconf.rb +2 -5
  27. data/mac/Gosu.xcodeproj/jlnr.pbxuser +330 -267
  28. data/mac/Gosu.xcodeproj/jlnr.perspectivev3 +48 -47
  29. data/mac/Gosu.xcodeproj/project.pbxproj +626 -74
  30. data/mac/RubyGosu App-Info.plist +1 -1
  31. data/reference/cpp/_audio_8hpp-source.html +81 -75
  32. data/reference/cpp/_math_8hpp-source.html +57 -48
  33. data/reference/cpp/_math_8hpp.html +7 -1
  34. data/reference/cpp/_platform_8hpp-source.html +58 -56
  35. data/reference/cpp/_platform_8hpp.html +21 -2
  36. data/reference/cpp/_version_8hpp-source.html +77 -0
  37. data/reference/cpp/_version_8hpp.html +153 -0
  38. data/reference/cpp/class_gosu_1_1_audio-members.html +1 -0
  39. data/reference/cpp/class_gosu_1_1_audio.html +22 -0
  40. data/reference/cpp/class_gosu_1_1_sample.html +1 -1
  41. data/reference/cpp/class_gosu_1_1_sample_instance.html +1 -1
  42. data/reference/cpp/class_gosu_1_1_song.html +2 -2
  43. data/reference/cpp/files.html +1 -0
  44. data/reference/cpp/functions_0x67.html +1 -3
  45. data/reference/cpp/functions_0x74.html +2 -2
  46. data/reference/cpp/functions_0x75.html +3 -2
  47. data/reference/cpp/functions_func_0x67.html +1 -3
  48. data/reference/cpp/functions_func_0x74.html +2 -2
  49. data/reference/cpp/functions_func_0x75.html +3 -2
  50. data/reference/cpp/globals.html +10 -0
  51. data/reference/cpp/globals_defs.html +10 -0
  52. data/reference/rdoc/classes/Gosu.html +1547 -0
  53. data/reference/rdoc/classes/Gosu/Color.html +563 -0
  54. data/reference/rdoc/classes/Gosu/Font.html +538 -0
  55. data/reference/rdoc/classes/Gosu/GLTexInfo.html +404 -0
  56. data/reference/rdoc/classes/Gosu/Image.html +702 -0
  57. data/reference/rdoc/classes/Gosu/Sample.html +469 -0
  58. data/reference/rdoc/classes/Gosu/SampleInstance.html +516 -0
  59. data/reference/rdoc/classes/Gosu/Song.html +561 -0
  60. data/reference/rdoc/classes/Gosu/TextInput.html +398 -0
  61. data/reference/rdoc/classes/Gosu/Window.html +913 -0
  62. data/reference/rdoc/classes/Numeric.html +416 -0
  63. data/reference/rdoc/created.rid +1 -0
  64. data/reference/rdoc/files/COPYING_txt.html +386 -0
  65. data/reference/rdoc/files/README_txt.html +381 -0
  66. data/reference/rdoc/files/reference/DeploymentOnOSX_rdoc.html +390 -0
  67. data/reference/rdoc/files/reference/DeploymentOnWindows_rdoc.html +392 -0
  68. data/reference/rdoc/files/reference/DrawingWithColors_rdoc.html +357 -0
  69. data/reference/rdoc/files/reference/OrderOfCorners_rdoc.html +352 -0
  70. data/reference/rdoc/files/reference/Tileability_rdoc.html +368 -0
  71. data/reference/rdoc/files/reference/ZOrdering_rdoc.html +355 -0
  72. data/reference/rdoc/files/reference/gosu_rb.html +342 -0
  73. data/reference/rdoc/fr_class_index.html +12 -0
  74. data/reference/rdoc/fr_file_index.html +10 -0
  75. data/reference/rdoc/fr_method_index.html +63 -0
  76. data/reference/rdoc/index.html +1 -0
  77. data/reference/rdoc/rdoc-style.css +318 -0
  78. data/windows/Gosu.vcproj +33 -33
  79. data/windows/RubyGosu.vcproj +2 -2
  80. metadata +36 -400
  81. data/GosuImpl/Audio/AudioFileMac.hpp +0 -105
  82. data/GosuImpl/AudioOpenAL.mm +0 -486
  83. data/mac/libboost_thread_1_34_1_universal.a +0 -0
  84. data/mac/libboost_thread_d_1_34_1_universal.a +0 -0
  85. data/mac/libfmod_universal.a +0 -0
  86. data/mac/libpng_universal.a +0 -0
  87. data/mac/libz_universal.a +0 -0
  88. data/windows/zlib, libpng/libpng/ANNOUNCE +0 -61
  89. data/windows/zlib, libpng/libpng/CHANGES +0 -2173
  90. data/windows/zlib, libpng/libpng/INSTALL +0 -199
  91. data/windows/zlib, libpng/libpng/KNOWNBUG +0 -22
  92. data/windows/zlib, libpng/libpng/LICENSE +0 -109
  93. data/windows/zlib, libpng/libpng/README +0 -264
  94. data/windows/zlib, libpng/libpng/TODO +0 -24
  95. data/windows/zlib, libpng/libpng/Y2KINFO +0 -55
  96. data/windows/zlib, libpng/libpng/configure +0 -13
  97. data/windows/zlib, libpng/libpng/contrib/gregbook/COPYING +0 -340
  98. data/windows/zlib, libpng/libpng/contrib/gregbook/LICENSE +0 -50
  99. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.mingw32 +0 -130
  100. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.sgi +0 -104
  101. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.unx +0 -132
  102. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.w32 +0 -113
  103. data/windows/zlib, libpng/libpng/contrib/gregbook/README +0 -186
  104. data/windows/zlib, libpng/libpng/contrib/gregbook/makevms.com +0 -132
  105. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.c +0 -304
  106. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.h +0 -88
  107. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.c +0 -645
  108. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.h +0 -121
  109. data/windows/zlib, libpng/libpng/contrib/gregbook/readppm.c +0 -179
  110. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-win.c +0 -684
  111. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-x.c +0 -904
  112. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-win.c +0 -1225
  113. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-x.c +0 -2127
  114. data/windows/zlib, libpng/libpng/contrib/gregbook/toucan.png +0 -0
  115. data/windows/zlib, libpng/libpng/contrib/gregbook/wpng.c +0 -853
  116. data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.c +0 -392
  117. data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.h +0 -133
  118. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/README +0 -6
  119. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/gather.sh +0 -8
  120. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/makefile.std +0 -44
  121. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/pngusr.h +0 -67
  122. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/README +0 -6
  123. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/dummy_inflate.c +0 -27
  124. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/gather.sh +0 -9
  125. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/makefile.std +0 -43
  126. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/pngusr.h +0 -66
  127. data/windows/zlib, libpng/libpng/contrib/pngminus/README +0 -153
  128. data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.std +0 -65
  129. data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.tc3 +0 -38
  130. data/windows/zlib, libpng/libpng/contrib/pngminus/makevms.com +0 -92
  131. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.bat +0 -41
  132. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.c +0 -430
  133. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.sh +0 -42
  134. data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.bat +0 -4
  135. data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.sh +0 -5
  136. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.bat +0 -41
  137. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.c +0 -533
  138. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.sh +0 -42
  139. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g01.png +0 -0
  140. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g02.png +0 -0
  141. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g04.png +0 -0
  142. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g08.png +0 -0
  143. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g16.png +0 -0
  144. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c08.png +0 -0
  145. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c16.png +0 -0
  146. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p01.png +0 -0
  147. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p02.png +0 -0
  148. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p04.png +0 -0
  149. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p08.png +0 -0
  150. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a08.png +0 -0
  151. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a16.png +0 -0
  152. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a08.png +0 -0
  153. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a16.png +0 -0
  154. data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.c +0 -439
  155. data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.h +0 -27
  156. data/windows/zlib, libpng/libpng/contrib/visupng/README.txt +0 -58
  157. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.c +0 -961
  158. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsp +0 -147
  159. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsw +0 -29
  160. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.ico +0 -0
  161. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.png +0 -0
  162. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.rc +0 -152
  163. data/windows/zlib, libpng/libpng/contrib/visupng/cexcept.h +0 -243
  164. data/windows/zlib, libpng/libpng/contrib/visupng/resource.h +0 -23
  165. data/windows/zlib, libpng/libpng/example.c +0 -814
  166. data/windows/zlib, libpng/libpng/libpng-1.2.29.txt +0 -2906
  167. data/windows/zlib, libpng/libpng/libpng.3 +0 -3680
  168. data/windows/zlib, libpng/libpng/libpngpf.3 +0 -274
  169. data/windows/zlib, libpng/libpng/png.5 +0 -74
  170. data/windows/zlib, libpng/libpng/png.c +0 -798
  171. data/windows/zlib, libpng/libpng/png.h +0 -3569
  172. data/windows/zlib, libpng/libpng/pngbar.jpg +0 -0
  173. data/windows/zlib, libpng/libpng/pngbar.png +0 -0
  174. data/windows/zlib, libpng/libpng/pngconf.h +0 -1481
  175. data/windows/zlib, libpng/libpng/pngerror.c +0 -343
  176. data/windows/zlib, libpng/libpng/pnggccrd.c +0 -103
  177. data/windows/zlib, libpng/libpng/pngget.c +0 -901
  178. data/windows/zlib, libpng/libpng/pngmem.c +0 -608
  179. data/windows/zlib, libpng/libpng/pngnow.png +0 -0
  180. data/windows/zlib, libpng/libpng/pngpread.c +0 -1598
  181. data/windows/zlib, libpng/libpng/pngread.c +0 -1479
  182. data/windows/zlib, libpng/libpng/pngrio.c +0 -167
  183. data/windows/zlib, libpng/libpng/pngrtran.c +0 -4292
  184. data/windows/zlib, libpng/libpng/pngrutil.c +0 -3183
  185. data/windows/zlib, libpng/libpng/pngset.c +0 -1268
  186. data/windows/zlib, libpng/libpng/pngtest.c +0 -1563
  187. data/windows/zlib, libpng/libpng/pngtest.png +0 -0
  188. data/windows/zlib, libpng/libpng/pngtrans.c +0 -662
  189. data/windows/zlib, libpng/libpng/pngvcrd.c +0 -1
  190. data/windows/zlib, libpng/libpng/pngwio.c +0 -234
  191. data/windows/zlib, libpng/libpng/pngwrite.c +0 -1532
  192. data/windows/zlib, libpng/libpng/pngwtran.c +0 -572
  193. data/windows/zlib, libpng/libpng/pngwutil.c +0 -2802
  194. data/windows/zlib, libpng/libpng/projects/beos/x86-shared.proj +0 -0
  195. data/windows/zlib, libpng/libpng/projects/beos/x86-shared.txt +0 -22
  196. data/windows/zlib, libpng/libpng/projects/beos/x86-static.proj +0 -0
  197. data/windows/zlib, libpng/libpng/projects/beos/x86-static.txt +0 -22
  198. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpf +0 -22
  199. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpg +0 -25
  200. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpr +0 -157
  201. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.cpp +0 -29
  202. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.readme.txt +0 -25
  203. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpf +0 -22
  204. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpr +0 -109
  205. data/windows/zlib, libpng/libpng/projects/cbuilder5/zlib.readme.txt +0 -14
  206. data/windows/zlib, libpng/libpng/projects/netware.txt +0 -6
  207. data/windows/zlib, libpng/libpng/projects/visualc6/README.txt +0 -57
  208. data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsp +0 -472
  209. data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsw +0 -59
  210. data/windows/zlib, libpng/libpng/projects/visualc6/pngtest.dsp +0 -314
  211. data/windows/zlib, libpng/libpng/projects/visualc71/PRJ0041.mak +0 -21
  212. data/windows/zlib, libpng/libpng/projects/visualc71/README.txt +0 -57
  213. data/windows/zlib, libpng/libpng/projects/visualc71/README_zlib.txt +0 -44
  214. data/windows/zlib, libpng/libpng/projects/visualc71/libpng.sln +0 -88
  215. data/windows/zlib, libpng/libpng/projects/visualc71/libpng.vcproj +0 -702
  216. data/windows/zlib, libpng/libpng/projects/visualc71/pngtest.vcproj +0 -459
  217. data/windows/zlib, libpng/libpng/projects/visualc71/zlib.vcproj +0 -670
  218. data/windows/zlib, libpng/libpng/projects/wince.txt +0 -6
  219. data/windows/zlib, libpng/libpng/scripts/CMakeLists.txt +0 -210
  220. data/windows/zlib, libpng/libpng/scripts/SCOPTIONS.ppc +0 -7
  221. data/windows/zlib, libpng/libpng/scripts/descrip.mms +0 -52
  222. data/windows/zlib, libpng/libpng/scripts/libpng-config-body.in +0 -96
  223. data/windows/zlib, libpng/libpng/scripts/libpng-config-head.in +0 -21
  224. data/windows/zlib, libpng/libpng/scripts/libpng-config.in +0 -124
  225. data/windows/zlib, libpng/libpng/scripts/libpng.icc +0 -44
  226. data/windows/zlib, libpng/libpng/scripts/libpng.pc-configure.in +0 -10
  227. data/windows/zlib, libpng/libpng/scripts/libpng.pc.in +0 -10
  228. data/windows/zlib, libpng/libpng/scripts/makefile.32sunu +0 -254
  229. data/windows/zlib, libpng/libpng/scripts/makefile.64sunu +0 -254
  230. data/windows/zlib, libpng/libpng/scripts/makefile.acorn +0 -51
  231. data/windows/zlib, libpng/libpng/scripts/makefile.aix +0 -113
  232. data/windows/zlib, libpng/libpng/scripts/makefile.amiga +0 -48
  233. data/windows/zlib, libpng/libpng/scripts/makefile.atari +0 -51
  234. data/windows/zlib, libpng/libpng/scripts/makefile.bc32 +0 -152
  235. data/windows/zlib, libpng/libpng/scripts/makefile.beos +0 -226
  236. data/windows/zlib, libpng/libpng/scripts/makefile.bor +0 -162
  237. data/windows/zlib, libpng/libpng/scripts/makefile.cygwin +0 -299
  238. data/windows/zlib, libpng/libpng/scripts/makefile.darwin +0 -234
  239. data/windows/zlib, libpng/libpng/scripts/makefile.dec +0 -214
  240. data/windows/zlib, libpng/libpng/scripts/makefile.dj2 +0 -55
  241. data/windows/zlib, libpng/libpng/scripts/makefile.elf +0 -275
  242. data/windows/zlib, libpng/libpng/scripts/makefile.freebsd +0 -48
  243. data/windows/zlib, libpng/libpng/scripts/makefile.gcc +0 -79
  244. data/windows/zlib, libpng/libpng/scripts/makefile.gcmmx +0 -271
  245. data/windows/zlib, libpng/libpng/scripts/makefile.hp64 +0 -235
  246. data/windows/zlib, libpng/libpng/scripts/makefile.hpgcc +0 -245
  247. data/windows/zlib, libpng/libpng/scripts/makefile.hpux +0 -232
  248. data/windows/zlib, libpng/libpng/scripts/makefile.ibmc +0 -71
  249. data/windows/zlib, libpng/libpng/scripts/makefile.intel +0 -102
  250. data/windows/zlib, libpng/libpng/scripts/makefile.knr +0 -99
  251. data/windows/zlib, libpng/libpng/scripts/makefile.linux +0 -249
  252. data/windows/zlib, libpng/libpng/scripts/makefile.mingw +0 -289
  253. data/windows/zlib, libpng/libpng/scripts/makefile.mips +0 -83
  254. data/windows/zlib, libpng/libpng/scripts/makefile.msc +0 -86
  255. data/windows/zlib, libpng/libpng/scripts/makefile.ne12bsd +0 -45
  256. data/windows/zlib, libpng/libpng/scripts/makefile.netbsd +0 -45
  257. data/windows/zlib, libpng/libpng/scripts/makefile.nommx +0 -252
  258. data/windows/zlib, libpng/libpng/scripts/makefile.openbsd +0 -73
  259. data/windows/zlib, libpng/libpng/scripts/makefile.os2 +0 -69
  260. data/windows/zlib, libpng/libpng/scripts/makefile.sco +0 -229
  261. data/windows/zlib, libpng/libpng/scripts/makefile.sggcc +0 -242
  262. data/windows/zlib, libpng/libpng/scripts/makefile.sgi +0 -245
  263. data/windows/zlib, libpng/libpng/scripts/makefile.so9 +0 -251
  264. data/windows/zlib, libpng/libpng/scripts/makefile.solaris +0 -249
  265. data/windows/zlib, libpng/libpng/scripts/makefile.solaris-x86 +0 -248
  266. data/windows/zlib, libpng/libpng/scripts/makefile.std +0 -92
  267. data/windows/zlib, libpng/libpng/scripts/makefile.sunos +0 -97
  268. data/windows/zlib, libpng/libpng/scripts/makefile.tc3 +0 -89
  269. data/windows/zlib, libpng/libpng/scripts/makefile.vcawin32 +0 -99
  270. data/windows/zlib, libpng/libpng/scripts/makefile.vcwin32 +0 -99
  271. data/windows/zlib, libpng/libpng/scripts/makefile.watcom +0 -109
  272. data/windows/zlib, libpng/libpng/scripts/makevms.com +0 -144
  273. data/windows/zlib, libpng/libpng/scripts/pngos2.def +0 -257
  274. data/windows/zlib, libpng/libpng/scripts/pngw32.def +0 -238
  275. data/windows/zlib, libpng/libpng/scripts/pngw32.rc +0 -112
  276. data/windows/zlib, libpng/libpng/scripts/smakefile.ppc +0 -30
  277. data/windows/zlib, libpng/zlib/ChangeLog +0 -855
  278. data/windows/zlib, libpng/zlib/FAQ +0 -339
  279. data/windows/zlib, libpng/zlib/INDEX +0 -51
  280. data/windows/zlib, libpng/zlib/Makefile +0 -154
  281. data/windows/zlib, libpng/zlib/Makefile.in +0 -154
  282. data/windows/zlib, libpng/zlib/README +0 -125
  283. data/windows/zlib, libpng/zlib/adler32.c +0 -149
  284. data/windows/zlib, libpng/zlib/algorithm.txt +0 -209
  285. data/windows/zlib, libpng/zlib/amiga/Makefile.pup +0 -66
  286. data/windows/zlib, libpng/zlib/amiga/Makefile.sas +0 -65
  287. data/windows/zlib, libpng/zlib/as400/bndsrc +0 -132
  288. data/windows/zlib, libpng/zlib/as400/compile.clp +0 -123
  289. data/windows/zlib, libpng/zlib/as400/readme.txt +0 -111
  290. data/windows/zlib, libpng/zlib/as400/zlib.inc +0 -331
  291. data/windows/zlib, libpng/zlib/compress.c +0 -79
  292. data/windows/zlib, libpng/zlib/configure +0 -459
  293. data/windows/zlib, libpng/zlib/contrib/README.contrib +0 -71
  294. data/windows/zlib, libpng/zlib/contrib/ada/buffer_demo.adb +0 -106
  295. data/windows/zlib, libpng/zlib/contrib/ada/mtest.adb +0 -156
  296. data/windows/zlib, libpng/zlib/contrib/ada/read.adb +0 -156
  297. data/windows/zlib, libpng/zlib/contrib/ada/readme.txt +0 -65
  298. data/windows/zlib, libpng/zlib/contrib/ada/test.adb +0 -463
  299. data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.adb +0 -225
  300. data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.ads +0 -114
  301. data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.adb +0 -141
  302. data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.ads +0 -450
  303. data/windows/zlib, libpng/zlib/contrib/ada/zlib.adb +0 -701
  304. data/windows/zlib, libpng/zlib/contrib/ada/zlib.ads +0 -328
  305. data/windows/zlib, libpng/zlib/contrib/ada/zlib.gpr +0 -20
  306. data/windows/zlib, libpng/zlib/contrib/asm586/README.586 +0 -43
  307. data/windows/zlib, libpng/zlib/contrib/asm586/match.S +0 -364
  308. data/windows/zlib, libpng/zlib/contrib/asm686/README.686 +0 -34
  309. data/windows/zlib, libpng/zlib/contrib/asm686/match.S +0 -329
  310. data/windows/zlib, libpng/zlib/contrib/blast/Makefile +0 -8
  311. data/windows/zlib, libpng/zlib/contrib/blast/README +0 -4
  312. data/windows/zlib, libpng/zlib/contrib/blast/blast.c +0 -444
  313. data/windows/zlib, libpng/zlib/contrib/blast/blast.h +0 -71
  314. data/windows/zlib, libpng/zlib/contrib/blast/test.pk +0 -0
  315. data/windows/zlib, libpng/zlib/contrib/blast/test.txt +0 -1
  316. data/windows/zlib, libpng/zlib/contrib/delphi/ZLib.pas +0 -557
  317. data/windows/zlib, libpng/zlib/contrib/delphi/ZLibConst.pas +0 -11
  318. data/windows/zlib, libpng/zlib/contrib/delphi/readme.txt +0 -76
  319. data/windows/zlib, libpng/zlib/contrib/delphi/zlibd32.mak +0 -93
  320. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.build +0 -33
  321. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  322. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.sln +0 -21
  323. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +0 -58
  324. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +0 -202
  325. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +0 -83
  326. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +0 -198
  327. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Deflater.cs +0 -106
  328. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +0 -288
  329. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +0 -141
  330. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +0 -301
  331. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Inflater.cs +0 -105
  332. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +0 -274
  333. data/windows/zlib, libpng/zlib/contrib/dotzlib/LICENSE_1_0.txt +0 -23
  334. data/windows/zlib, libpng/zlib/contrib/dotzlib/readme.txt +0 -58
  335. data/windows/zlib, libpng/zlib/contrib/infback9/README +0 -1
  336. data/windows/zlib, libpng/zlib/contrib/infback9/infback9.c +0 -608
  337. data/windows/zlib, libpng/zlib/contrib/infback9/infback9.h +0 -37
  338. data/windows/zlib, libpng/zlib/contrib/infback9/inffix9.h +0 -107
  339. data/windows/zlib, libpng/zlib/contrib/infback9/inflate9.h +0 -47
  340. data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.c +0 -323
  341. data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.h +0 -55
  342. data/windows/zlib, libpng/zlib/contrib/inflate86/inffas86.c +0 -1157
  343. data/windows/zlib, libpng/zlib/contrib/inflate86/inffast.S +0 -1368
  344. data/windows/zlib, libpng/zlib/contrib/iostream/test.cpp +0 -24
  345. data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.cpp +0 -329
  346. data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.h +0 -128
  347. data/windows/zlib, libpng/zlib/contrib/iostream2/zstream.h +0 -307
  348. data/windows/zlib, libpng/zlib/contrib/iostream2/zstream_test.cpp +0 -25
  349. data/windows/zlib, libpng/zlib/contrib/iostream3/README +0 -35
  350. data/windows/zlib, libpng/zlib/contrib/iostream3/TODO +0 -17
  351. data/windows/zlib, libpng/zlib/contrib/iostream3/test.cc +0 -50
  352. data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.cc +0 -479
  353. data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.h +0 -466
  354. data/windows/zlib, libpng/zlib/contrib/masm686/match.asm +0 -413
  355. data/windows/zlib, libpng/zlib/contrib/masmx64/bld_ml64.bat +0 -2
  356. data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.asm +0 -513
  357. data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.obj +0 -0
  358. data/windows/zlib, libpng/zlib/contrib/masmx64/inffas8664.c +0 -186
  359. data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.asm +0 -392
  360. data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.obj +0 -0
  361. data/windows/zlib, libpng/zlib/contrib/masmx64/readme.txt +0 -28
  362. data/windows/zlib, libpng/zlib/contrib/masmx86/bld_ml32.bat +0 -2
  363. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.asm +0 -972
  364. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.obj +0 -0
  365. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32c.c +0 -62
  366. data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.asm +0 -1083
  367. data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.obj +0 -0
  368. data/windows/zlib, libpng/zlib/contrib/masmx86/mkasm.bat +0 -3
  369. data/windows/zlib, libpng/zlib/contrib/masmx86/readme.txt +0 -21
  370. data/windows/zlib, libpng/zlib/contrib/minizip/ChangeLogUnzip +0 -67
  371. data/windows/zlib, libpng/zlib/contrib/minizip/Makefile +0 -25
  372. data/windows/zlib, libpng/zlib/contrib/minizip/crypt.h +0 -132
  373. data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.c +0 -177
  374. data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.h +0 -75
  375. data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.c +0 -270
  376. data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.h +0 -21
  377. data/windows/zlib, libpng/zlib/contrib/minizip/miniunz.c +0 -585
  378. data/windows/zlib, libpng/zlib/contrib/minizip/minizip.c +0 -420
  379. data/windows/zlib, libpng/zlib/contrib/minizip/mztools.c +0 -281
  380. data/windows/zlib, libpng/zlib/contrib/minizip/mztools.h +0 -31
  381. data/windows/zlib, libpng/zlib/contrib/minizip/unzip.c +0 -1598
  382. data/windows/zlib, libpng/zlib/contrib/minizip/unzip.h +0 -354
  383. data/windows/zlib, libpng/zlib/contrib/minizip/zip.c +0 -1219
  384. data/windows/zlib, libpng/zlib/contrib/minizip/zip.h +0 -235
  385. data/windows/zlib, libpng/zlib/contrib/pascal/example.pas +0 -599
  386. data/windows/zlib, libpng/zlib/contrib/pascal/readme.txt +0 -76
  387. data/windows/zlib, libpng/zlib/contrib/pascal/zlibd32.mak +0 -93
  388. data/windows/zlib, libpng/zlib/contrib/pascal/zlibpas.pas +0 -236
  389. data/windows/zlib, libpng/zlib/contrib/puff/Makefile +0 -8
  390. data/windows/zlib, libpng/zlib/contrib/puff/README +0 -63
  391. data/windows/zlib, libpng/zlib/contrib/puff/puff.c +0 -837
  392. data/windows/zlib, libpng/zlib/contrib/puff/puff.h +0 -31
  393. data/windows/zlib, libpng/zlib/contrib/puff/zeros.raw +0 -0
  394. data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.c +0 -275
  395. data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.txt +0 -10
  396. data/windows/zlib, libpng/zlib/contrib/untgz/Makefile +0 -14
  397. data/windows/zlib, libpng/zlib/contrib/untgz/Makefile.msc +0 -17
  398. data/windows/zlib, libpng/zlib/contrib/untgz/untgz.c +0 -674
  399. data/windows/zlib, libpng/zlib/contrib/vstudio/readme.txt +0 -73
  400. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/miniunz.vcproj +0 -126
  401. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/minizip.vcproj +0 -126
  402. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/testzlib.vcproj +0 -126
  403. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlib.rc +0 -32
  404. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibstat.vcproj +0 -246
  405. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.def +0 -92
  406. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.sln +0 -78
  407. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.vcproj +0 -445
  408. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/miniunz.vcproj +0 -566
  409. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/minizip.vcproj +0 -563
  410. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlib.vcproj +0 -948
  411. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlibdll.vcproj +0 -567
  412. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlib.rc +0 -32
  413. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibstat.vcproj +0 -870
  414. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.def +0 -92
  415. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.sln +0 -144
  416. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.vcproj +0 -1219
  417. data/windows/zlib, libpng/zlib/crc32.c +0 -423
  418. data/windows/zlib, libpng/zlib/crc32.h +0 -441
  419. data/windows/zlib, libpng/zlib/deflate.c +0 -1736
  420. data/windows/zlib, libpng/zlib/deflate.h +0 -331
  421. data/windows/zlib, libpng/zlib/example.c +0 -565
  422. data/windows/zlib, libpng/zlib/examples/README.examples +0 -42
  423. data/windows/zlib, libpng/zlib/examples/fitblk.c +0 -233
  424. data/windows/zlib, libpng/zlib/examples/gun.c +0 -693
  425. data/windows/zlib, libpng/zlib/examples/gzappend.c +0 -500
  426. data/windows/zlib, libpng/zlib/examples/gzjoin.c +0 -448
  427. data/windows/zlib, libpng/zlib/examples/gzlog.c +0 -413
  428. data/windows/zlib, libpng/zlib/examples/gzlog.h +0 -58
  429. data/windows/zlib, libpng/zlib/examples/zlib_how.html +0 -523
  430. data/windows/zlib, libpng/zlib/examples/zpipe.c +0 -191
  431. data/windows/zlib, libpng/zlib/examples/zran.c +0 -404
  432. data/windows/zlib, libpng/zlib/gzio.c +0 -1026
  433. data/windows/zlib, libpng/zlib/infback.c +0 -623
  434. data/windows/zlib, libpng/zlib/inffast.c +0 -318
  435. data/windows/zlib, libpng/zlib/inffast.h +0 -11
  436. data/windows/zlib, libpng/zlib/inffixed.h +0 -94
  437. data/windows/zlib, libpng/zlib/inflate.c +0 -1368
  438. data/windows/zlib, libpng/zlib/inflate.h +0 -115
  439. data/windows/zlib, libpng/zlib/inftrees.c +0 -329
  440. data/windows/zlib, libpng/zlib/inftrees.h +0 -55
  441. data/windows/zlib, libpng/zlib/make_vms.com +0 -461
  442. data/windows/zlib, libpng/zlib/minigzip.c +0 -322
  443. data/windows/zlib, libpng/zlib/msdos/Makefile.bor +0 -109
  444. data/windows/zlib, libpng/zlib/msdos/Makefile.dj2 +0 -104
  445. data/windows/zlib, libpng/zlib/msdos/Makefile.emx +0 -69
  446. data/windows/zlib, libpng/zlib/msdos/Makefile.msc +0 -106
  447. data/windows/zlib, libpng/zlib/msdos/Makefile.tc +0 -94
  448. data/windows/zlib, libpng/zlib/old/Makefile.riscos +0 -151
  449. data/windows/zlib, libpng/zlib/old/README +0 -3
  450. data/windows/zlib, libpng/zlib/old/descrip.mms +0 -48
  451. data/windows/zlib, libpng/zlib/old/os2/Makefile.os2 +0 -136
  452. data/windows/zlib, libpng/zlib/old/os2/zlib.def +0 -51
  453. data/windows/zlib, libpng/zlib/old/visual-basic.txt +0 -160
  454. data/windows/zlib, libpng/zlib/old/zlib.html +0 -971
  455. data/windows/zlib, libpng/zlib/projects/README.projects +0 -41
  456. data/windows/zlib, libpng/zlib/projects/visualc6/README.txt +0 -73
  457. data/windows/zlib, libpng/zlib/projects/visualc6/example.dsp +0 -278
  458. data/windows/zlib, libpng/zlib/projects/visualc6/minigzip.dsp +0 -278
  459. data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsp +0 -609
  460. data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsw +0 -59
  461. data/windows/zlib, libpng/zlib/qnx/package.qpg +0 -141
  462. data/windows/zlib, libpng/zlib/trees.c +0 -1219
  463. data/windows/zlib, libpng/zlib/trees.h +0 -128
  464. data/windows/zlib, libpng/zlib/uncompr.c +0 -61
  465. data/windows/zlib, libpng/zlib/win32/DLL_FAQ.txt +0 -397
  466. data/windows/zlib, libpng/zlib/win32/Makefile.bor +0 -107
  467. data/windows/zlib, libpng/zlib/win32/Makefile.emx +0 -69
  468. data/windows/zlib, libpng/zlib/win32/Makefile.gcc +0 -141
  469. data/windows/zlib, libpng/zlib/win32/Makefile.msc +0 -126
  470. data/windows/zlib, libpng/zlib/win32/VisualC.txt +0 -3
  471. data/windows/zlib, libpng/zlib/win32/zlib.def +0 -60
  472. data/windows/zlib, libpng/zlib/win32/zlib1.rc +0 -39
  473. data/windows/zlib, libpng/zlib/zconf.h +0 -332
  474. data/windows/zlib, libpng/zlib/zconf.in.h +0 -332
  475. data/windows/zlib, libpng/zlib/zlib.3 +0 -159
  476. data/windows/zlib, libpng/zlib/zlib.h +0 -1357
  477. data/windows/zlib, libpng/zlib/zutil.c +0 -318
  478. data/windows/zlib, libpng/zlib/zutil.h +0 -269
@@ -1,1026 +0,0 @@
1
- /* gzio.c -- IO on .gz files
2
- * Copyright (C) 1995-2005 Jean-loup Gailly.
3
- * For conditions of distribution and use, see copyright notice in zlib.h
4
- *
5
- * Compile this file with -DNO_GZCOMPRESS to avoid the compression code.
6
- */
7
-
8
- /* @(#) $Id$ */
9
-
10
- #include <stdio.h>
11
-
12
- #include "zutil.h"
13
-
14
- #ifdef NO_DEFLATE /* for compatibility with old definition */
15
- # define NO_GZCOMPRESS
16
- #endif
17
-
18
- #ifndef NO_DUMMY_DECL
19
- struct internal_state {int dummy;}; /* for buggy compilers */
20
- #endif
21
-
22
- #ifndef Z_BUFSIZE
23
- # ifdef MAXSEG_64K
24
- # define Z_BUFSIZE 4096 /* minimize memory usage for 16-bit DOS */
25
- # else
26
- # define Z_BUFSIZE 16384
27
- # endif
28
- #endif
29
- #ifndef Z_PRINTF_BUFSIZE
30
- # define Z_PRINTF_BUFSIZE 4096
31
- #endif
32
-
33
- #ifdef __MVS__
34
- # pragma map (fdopen , "\174\174FDOPEN")
35
- FILE *fdopen(int, const char *);
36
- #endif
37
-
38
- #ifndef STDC
39
- extern voidp malloc OF((uInt size));
40
- extern void free OF((voidpf ptr));
41
- #endif
42
-
43
- #define ALLOC(size) malloc(size)
44
- #define TRYFREE(p) {if (p) free(p);}
45
-
46
- static int const gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
47
-
48
- /* gzip flag byte */
49
- #define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
50
- #define HEAD_CRC 0x02 /* bit 1 set: header CRC present */
51
- #define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
52
- #define ORIG_NAME 0x08 /* bit 3 set: original file name present */
53
- #define COMMENT 0x10 /* bit 4 set: file comment present */
54
- #define RESERVED 0xE0 /* bits 5..7: reserved */
55
-
56
- typedef struct gz_stream {
57
- z_stream stream;
58
- int z_err; /* error code for last stream operation */
59
- int z_eof; /* set if end of input file */
60
- FILE *file; /* .gz file */
61
- Byte *inbuf; /* input buffer */
62
- Byte *outbuf; /* output buffer */
63
- uLong crc; /* crc32 of uncompressed data */
64
- char *msg; /* error message */
65
- char *path; /* path name for debugging only */
66
- int transparent; /* 1 if input file is not a .gz file */
67
- char mode; /* 'w' or 'r' */
68
- z_off_t start; /* start of compressed data in file (header skipped) */
69
- z_off_t in; /* bytes into deflate or inflate */
70
- z_off_t out; /* bytes out of deflate or inflate */
71
- int back; /* one character push-back */
72
- int last; /* true if push-back is last character */
73
- } gz_stream;
74
-
75
-
76
- local gzFile gz_open OF((const char *path, const char *mode, int fd));
77
- local int do_flush OF((gzFile file, int flush));
78
- local int get_byte OF((gz_stream *s));
79
- local void check_header OF((gz_stream *s));
80
- local int destroy OF((gz_stream *s));
81
- local void putLong OF((FILE *file, uLong x));
82
- local uLong getLong OF((gz_stream *s));
83
-
84
- /* ===========================================================================
85
- Opens a gzip (.gz) file for reading or writing. The mode parameter
86
- is as in fopen ("rb" or "wb"). The file is given either by file descriptor
87
- or path name (if fd == -1).
88
- gz_open returns NULL if the file could not be opened or if there was
89
- insufficient memory to allocate the (de)compression state; errno
90
- can be checked to distinguish the two cases (if errno is zero, the
91
- zlib error is Z_MEM_ERROR).
92
- */
93
- local gzFile gz_open (path, mode, fd)
94
- const char *path;
95
- const char *mode;
96
- int fd;
97
- {
98
- int err;
99
- int level = Z_DEFAULT_COMPRESSION; /* compression level */
100
- int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */
101
- char *p = (char*)mode;
102
- gz_stream *s;
103
- char fmode[80]; /* copy of mode, without the compression level */
104
- char *m = fmode;
105
-
106
- if (!path || !mode) return Z_NULL;
107
-
108
- s = (gz_stream *)ALLOC(sizeof(gz_stream));
109
- if (!s) return Z_NULL;
110
-
111
- s->stream.zalloc = (alloc_func)0;
112
- s->stream.zfree = (free_func)0;
113
- s->stream.opaque = (voidpf)0;
114
- s->stream.next_in = s->inbuf = Z_NULL;
115
- s->stream.next_out = s->outbuf = Z_NULL;
116
- s->stream.avail_in = s->stream.avail_out = 0;
117
- s->file = NULL;
118
- s->z_err = Z_OK;
119
- s->z_eof = 0;
120
- s->in = 0;
121
- s->out = 0;
122
- s->back = EOF;
123
- s->crc = crc32(0L, Z_NULL, 0);
124
- s->msg = NULL;
125
- s->transparent = 0;
126
-
127
- s->path = (char*)ALLOC(strlen(path)+1);
128
- if (s->path == NULL) {
129
- return destroy(s), (gzFile)Z_NULL;
130
- }
131
- strcpy(s->path, path); /* do this early for debugging */
132
-
133
- s->mode = '\0';
134
- do {
135
- if (*p == 'r') s->mode = 'r';
136
- if (*p == 'w' || *p == 'a') s->mode = 'w';
137
- if (*p >= '0' && *p <= '9') {
138
- level = *p - '0';
139
- } else if (*p == 'f') {
140
- strategy = Z_FILTERED;
141
- } else if (*p == 'h') {
142
- strategy = Z_HUFFMAN_ONLY;
143
- } else if (*p == 'R') {
144
- strategy = Z_RLE;
145
- } else {
146
- *m++ = *p; /* copy the mode */
147
- }
148
- } while (*p++ && m != fmode + sizeof(fmode));
149
- if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL;
150
-
151
- if (s->mode == 'w') {
152
- #ifdef NO_GZCOMPRESS
153
- err = Z_STREAM_ERROR;
154
- #else
155
- err = deflateInit2(&(s->stream), level,
156
- Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy);
157
- /* windowBits is passed < 0 to suppress zlib header */
158
-
159
- s->stream.next_out = s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
160
- #endif
161
- if (err != Z_OK || s->outbuf == Z_NULL) {
162
- return destroy(s), (gzFile)Z_NULL;
163
- }
164
- } else {
165
- s->stream.next_in = s->inbuf = (Byte*)ALLOC(Z_BUFSIZE);
166
-
167
- err = inflateInit2(&(s->stream), -MAX_WBITS);
168
- /* windowBits is passed < 0 to tell that there is no zlib header.
169
- * Note that in this case inflate *requires* an extra "dummy" byte
170
- * after the compressed stream in order to complete decompression and
171
- * return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are
172
- * present after the compressed stream.
173
- */
174
- if (err != Z_OK || s->inbuf == Z_NULL) {
175
- return destroy(s), (gzFile)Z_NULL;
176
- }
177
- }
178
- s->stream.avail_out = Z_BUFSIZE;
179
-
180
- errno = 0;
181
- s->file = fd < 0 ? F_OPEN(path, fmode) : (FILE*)fdopen(fd, fmode);
182
-
183
- if (s->file == NULL) {
184
- return destroy(s), (gzFile)Z_NULL;
185
- }
186
- if (s->mode == 'w') {
187
- /* Write a very simple .gz header:
188
- */
189
- fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
190
- Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
191
- s->start = 10L;
192
- /* We use 10L instead of ftell(s->file) to because ftell causes an
193
- * fflush on some systems. This version of the library doesn't use
194
- * start anyway in write mode, so this initialization is not
195
- * necessary.
196
- */
197
- } else {
198
- check_header(s); /* skip the .gz header */
199
- s->start = ftell(s->file) - s->stream.avail_in;
200
- }
201
-
202
- return (gzFile)s;
203
- }
204
-
205
- /* ===========================================================================
206
- Opens a gzip (.gz) file for reading or writing.
207
- */
208
- gzFile ZEXPORT gzopen (path, mode)
209
- const char *path;
210
- const char *mode;
211
- {
212
- return gz_open (path, mode, -1);
213
- }
214
-
215
- /* ===========================================================================
216
- Associate a gzFile with the file descriptor fd. fd is not dup'ed here
217
- to mimic the behavio(u)r of fdopen.
218
- */
219
- gzFile ZEXPORT gzdopen (fd, mode)
220
- int fd;
221
- const char *mode;
222
- {
223
- char name[46]; /* allow for up to 128-bit integers */
224
-
225
- if (fd < 0) return (gzFile)Z_NULL;
226
- sprintf(name, "<fd:%d>", fd); /* for debugging */
227
-
228
- return gz_open (name, mode, fd);
229
- }
230
-
231
- /* ===========================================================================
232
- * Update the compression level and strategy
233
- */
234
- int ZEXPORT gzsetparams (file, level, strategy)
235
- gzFile file;
236
- int level;
237
- int strategy;
238
- {
239
- gz_stream *s = (gz_stream*)file;
240
-
241
- if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
242
-
243
- /* Make room to allow flushing */
244
- if (s->stream.avail_out == 0) {
245
-
246
- s->stream.next_out = s->outbuf;
247
- if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
248
- s->z_err = Z_ERRNO;
249
- }
250
- s->stream.avail_out = Z_BUFSIZE;
251
- }
252
-
253
- return deflateParams (&(s->stream), level, strategy);
254
- }
255
-
256
- /* ===========================================================================
257
- Read a byte from a gz_stream; update next_in and avail_in. Return EOF
258
- for end of file.
259
- IN assertion: the stream s has been sucessfully opened for reading.
260
- */
261
- local int get_byte(s)
262
- gz_stream *s;
263
- {
264
- if (s->z_eof) return EOF;
265
- if (s->stream.avail_in == 0) {
266
- errno = 0;
267
- s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
268
- if (s->stream.avail_in == 0) {
269
- s->z_eof = 1;
270
- if (ferror(s->file)) s->z_err = Z_ERRNO;
271
- return EOF;
272
- }
273
- s->stream.next_in = s->inbuf;
274
- }
275
- s->stream.avail_in--;
276
- return *(s->stream.next_in)++;
277
- }
278
-
279
- /* ===========================================================================
280
- Check the gzip header of a gz_stream opened for reading. Set the stream
281
- mode to transparent if the gzip magic header is not present; set s->err
282
- to Z_DATA_ERROR if the magic header is present but the rest of the header
283
- is incorrect.
284
- IN assertion: the stream s has already been created sucessfully;
285
- s->stream.avail_in is zero for the first time, but may be non-zero
286
- for concatenated .gz files.
287
- */
288
- local void check_header(s)
289
- gz_stream *s;
290
- {
291
- int method; /* method byte */
292
- int flags; /* flags byte */
293
- uInt len;
294
- int c;
295
-
296
- /* Assure two bytes in the buffer so we can peek ahead -- handle case
297
- where first byte of header is at the end of the buffer after the last
298
- gzip segment */
299
- len = s->stream.avail_in;
300
- if (len < 2) {
301
- if (len) s->inbuf[0] = s->stream.next_in[0];
302
- errno = 0;
303
- len = (uInt)fread(s->inbuf + len, 1, Z_BUFSIZE >> len, s->file);
304
- if (len == 0 && ferror(s->file)) s->z_err = Z_ERRNO;
305
- s->stream.avail_in += len;
306
- s->stream.next_in = s->inbuf;
307
- if (s->stream.avail_in < 2) {
308
- s->transparent = s->stream.avail_in;
309
- return;
310
- }
311
- }
312
-
313
- /* Peek ahead to check the gzip magic header */
314
- if (s->stream.next_in[0] != gz_magic[0] ||
315
- s->stream.next_in[1] != gz_magic[1]) {
316
- s->transparent = 1;
317
- return;
318
- }
319
- s->stream.avail_in -= 2;
320
- s->stream.next_in += 2;
321
-
322
- /* Check the rest of the gzip header */
323
- method = get_byte(s);
324
- flags = get_byte(s);
325
- if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
326
- s->z_err = Z_DATA_ERROR;
327
- return;
328
- }
329
-
330
- /* Discard time, xflags and OS code: */
331
- for (len = 0; len < 6; len++) (void)get_byte(s);
332
-
333
- if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
334
- len = (uInt)get_byte(s);
335
- len += ((uInt)get_byte(s))<<8;
336
- /* len is garbage if EOF but the loop below will quit anyway */
337
- while (len-- != 0 && get_byte(s) != EOF) ;
338
- }
339
- if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
340
- while ((c = get_byte(s)) != 0 && c != EOF) ;
341
- }
342
- if ((flags & COMMENT) != 0) { /* skip the .gz file comment */
343
- while ((c = get_byte(s)) != 0 && c != EOF) ;
344
- }
345
- if ((flags & HEAD_CRC) != 0) { /* skip the header crc */
346
- for (len = 0; len < 2; len++) (void)get_byte(s);
347
- }
348
- s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;
349
- }
350
-
351
- /* ===========================================================================
352
- * Cleanup then free the given gz_stream. Return a zlib error code.
353
- Try freeing in the reverse order of allocations.
354
- */
355
- local int destroy (s)
356
- gz_stream *s;
357
- {
358
- int err = Z_OK;
359
-
360
- if (!s) return Z_STREAM_ERROR;
361
-
362
- TRYFREE(s->msg);
363
-
364
- if (s->stream.state != NULL) {
365
- if (s->mode == 'w') {
366
- #ifdef NO_GZCOMPRESS
367
- err = Z_STREAM_ERROR;
368
- #else
369
- err = deflateEnd(&(s->stream));
370
- #endif
371
- } else if (s->mode == 'r') {
372
- err = inflateEnd(&(s->stream));
373
- }
374
- }
375
- if (s->file != NULL && fclose(s->file)) {
376
- #ifdef ESPIPE
377
- if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */
378
- #endif
379
- err = Z_ERRNO;
380
- }
381
- if (s->z_err < 0) err = s->z_err;
382
-
383
- TRYFREE(s->inbuf);
384
- TRYFREE(s->outbuf);
385
- TRYFREE(s->path);
386
- TRYFREE(s);
387
- return err;
388
- }
389
-
390
- /* ===========================================================================
391
- Reads the given number of uncompressed bytes from the compressed file.
392
- gzread returns the number of bytes actually read (0 for end of file).
393
- */
394
- int ZEXPORT gzread (file, buf, len)
395
- gzFile file;
396
- voidp buf;
397
- unsigned len;
398
- {
399
- gz_stream *s = (gz_stream*)file;
400
- Bytef *start = (Bytef*)buf; /* starting point for crc computation */
401
- Byte *next_out; /* == stream.next_out but not forced far (for MSDOS) */
402
-
403
- if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR;
404
-
405
- if (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO) return -1;
406
- if (s->z_err == Z_STREAM_END) return 0; /* EOF */
407
-
408
- next_out = (Byte*)buf;
409
- s->stream.next_out = (Bytef*)buf;
410
- s->stream.avail_out = len;
411
-
412
- if (s->stream.avail_out && s->back != EOF) {
413
- *next_out++ = s->back;
414
- s->stream.next_out++;
415
- s->stream.avail_out--;
416
- s->back = EOF;
417
- s->out++;
418
- start++;
419
- if (s->last) {
420
- s->z_err = Z_STREAM_END;
421
- return 1;
422
- }
423
- }
424
-
425
- while (s->stream.avail_out != 0) {
426
-
427
- if (s->transparent) {
428
- /* Copy first the lookahead bytes: */
429
- uInt n = s->stream.avail_in;
430
- if (n > s->stream.avail_out) n = s->stream.avail_out;
431
- if (n > 0) {
432
- zmemcpy(s->stream.next_out, s->stream.next_in, n);
433
- next_out += n;
434
- s->stream.next_out = next_out;
435
- s->stream.next_in += n;
436
- s->stream.avail_out -= n;
437
- s->stream.avail_in -= n;
438
- }
439
- if (s->stream.avail_out > 0) {
440
- s->stream.avail_out -=
441
- (uInt)fread(next_out, 1, s->stream.avail_out, s->file);
442
- }
443
- len -= s->stream.avail_out;
444
- s->in += len;
445
- s->out += len;
446
- if (len == 0) s->z_eof = 1;
447
- return (int)len;
448
- }
449
- if (s->stream.avail_in == 0 && !s->z_eof) {
450
-
451
- errno = 0;
452
- s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
453
- if (s->stream.avail_in == 0) {
454
- s->z_eof = 1;
455
- if (ferror(s->file)) {
456
- s->z_err = Z_ERRNO;
457
- break;
458
- }
459
- }
460
- s->stream.next_in = s->inbuf;
461
- }
462
- s->in += s->stream.avail_in;
463
- s->out += s->stream.avail_out;
464
- s->z_err = inflate(&(s->stream), Z_NO_FLUSH);
465
- s->in -= s->stream.avail_in;
466
- s->out -= s->stream.avail_out;
467
-
468
- if (s->z_err == Z_STREAM_END) {
469
- /* Check CRC and original size */
470
- s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
471
- start = s->stream.next_out;
472
-
473
- if (getLong(s) != s->crc) {
474
- s->z_err = Z_DATA_ERROR;
475
- } else {
476
- (void)getLong(s);
477
- /* The uncompressed length returned by above getlong() may be
478
- * different from s->out in case of concatenated .gz files.
479
- * Check for such files:
480
- */
481
- check_header(s);
482
- if (s->z_err == Z_OK) {
483
- inflateReset(&(s->stream));
484
- s->crc = crc32(0L, Z_NULL, 0);
485
- }
486
- }
487
- }
488
- if (s->z_err != Z_OK || s->z_eof) break;
489
- }
490
- s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
491
-
492
- if (len == s->stream.avail_out &&
493
- (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO))
494
- return -1;
495
- return (int)(len - s->stream.avail_out);
496
- }
497
-
498
-
499
- /* ===========================================================================
500
- Reads one byte from the compressed file. gzgetc returns this byte
501
- or -1 in case of end of file or error.
502
- */
503
- int ZEXPORT gzgetc(file)
504
- gzFile file;
505
- {
506
- unsigned char c;
507
-
508
- return gzread(file, &c, 1) == 1 ? c : -1;
509
- }
510
-
511
-
512
- /* ===========================================================================
513
- Push one byte back onto the stream.
514
- */
515
- int ZEXPORT gzungetc(c, file)
516
- int c;
517
- gzFile file;
518
- {
519
- gz_stream *s = (gz_stream*)file;
520
-
521
- if (s == NULL || s->mode != 'r' || c == EOF || s->back != EOF) return EOF;
522
- s->back = c;
523
- s->out--;
524
- s->last = (s->z_err == Z_STREAM_END);
525
- if (s->last) s->z_err = Z_OK;
526
- s->z_eof = 0;
527
- return c;
528
- }
529
-
530
-
531
- /* ===========================================================================
532
- Reads bytes from the compressed file until len-1 characters are
533
- read, or a newline character is read and transferred to buf, or an
534
- end-of-file condition is encountered. The string is then terminated
535
- with a null character.
536
- gzgets returns buf, or Z_NULL in case of error.
537
-
538
- The current implementation is not optimized at all.
539
- */
540
- char * ZEXPORT gzgets(file, buf, len)
541
- gzFile file;
542
- char *buf;
543
- int len;
544
- {
545
- char *b = buf;
546
- if (buf == Z_NULL || len <= 0) return Z_NULL;
547
-
548
- while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ;
549
- *buf = '\0';
550
- return b == buf && len > 0 ? Z_NULL : b;
551
- }
552
-
553
-
554
- #ifndef NO_GZCOMPRESS
555
- /* ===========================================================================
556
- Writes the given number of uncompressed bytes into the compressed file.
557
- gzwrite returns the number of bytes actually written (0 in case of error).
558
- */
559
- int ZEXPORT gzwrite (file, buf, len)
560
- gzFile file;
561
- voidpc buf;
562
- unsigned len;
563
- {
564
- gz_stream *s = (gz_stream*)file;
565
-
566
- if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
567
-
568
- s->stream.next_in = (Bytef*)buf;
569
- s->stream.avail_in = len;
570
-
571
- while (s->stream.avail_in != 0) {
572
-
573
- if (s->stream.avail_out == 0) {
574
-
575
- s->stream.next_out = s->outbuf;
576
- if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
577
- s->z_err = Z_ERRNO;
578
- break;
579
- }
580
- s->stream.avail_out = Z_BUFSIZE;
581
- }
582
- s->in += s->stream.avail_in;
583
- s->out += s->stream.avail_out;
584
- s->z_err = deflate(&(s->stream), Z_NO_FLUSH);
585
- s->in -= s->stream.avail_in;
586
- s->out -= s->stream.avail_out;
587
- if (s->z_err != Z_OK) break;
588
- }
589
- s->crc = crc32(s->crc, (const Bytef *)buf, len);
590
-
591
- return (int)(len - s->stream.avail_in);
592
- }
593
-
594
-
595
- /* ===========================================================================
596
- Converts, formats, and writes the args to the compressed file under
597
- control of the format string, as in fprintf. gzprintf returns the number of
598
- uncompressed bytes actually written (0 in case of error).
599
- */
600
- #ifdef STDC
601
- #include <stdarg.h>
602
-
603
- int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
604
- {
605
- char buf[Z_PRINTF_BUFSIZE];
606
- va_list va;
607
- int len;
608
-
609
- buf[sizeof(buf) - 1] = 0;
610
- va_start(va, format);
611
- #ifdef NO_vsnprintf
612
- # ifdef HAS_vsprintf_void
613
- (void)vsprintf(buf, format, va);
614
- va_end(va);
615
- for (len = 0; len < sizeof(buf); len++)
616
- if (buf[len] == 0) break;
617
- # else
618
- len = vsprintf(buf, format, va);
619
- va_end(va);
620
- # endif
621
- #else
622
- # ifdef HAS_vsnprintf_void
623
- (void)vsnprintf(buf, sizeof(buf), format, va);
624
- va_end(va);
625
- len = strlen(buf);
626
- # else
627
- len = vsnprintf(buf, sizeof(buf), format, va);
628
- va_end(va);
629
- # endif
630
- #endif
631
- if (len <= 0 || len >= (int)sizeof(buf) || buf[sizeof(buf) - 1] != 0)
632
- return 0;
633
- return gzwrite(file, buf, (unsigned)len);
634
- }
635
- #else /* not ANSI C */
636
-
637
- int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
638
- a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
639
- gzFile file;
640
- const char *format;
641
- int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
642
- a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
643
- {
644
- char buf[Z_PRINTF_BUFSIZE];
645
- int len;
646
-
647
- buf[sizeof(buf) - 1] = 0;
648
- #ifdef NO_snprintf
649
- # ifdef HAS_sprintf_void
650
- sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
651
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
652
- for (len = 0; len < sizeof(buf); len++)
653
- if (buf[len] == 0) break;
654
- # else
655
- len = sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
656
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
657
- # endif
658
- #else
659
- # ifdef HAS_snprintf_void
660
- snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
661
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
662
- len = strlen(buf);
663
- # else
664
- len = snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
665
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
666
- # endif
667
- #endif
668
- if (len <= 0 || len >= sizeof(buf) || buf[sizeof(buf) - 1] != 0)
669
- return 0;
670
- return gzwrite(file, buf, len);
671
- }
672
- #endif
673
-
674
- /* ===========================================================================
675
- Writes c, converted to an unsigned char, into the compressed file.
676
- gzputc returns the value that was written, or -1 in case of error.
677
- */
678
- int ZEXPORT gzputc(file, c)
679
- gzFile file;
680
- int c;
681
- {
682
- unsigned char cc = (unsigned char) c; /* required for big endian systems */
683
-
684
- return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1;
685
- }
686
-
687
-
688
- /* ===========================================================================
689
- Writes the given null-terminated string to the compressed file, excluding
690
- the terminating null character.
691
- gzputs returns the number of characters written, or -1 in case of error.
692
- */
693
- int ZEXPORT gzputs(file, s)
694
- gzFile file;
695
- const char *s;
696
- {
697
- return gzwrite(file, (char*)s, (unsigned)strlen(s));
698
- }
699
-
700
-
701
- /* ===========================================================================
702
- Flushes all pending output into the compressed file. The parameter
703
- flush is as in the deflate() function.
704
- */
705
- local int do_flush (file, flush)
706
- gzFile file;
707
- int flush;
708
- {
709
- uInt len;
710
- int done = 0;
711
- gz_stream *s = (gz_stream*)file;
712
-
713
- if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
714
-
715
- s->stream.avail_in = 0; /* should be zero already anyway */
716
-
717
- for (;;) {
718
- len = Z_BUFSIZE - s->stream.avail_out;
719
-
720
- if (len != 0) {
721
- if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
722
- s->z_err = Z_ERRNO;
723
- return Z_ERRNO;
724
- }
725
- s->stream.next_out = s->outbuf;
726
- s->stream.avail_out = Z_BUFSIZE;
727
- }
728
- if (done) break;
729
- s->out += s->stream.avail_out;
730
- s->z_err = deflate(&(s->stream), flush);
731
- s->out -= s->stream.avail_out;
732
-
733
- /* Ignore the second of two consecutive flushes: */
734
- if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK;
735
-
736
- /* deflate has finished flushing only when it hasn't used up
737
- * all the available space in the output buffer:
738
- */
739
- done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END);
740
-
741
- if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break;
742
- }
743
- return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
744
- }
745
-
746
- int ZEXPORT gzflush (file, flush)
747
- gzFile file;
748
- int flush;
749
- {
750
- gz_stream *s = (gz_stream*)file;
751
- int err = do_flush (file, flush);
752
-
753
- if (err) return err;
754
- fflush(s->file);
755
- return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
756
- }
757
- #endif /* NO_GZCOMPRESS */
758
-
759
- /* ===========================================================================
760
- Sets the starting position for the next gzread or gzwrite on the given
761
- compressed file. The offset represents a number of bytes in the
762
- gzseek returns the resulting offset location as measured in bytes from
763
- the beginning of the uncompressed stream, or -1 in case of error.
764
- SEEK_END is not implemented, returns error.
765
- In this version of the library, gzseek can be extremely slow.
766
- */
767
- z_off_t ZEXPORT gzseek (file, offset, whence)
768
- gzFile file;
769
- z_off_t offset;
770
- int whence;
771
- {
772
- gz_stream *s = (gz_stream*)file;
773
-
774
- if (s == NULL || whence == SEEK_END ||
775
- s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) {
776
- return -1L;
777
- }
778
-
779
- if (s->mode == 'w') {
780
- #ifdef NO_GZCOMPRESS
781
- return -1L;
782
- #else
783
- if (whence == SEEK_SET) {
784
- offset -= s->in;
785
- }
786
- if (offset < 0) return -1L;
787
-
788
- /* At this point, offset is the number of zero bytes to write. */
789
- if (s->inbuf == Z_NULL) {
790
- s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */
791
- if (s->inbuf == Z_NULL) return -1L;
792
- zmemzero(s->inbuf, Z_BUFSIZE);
793
- }
794
- while (offset > 0) {
795
- uInt size = Z_BUFSIZE;
796
- if (offset < Z_BUFSIZE) size = (uInt)offset;
797
-
798
- size = gzwrite(file, s->inbuf, size);
799
- if (size == 0) return -1L;
800
-
801
- offset -= size;
802
- }
803
- return s->in;
804
- #endif
805
- }
806
- /* Rest of function is for reading only */
807
-
808
- /* compute absolute position */
809
- if (whence == SEEK_CUR) {
810
- offset += s->out;
811
- }
812
- if (offset < 0) return -1L;
813
-
814
- if (s->transparent) {
815
- /* map to fseek */
816
- s->back = EOF;
817
- s->stream.avail_in = 0;
818
- s->stream.next_in = s->inbuf;
819
- if (fseek(s->file, offset, SEEK_SET) < 0) return -1L;
820
-
821
- s->in = s->out = offset;
822
- return offset;
823
- }
824
-
825
- /* For a negative seek, rewind and use positive seek */
826
- if (offset >= s->out) {
827
- offset -= s->out;
828
- } else if (gzrewind(file) < 0) {
829
- return -1L;
830
- }
831
- /* offset is now the number of bytes to skip. */
832
-
833
- if (offset != 0 && s->outbuf == Z_NULL) {
834
- s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
835
- if (s->outbuf == Z_NULL) return -1L;
836
- }
837
- if (offset && s->back != EOF) {
838
- s->back = EOF;
839
- s->out++;
840
- offset--;
841
- if (s->last) s->z_err = Z_STREAM_END;
842
- }
843
- while (offset > 0) {
844
- int size = Z_BUFSIZE;
845
- if (offset < Z_BUFSIZE) size = (int)offset;
846
-
847
- size = gzread(file, s->outbuf, (uInt)size);
848
- if (size <= 0) return -1L;
849
- offset -= size;
850
- }
851
- return s->out;
852
- }
853
-
854
- /* ===========================================================================
855
- Rewinds input file.
856
- */
857
- int ZEXPORT gzrewind (file)
858
- gzFile file;
859
- {
860
- gz_stream *s = (gz_stream*)file;
861
-
862
- if (s == NULL || s->mode != 'r') return -1;
863
-
864
- s->z_err = Z_OK;
865
- s->z_eof = 0;
866
- s->back = EOF;
867
- s->stream.avail_in = 0;
868
- s->stream.next_in = s->inbuf;
869
- s->crc = crc32(0L, Z_NULL, 0);
870
- if (!s->transparent) (void)inflateReset(&s->stream);
871
- s->in = 0;
872
- s->out = 0;
873
- return fseek(s->file, s->start, SEEK_SET);
874
- }
875
-
876
- /* ===========================================================================
877
- Returns the starting position for the next gzread or gzwrite on the
878
- given compressed file. This position represents a number of bytes in the
879
- uncompressed data stream.
880
- */
881
- z_off_t ZEXPORT gztell (file)
882
- gzFile file;
883
- {
884
- return gzseek(file, 0L, SEEK_CUR);
885
- }
886
-
887
- /* ===========================================================================
888
- Returns 1 when EOF has previously been detected reading the given
889
- input stream, otherwise zero.
890
- */
891
- int ZEXPORT gzeof (file)
892
- gzFile file;
893
- {
894
- gz_stream *s = (gz_stream*)file;
895
-
896
- /* With concatenated compressed files that can have embedded
897
- * crc trailers, z_eof is no longer the only/best indicator of EOF
898
- * on a gz_stream. Handle end-of-stream error explicitly here.
899
- */
900
- if (s == NULL || s->mode != 'r') return 0;
901
- if (s->z_eof) return 1;
902
- return s->z_err == Z_STREAM_END;
903
- }
904
-
905
- /* ===========================================================================
906
- Returns 1 if reading and doing so transparently, otherwise zero.
907
- */
908
- int ZEXPORT gzdirect (file)
909
- gzFile file;
910
- {
911
- gz_stream *s = (gz_stream*)file;
912
-
913
- if (s == NULL || s->mode != 'r') return 0;
914
- return s->transparent;
915
- }
916
-
917
- /* ===========================================================================
918
- Outputs a long in LSB order to the given file
919
- */
920
- local void putLong (file, x)
921
- FILE *file;
922
- uLong x;
923
- {
924
- int n;
925
- for (n = 0; n < 4; n++) {
926
- fputc((int)(x & 0xff), file);
927
- x >>= 8;
928
- }
929
- }
930
-
931
- /* ===========================================================================
932
- Reads a long in LSB order from the given gz_stream. Sets z_err in case
933
- of error.
934
- */
935
- local uLong getLong (s)
936
- gz_stream *s;
937
- {
938
- uLong x = (uLong)get_byte(s);
939
- int c;
940
-
941
- x += ((uLong)get_byte(s))<<8;
942
- x += ((uLong)get_byte(s))<<16;
943
- c = get_byte(s);
944
- if (c == EOF) s->z_err = Z_DATA_ERROR;
945
- x += ((uLong)c)<<24;
946
- return x;
947
- }
948
-
949
- /* ===========================================================================
950
- Flushes all pending output if necessary, closes the compressed file
951
- and deallocates all the (de)compression state.
952
- */
953
- int ZEXPORT gzclose (file)
954
- gzFile file;
955
- {
956
- gz_stream *s = (gz_stream*)file;
957
-
958
- if (s == NULL) return Z_STREAM_ERROR;
959
-
960
- if (s->mode == 'w') {
961
- #ifdef NO_GZCOMPRESS
962
- return Z_STREAM_ERROR;
963
- #else
964
- if (do_flush (file, Z_FINISH) != Z_OK)
965
- return destroy((gz_stream*)file);
966
-
967
- putLong (s->file, s->crc);
968
- putLong (s->file, (uLong)(s->in & 0xffffffff));
969
- #endif
970
- }
971
- return destroy((gz_stream*)file);
972
- }
973
-
974
- #ifdef STDC
975
- # define zstrerror(errnum) strerror(errnum)
976
- #else
977
- # define zstrerror(errnum) ""
978
- #endif
979
-
980
- /* ===========================================================================
981
- Returns the error message for the last error which occurred on the
982
- given compressed file. errnum is set to zlib error number. If an
983
- error occurred in the file system and not in the compression library,
984
- errnum is set to Z_ERRNO and the application may consult errno
985
- to get the exact error code.
986
- */
987
- const char * ZEXPORT gzerror (file, errnum)
988
- gzFile file;
989
- int *errnum;
990
- {
991
- char *m;
992
- gz_stream *s = (gz_stream*)file;
993
-
994
- if (s == NULL) {
995
- *errnum = Z_STREAM_ERROR;
996
- return (const char*)ERR_MSG(Z_STREAM_ERROR);
997
- }
998
- *errnum = s->z_err;
999
- if (*errnum == Z_OK) return (const char*)"";
1000
-
1001
- m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
1002
-
1003
- if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);
1004
-
1005
- TRYFREE(s->msg);
1006
- s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
1007
- if (s->msg == Z_NULL) return (const char*)ERR_MSG(Z_MEM_ERROR);
1008
- strcpy(s->msg, s->path);
1009
- strcat(s->msg, ": ");
1010
- strcat(s->msg, m);
1011
- return (const char*)s->msg;
1012
- }
1013
-
1014
- /* ===========================================================================
1015
- Clear the error and end-of-file flags, and do the same for the real file.
1016
- */
1017
- void ZEXPORT gzclearerr (file)
1018
- gzFile file;
1019
- {
1020
- gz_stream *s = (gz_stream*)file;
1021
-
1022
- if (s == NULL) return;
1023
- if (s->z_err != Z_STREAM_END) s->z_err = Z_OK;
1024
- s->z_eof = 0;
1025
- clearerr(s->file);
1026
- }