rhodes 3.3.5 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1678) hide show
  1. data/CHANGELOG +3 -1
  2. data/CREDITS +5 -0
  3. data/Rakefile +173 -17
  4. data/doc/build.txt +71 -27
  5. data/doc/configuration.txt +2 -0
  6. data/doc/device-caps.txt +103 -27
  7. data/doc/extensions.txt +49 -33
  8. data/doc/install.txt +15 -12
  9. data/doc/introduction.txt +1 -1
  10. data/doc/nfc.txt +3 -2
  11. data/doc/rhom.txt +22 -1
  12. data/doc/{rhostudio-eclipse.txt → rhostudio-eclipse_outdated.txt} +0 -0
  13. data/doc/rhostudio-test-plan.txt +79 -22
  14. data/doc/simulator.txt +19 -52
  15. data/doc/standard-css.txt +1 -1
  16. data/doc/synchronization.txt +2 -0
  17. data/doc/test-log-debug.txt +149 -1
  18. data/doc/ui.txt +57 -0
  19. data/lib/build/jake.rb +33 -22
  20. data/lib/extensions/barcode/ext/barcode/platform/iphone/Barcode.xcodeproj/project.pbxproj +4 -10
  21. data/lib/extensions/debugger/debugger.rb +18 -5
  22. data/lib/extensions/digest-md5/digest/md5.rb +0 -0
  23. data/lib/extensions/digest-md5/ext/iphone/Dmd5.xcodeproj/project.pbxproj +4 -10
  24. data/lib/extensions/digest-sha1/digest/sha1.rb +0 -0
  25. data/lib/extensions/digest-sha1/ext/iphone/Dsha1.xcodeproj/project.pbxproj +4 -10
  26. data/lib/extensions/digest-sha2/digest/sha2.rb +0 -0
  27. data/lib/extensions/digest-sha2/ext.yml +2 -0
  28. data/lib/extensions/digest-sha2/ext/Rakefile +128 -0
  29. data/lib/extensions/digest-sha2/ext/build +12 -0
  30. data/lib/extensions/digest-sha2/ext/build.bat +1 -0
  31. data/lib/extensions/digest-sha2/ext/depend +6 -0
  32. data/lib/extensions/digest-sha2/ext/digest-sha2.sln +44 -0
  33. data/lib/extensions/digest-sha2/ext/digest-sha2.vcproj +666 -0
  34. data/lib/extensions/digest-sha2/ext/extconf.rb +27 -0
  35. data/lib/extensions/digest-sha2/ext/iphone/Dsha2.xcodeproj/project.pbxproj +272 -0
  36. data/lib/extensions/digest-sha2/ext/iphone/Dsha2_Prefix.pch +7 -0
  37. data/lib/extensions/digest-sha2/ext/iphone/Rakefile +79 -0
  38. data/lib/extensions/digest-sha2/ext/sha2.c +1070 -0
  39. data/lib/extensions/digest-sha2/ext/sha2.h +225 -0
  40. data/lib/extensions/digest-sha2/ext/sha2.rb +1 -0
  41. data/lib/extensions/digest-sha2/ext/sha2init.c +56 -0
  42. data/lib/extensions/digest-sha2/ext/sha2ossl.c +11 -0
  43. data/lib/extensions/digest-sha2/ext/sha2ossl.h +17 -0
  44. data/lib/extensions/digest-sha2/sha2/sha2.rb +74 -0
  45. data/lib/extensions/digest/digest.so.rb +0 -0
  46. data/lib/extensions/digest/ext/iphone/Digest.xcodeproj/project.pbxproj +4 -10
  47. data/lib/extensions/esri/ext/esri/platform/iphone/ESRI.xcodeproj/project.pbxproj +4 -10
  48. data/lib/extensions/ezcrypto/ext/CHANGELOG +85 -0
  49. data/lib/extensions/ezcrypto/ext/MIT-LICENSE +21 -0
  50. data/lib/extensions/ezcrypto/ext/README.rdoc +152 -0
  51. data/lib/extensions/ezcrypto/ext/README_ACTIVE_CRYPTO +122 -0
  52. data/lib/extensions/ezcrypto/ext/README_DIGITAL_SIGNATURES +55 -0
  53. data/lib/extensions/ezcrypto/ext/rakefile +200 -0
  54. data/lib/extensions/ezcrypto/ext/test/active_crypto_test.rb +211 -0
  55. data/lib/extensions/ezcrypto/ext/test/agree2.com.cert +31 -0
  56. data/lib/extensions/ezcrypto/ext/test/association_key_holder_test.rb +38 -0
  57. data/lib/extensions/ezcrypto/ext/test/database.yml +18 -0
  58. data/lib/extensions/ezcrypto/ext/test/digest_test.rb +51 -0
  59. data/lib/extensions/ezcrypto/ext/test/dsakey.pem +12 -0
  60. data/lib/extensions/ezcrypto/ext/test/dsapubkey.pem +12 -0
  61. data/lib/extensions/ezcrypto/ext/test/dsig_test.rb +288 -0
  62. data/lib/extensions/ezcrypto/ext/test/encrypt_test.rb +41 -0
  63. data/lib/extensions/ezcrypto/ext/test/ezcrypto_test.rb +212 -0
  64. data/lib/extensions/ezcrypto/ext/test/key_holder_test.rb +44 -0
  65. data/lib/extensions/ezcrypto/ext/test/protectedsigner.pem +12 -0
  66. data/lib/extensions/ezcrypto/ext/test/sf-class2-root.crt +24 -0
  67. data/lib/extensions/ezcrypto/ext/test/sf_intermediate.crt +29 -0
  68. data/lib/extensions/ezcrypto/ext/test/test_helper.rb +35 -0
  69. data/lib/extensions/ezcrypto/ext/test/testchild.pem +15 -0
  70. data/lib/extensions/ezcrypto/ext/test/testchild.req +12 -0
  71. data/lib/extensions/ezcrypto/ext/test/testpub.pem +4 -0
  72. data/lib/extensions/ezcrypto/ext/test/testsigner.cert +20 -0
  73. data/lib/extensions/ezcrypto/ext/test/testsigner.pem +9 -0
  74. data/lib/extensions/ezcrypto/ext/test/valicert_class2_root.crt +18 -0
  75. data/lib/extensions/ezcrypto/ezcrypto.rb +1 -0
  76. data/lib/extensions/ezcrypto/ezcrypto/ezcrypto.rb +612 -0
  77. data/lib/extensions/ezcrypto/ezcrypto/ezsig.rb +535 -0
  78. data/lib/extensions/ezcrypto/ezcrypto/trusted.pem +2363 -0
  79. data/lib/extensions/fcntl/ext/iphone/Fcntl.xcodeproj/project.pbxproj +4 -10
  80. data/lib/extensions/fcntl/fcntl.rb +0 -0
  81. data/lib/extensions/nfc/ext/nfc/platform/android/src/com/rhomobile/nfc/Nfc.java +9 -22
  82. data/lib/extensions/openssl.so.src/ext.yml +2 -0
  83. data/lib/extensions/openssl.so.src/ext/Rakefile +107 -0
  84. data/lib/extensions/openssl.so.src/ext/build +12 -0
  85. data/lib/extensions/openssl.so.src/ext/build.bat +1 -0
  86. data/lib/extensions/openssl.so/ext.yml +9 -0
  87. data/lib/extensions/openssl.so/ext/Rakefile +139 -0
  88. data/lib/extensions/openssl.so/ext/android/libopenssl.so.a +0 -0
  89. data/lib/extensions/openssl.so/ext/build +12 -0
  90. data/lib/extensions/openssl.so/ext/build.bat +1 -0
  91. data/lib/extensions/openssl.so/ext/iphone/Rakefile +79 -0
  92. data/lib/extensions/openssl.so/ext/iphone/Release-iphoneos/libopenssl.so.a +0 -0
  93. data/lib/extensions/openssl.so/ext/iphone/Release-iphonesimulator/libopenssl.so.a +0 -0
  94. data/lib/extensions/openssl.so/ext/iphone/openssl/openssl.xcodeproj/project.pbxproj +4300 -0
  95. data/lib/extensions/openssl.so/ext/iphone/openssl/openssl/openssl-Prefix.pch +7 -0
  96. data/lib/extensions/openssl.so/ext/sources/apps/apps.h +373 -0
  97. data/lib/extensions/openssl.so/ext/sources/apps/progs.h +366 -0
  98. data/lib/extensions/openssl.so/ext/sources/apps/s_apps.h +176 -0
  99. data/lib/extensions/openssl.so/ext/sources/apps/testdsa.h +217 -0
  100. data/lib/extensions/openssl.so/ext/sources/apps/testrsa.h +518 -0
  101. data/lib/extensions/openssl.so/ext/sources/crypto/LPdir_unix.c +127 -0
  102. data/lib/extensions/openssl.so/ext/sources/crypto/LPdir_win.c +153 -0
  103. data/lib/extensions/openssl.so/ext/sources/crypto/LPdir_win32.c +30 -0
  104. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes.h +147 -0
  105. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_cbc.c +63 -0
  106. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_cfb.c +81 -0
  107. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_core.c +1358 -0
  108. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ctr.c +61 -0
  109. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ecb.c +73 -0
  110. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ige.c +323 -0
  111. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_locl.h +89 -0
  112. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_misc.c +85 -0
  113. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ofb.c +60 -0
  114. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_wrap.c +259 -0
  115. data/lib/extensions/openssl.so/ext/sources/crypto/arm_arch.h +51 -0
  116. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_bitstr.c +248 -0
  117. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_bool.c +114 -0
  118. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_bytes.c +314 -0
  119. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_d2i_fp.c +286 -0
  120. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_digest.c +113 -0
  121. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_dup.c +109 -0
  122. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_enum.c +182 -0
  123. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_gentm.c +263 -0
  124. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_i2d_fp.c +163 -0
  125. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_int.c +458 -0
  126. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_mbstr.c +400 -0
  127. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_object.c +403 -0
  128. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_octet.c +71 -0
  129. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_print.c +127 -0
  130. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_set.c +241 -0
  131. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_sign.c +333 -0
  132. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_strex.c +574 -0
  133. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_strnid.c +290 -0
  134. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_time.c +198 -0
  135. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_type.c +159 -0
  136. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_utctm.c +318 -0
  137. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_utf8.c +211 -0
  138. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_verify.c +228 -0
  139. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/ameth_lib.c +460 -0
  140. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1.h +1404 -0
  141. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_err.c +332 -0
  142. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_gen.c +854 -0
  143. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_lib.c +482 -0
  144. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_locl.h +145 -0
  145. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_mac.h +578 -0
  146. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_par.c +437 -0
  147. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1t.h +960 -0
  148. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn_mime.c +951 -0
  149. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn_moid.c +160 -0
  150. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn_pack.c +191 -0
  151. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/bio_asn1.c +495 -0
  152. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/bio_ndef.c +243 -0
  153. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/charmap.h +15 -0
  154. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/d2i_pr.c +170 -0
  155. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/d2i_pu.c +139 -0
  156. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/evp_asn1.c +189 -0
  157. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/f_enum.c +207 -0
  158. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/f_int.c +219 -0
  159. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/f_string.c +212 -0
  160. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/i2d_pr.c +80 -0
  161. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/i2d_pu.c +95 -0
  162. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/n_pkey.c +357 -0
  163. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/nsseq.c +83 -0
  164. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/p5_pbe.c +148 -0
  165. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/p5_pbev2.c +280 -0
  166. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/p8_pkey.c +155 -0
  167. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_bitst.c +102 -0
  168. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_crl.c +132 -0
  169. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_pkey.c +114 -0
  170. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_req.c +266 -0
  171. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_spki.c +107 -0
  172. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_x509.c +528 -0
  173. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_x509a.c +110 -0
  174. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_dec.c +1347 -0
  175. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_enc.c +691 -0
  176. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_fre.c +266 -0
  177. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_new.c +396 -0
  178. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_prn.c +627 -0
  179. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_typ.c +148 -0
  180. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_utl.c +279 -0
  181. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_algor.c +144 -0
  182. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_attrib.c +118 -0
  183. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_bignum.c +139 -0
  184. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_crl.c +527 -0
  185. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_exten.c +76 -0
  186. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_info.c +114 -0
  187. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_long.c +179 -0
  188. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_name.c +519 -0
  189. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_nx509.c +72 -0
  190. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_pkey.c +151 -0
  191. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_pubkey.c +382 -0
  192. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_req.c +113 -0
  193. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_sig.c +69 -0
  194. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_spki.c +81 -0
  195. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_val.c +69 -0
  196. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_x509.c +194 -0
  197. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_x509a.c +180 -0
  198. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_cfb64.c +121 -0
  199. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_ecb.c +96 -0
  200. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_enc.c +306 -0
  201. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_locl.h +219 -0
  202. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_ofb64.c +110 -0
  203. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_pi.h +325 -0
  204. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_skey.c +124 -0
  205. data/lib/extensions/openssl.so/ext/sources/crypto/bf/blowfish.h +129 -0
  206. data/lib/extensions/openssl.so/ext/sources/crypto/bio/b_dump.c +187 -0
  207. data/lib/extensions/openssl.so/ext/sources/crypto/bio/b_print.c +842 -0
  208. data/lib/extensions/openssl.so/ext/sources/crypto/bio/b_sock.c +975 -0
  209. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bf_buff.c +512 -0
  210. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bf_nbio.c +253 -0
  211. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bf_null.c +183 -0
  212. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio.h +847 -0
  213. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_cb.c +143 -0
  214. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_err.c +155 -0
  215. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_lcl.h +36 -0
  216. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_lib.c +602 -0
  217. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_acpt.c +478 -0
  218. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_bio.c +924 -0
  219. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_conn.c +652 -0
  220. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_dgram.c +1832 -0
  221. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_fd.c +319 -0
  222. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_file.c +477 -0
  223. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_log.c +399 -0
  224. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_mem.c +319 -0
  225. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_null.c +150 -0
  226. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_sock.c +294 -0
  227. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn.h +891 -0
  228. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_add.c +313 -0
  229. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_asm.c +1030 -0
  230. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_blind.c +385 -0
  231. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_const.c +402 -0
  232. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_ctx.c +454 -0
  233. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_depr.c +112 -0
  234. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_div.c +446 -0
  235. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_err.c +150 -0
  236. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_exp.c +1097 -0
  237. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_exp2.c +312 -0
  238. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_gcd.c +654 -0
  239. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_gf2m.c +1113 -0
  240. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_kron.c +184 -0
  241. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_lcl.h +508 -0
  242. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_lib.c +826 -0
  243. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mod.c +301 -0
  244. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mont.c +509 -0
  245. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mpi.c +130 -0
  246. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mul.c +1166 -0
  247. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_nist.c +1102 -0
  248. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_prime.c +494 -0
  249. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_prime.h +327 -0
  250. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_print.c +378 -0
  251. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_rand.c +305 -0
  252. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_recp.c +234 -0
  253. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_shift.c +223 -0
  254. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_sqr.c +294 -0
  255. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_sqrt.c +393 -0
  256. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_word.c +247 -0
  257. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_x931p.c +272 -0
  258. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buf_err.c +99 -0
  259. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buf_str.c +119 -0
  260. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buffer.c +203 -0
  261. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buffer.h +119 -0
  262. data/lib/extensions/openssl.so/ext/sources/crypto/buildinf.h +12 -0
  263. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/camellia.c +582 -0
  264. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/camellia.h +130 -0
  265. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_cbc.c +64 -0
  266. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_cfb.c +139 -0
  267. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_ctr.c +64 -0
  268. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_ecb.c +74 -0
  269. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_locl.h +86 -0
  270. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_misc.c +80 -0
  271. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_ofb.c +119 -0
  272. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_utl.c +64 -0
  273. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_cfb64.c +121 -0
  274. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_ecb.c +79 -0
  275. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_enc.c +208 -0
  276. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_ofb64.c +110 -0
  277. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_skey.c +173 -0
  278. data/lib/extensions/openssl.so/ext/sources/crypto/cast/cast.h +107 -0
  279. data/lib/extensions/openssl.so/ext/sources/crypto/cast/cast_lcl.h +227 -0
  280. data/lib/extensions/openssl.so/ext/sources/crypto/cast/cast_s.h +585 -0
  281. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cm_ameth.c +97 -0
  282. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cm_pmeth.c +224 -0
  283. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cmac.c +308 -0
  284. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cmac.h +82 -0
  285. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms.h +501 -0
  286. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_asn1.c +389 -0
  287. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_att.c +195 -0
  288. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_cd.c +134 -0
  289. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_dd.c +148 -0
  290. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_enc.c +294 -0
  291. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_env.c +876 -0
  292. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_err.c +245 -0
  293. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_ess.c +420 -0
  294. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_io.c +133 -0
  295. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_lcl.h +473 -0
  296. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_lib.c +626 -0
  297. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_pwri.c +454 -0
  298. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_sd.c +985 -0
  299. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_smime.c +850 -0
  300. data/lib/extensions/openssl.so/ext/sources/crypto/comp/c_rle.c +61 -0
  301. data/lib/extensions/openssl.so/ext/sources/crypto/comp/c_zlib.c +799 -0
  302. data/lib/extensions/openssl.so/ext/sources/crypto/comp/comp.h +80 -0
  303. data/lib/extensions/openssl.so/ext/sources/crypto/comp/comp_err.c +100 -0
  304. data/lib/extensions/openssl.so/ext/sources/crypto/comp/comp_lib.c +72 -0
  305. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf.h +263 -0
  306. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_api.c +301 -0
  307. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_api.h +89 -0
  308. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_def.c +740 -0
  309. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_def.h +180 -0
  310. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_err.c +131 -0
  311. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_lib.c +407 -0
  312. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_mall.c +80 -0
  313. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_mod.c +623 -0
  314. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_sap.c +111 -0
  315. data/lib/extensions/openssl.so/ext/sources/crypto/cpt_err.c +105 -0
  316. data/lib/extensions/openssl.so/ext/sources/crypto/cryptlib.c +926 -0
  317. data/lib/extensions/openssl.so/ext/sources/crypto/cryptlib.h +111 -0
  318. data/lib/extensions/openssl.so/ext/sources/crypto/crypto.h +604 -0
  319. data/lib/extensions/openssl.so/ext/sources/crypto/cversion.c +117 -0
  320. data/lib/extensions/openssl.so/ext/sources/crypto/des/cbc_cksm.c +106 -0
  321. data/lib/extensions/openssl.so/ext/sources/crypto/des/cbc_enc.c +61 -0
  322. data/lib/extensions/openssl.so/ext/sources/crypto/des/cfb64ede.c +254 -0
  323. data/lib/extensions/openssl.so/ext/sources/crypto/des/cfb64enc.c +121 -0
  324. data/lib/extensions/openssl.so/ext/sources/crypto/des/cfb_enc.c +195 -0
  325. data/lib/extensions/openssl.so/ext/sources/crypto/des/des.h +248 -0
  326. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_enc.c +400 -0
  327. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_locl.h +432 -0
  328. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_old.c +273 -0
  329. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_old.h +446 -0
  330. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_old2.c +82 -0
  331. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_ver.h +71 -0
  332. data/lib/extensions/openssl.so/ext/sources/crypto/des/ecb3_enc.c +83 -0
  333. data/lib/extensions/openssl.so/ext/sources/crypto/des/ecb_enc.c +122 -0
  334. data/lib/extensions/openssl.so/ext/sources/crypto/des/ede_cbcm_enc.c +199 -0
  335. data/lib/extensions/openssl.so/ext/sources/crypto/des/enc_read.c +240 -0
  336. data/lib/extensions/openssl.so/ext/sources/crypto/des/enc_writ.c +179 -0
  337. data/lib/extensions/openssl.so/ext/sources/crypto/des/fcrypt.c +170 -0
  338. data/lib/extensions/openssl.so/ext/sources/crypto/des/fcrypt_b.c +143 -0
  339. data/lib/extensions/openssl.so/ext/sources/crypto/des/ncbc_enc.c +148 -0
  340. data/lib/extensions/openssl.so/ext/sources/crypto/des/ofb64ede.c +125 -0
  341. data/lib/extensions/openssl.so/ext/sources/crypto/des/ofb64enc.c +110 -0
  342. data/lib/extensions/openssl.so/ext/sources/crypto/des/ofb_enc.c +135 -0
  343. data/lib/extensions/openssl.so/ext/sources/crypto/des/pcbc_enc.c +123 -0
  344. data/lib/extensions/openssl.so/ext/sources/crypto/des/qud_cksm.c +139 -0
  345. data/lib/extensions/openssl.so/ext/sources/crypto/des/rand_key.c +68 -0
  346. data/lib/extensions/openssl.so/ext/sources/crypto/des/read2pwd.c +140 -0
  347. data/lib/extensions/openssl.so/ext/sources/crypto/des/rpc_des.h +131 -0
  348. data/lib/extensions/openssl.so/ext/sources/crypto/des/rpc_enc.c +98 -0
  349. data/lib/extensions/openssl.so/ext/sources/crypto/des/set_key.c +416 -0
  350. data/lib/extensions/openssl.so/ext/sources/crypto/des/spr.h +204 -0
  351. data/lib/extensions/openssl.so/ext/sources/crypto/des/str2key.c +174 -0
  352. data/lib/extensions/openssl.so/ext/sources/crypto/des/xcbc_enc.c +197 -0
  353. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh.h +280 -0
  354. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_ameth.c +501 -0
  355. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_asn1.c +93 -0
  356. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_check.c +142 -0
  357. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_depr.c +83 -0
  358. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_err.c +122 -0
  359. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_gen.c +192 -0
  360. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_key.c +292 -0
  361. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_lib.c +260 -0
  362. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_pmeth.c +254 -0
  363. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_prn.c +80 -0
  364. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa.h +327 -0
  365. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_ameth.c +704 -0
  366. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_asn1.c +188 -0
  367. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_depr.c +106 -0
  368. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_err.c +130 -0
  369. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_gen.c +371 -0
  370. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_key.c +144 -0
  371. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_lib.c +329 -0
  372. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_locl.h +60 -0
  373. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_ossl.c +412 -0
  374. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_pmeth.c +318 -0
  375. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_prn.c +121 -0
  376. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_sign.c +114 -0
  377. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_vrf.c +76 -0
  378. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso.h +409 -0
  379. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_beos.c +270 -0
  380. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_dl.c +393 -0
  381. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_dlfcn.c +484 -0
  382. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_err.c +159 -0
  383. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_lib.c +483 -0
  384. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_null.c +90 -0
  385. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_openssl.c +83 -0
  386. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_vms.c +525 -0
  387. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_win32.c +844 -0
  388. data/lib/extensions/openssl.so/ext/sources/crypto/ebcdic.c +221 -0
  389. data/lib/extensions/openssl.so/ext/sources/crypto/ebcdic.h +19 -0
  390. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec.h +1159 -0
  391. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec2_mult.c +390 -0
  392. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec2_oct.c +407 -0
  393. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec2_smpl.c +719 -0
  394. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_ameth.c +660 -0
  395. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_asn1.c +1447 -0
  396. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_check.c +123 -0
  397. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_curve.c +2100 -0
  398. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_cvt.c +170 -0
  399. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_err.c +276 -0
  400. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_key.c +563 -0
  401. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_lcl.h +446 -0
  402. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_lib.c +1096 -0
  403. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_mult.c +940 -0
  404. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_oct.c +199 -0
  405. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_pmeth.c +341 -0
  406. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_print.c +195 -0
  407. data/lib/extensions/openssl.so/ext/sources/crypto/ec/eck_prn.c +392 -0
  408. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_mont.c +323 -0
  409. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nist.c +217 -0
  410. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistp224.c +1658 -0
  411. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistp256.c +2171 -0
  412. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistp521.c +2025 -0
  413. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistputil.c +197 -0
  414. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_oct.c +433 -0
  415. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_smpl.c +1360 -0
  416. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ecdh.h +125 -0
  417. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_err.c +100 -0
  418. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_key.c +83 -0
  419. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_lib.c +266 -0
  420. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_locl.h +102 -0
  421. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_ossl.c +215 -0
  422. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecdsa.h +260 -0
  423. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_asn1.c +69 -0
  424. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_err.c +106 -0
  425. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_lib.c +278 -0
  426. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_locl.h +115 -0
  427. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_ossl.c +483 -0
  428. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_sign.c +106 -0
  429. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_vrf.c +96 -0
  430. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_all.c +135 -0
  431. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_cnf.c +259 -0
  432. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_cryptodev.c +1450 -0
  433. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_ctrl.c +389 -0
  434. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_dyn.c +548 -0
  435. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_err.c +173 -0
  436. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_fat.c +182 -0
  437. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_init.c +154 -0
  438. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_int.h +206 -0
  439. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_lib.c +332 -0
  440. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_list.c +433 -0
  441. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_openssl.c +384 -0
  442. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_pkey.c +196 -0
  443. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_rdrand.c +142 -0
  444. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_rsax.c +668 -0
  445. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_table.c +351 -0
  446. data/lib/extensions/openssl.so/ext/sources/crypto/engine/engine.h +842 -0
  447. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_asnmth.c +246 -0
  448. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_cipher.c +143 -0
  449. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_dh.c +118 -0
  450. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_digest.c +143 -0
  451. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_dsa.c +118 -0
  452. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_ecdh.c +133 -0
  453. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_ecdsa.c +118 -0
  454. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_pkmeth.c +167 -0
  455. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_rand.c +118 -0
  456. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_rsa.c +118 -0
  457. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_store.c +123 -0
  458. data/lib/extensions/openssl.so/ext/sources/crypto/err/err.c +1138 -0
  459. data/lib/extensions/openssl.so/ext/sources/crypto/err/err.h +386 -0
  460. data/lib/extensions/openssl.so/ext/sources/crypto/err/err_all.c +167 -0
  461. data/lib/extensions/openssl.so/ext/sources/crypto/err/err_prn.c +114 -0
  462. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_b64.c +598 -0
  463. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_enc.c +428 -0
  464. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_md.c +275 -0
  465. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_ok.c +624 -0
  466. data/lib/extensions/openssl.so/ext/sources/crypto/evp/c_all.c +90 -0
  467. data/lib/extensions/openssl.so/ext/sources/crypto/evp/c_allc.c +230 -0
  468. data/lib/extensions/openssl.so/ext/sources/crypto/evp/c_alld.c +114 -0
  469. data/lib/extensions/openssl.so/ext/sources/crypto/evp/digest.c +403 -0
  470. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_aes.c +1313 -0
  471. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_aes_cbc_hmac_sha1.c +406 -0
  472. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_bf.c +88 -0
  473. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_camellia.c +131 -0
  474. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_cast.c +90 -0
  475. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_des.c +224 -0
  476. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_des3.c +316 -0
  477. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_idea.c +118 -0
  478. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_null.c +104 -0
  479. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_old.c +125 -0
  480. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc2.c +238 -0
  481. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc4.c +137 -0
  482. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc4_hmac_md5.c +298 -0
  483. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc5.c +126 -0
  484. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_seed.c +83 -0
  485. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_xcbc_d.c +138 -0
  486. data/lib/extensions/openssl.so/ext/sources/crypto/evp/encode.c +445 -0
  487. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp.h +1402 -0
  488. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_acnf.c +73 -0
  489. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_enc.c +681 -0
  490. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_err.c +234 -0
  491. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_fips.c +113 -0
  492. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_key.c +189 -0
  493. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_lib.c +316 -0
  494. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_locl.h +385 -0
  495. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_pbe.c +316 -0
  496. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_pkey.c +242 -0
  497. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_dss.c +101 -0
  498. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_dss1.c +103 -0
  499. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_ecdsa.c +151 -0
  500. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_md4.c +103 -0
  501. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_md5.c +102 -0
  502. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_mdc2.c +103 -0
  503. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_null.c +95 -0
  504. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_ripemd.c +102 -0
  505. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_sha.c +101 -0
  506. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_sha1.c +209 -0
  507. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_sigver.c +200 -0
  508. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_wp.c +43 -0
  509. data/lib/extensions/openssl.so/ext/sources/crypto/evp/names.c +206 -0
  510. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p5_crpt.c +143 -0
  511. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p5_crpt2.c +322 -0
  512. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_dec.c +87 -0
  513. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_enc.c +86 -0
  514. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_lib.c +469 -0
  515. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_open.c +128 -0
  516. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_seal.c +116 -0
  517. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_sign.c +139 -0
  518. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_verify.c +121 -0
  519. data/lib/extensions/openssl.so/ext/sources/crypto/evp/pmeth_fn.c +368 -0
  520. data/lib/extensions/openssl.so/ext/sources/crypto/evp/pmeth_gn.c +221 -0
  521. data/lib/extensions/openssl.so/ext/sources/crypto/evp/pmeth_lib.c +593 -0
  522. data/lib/extensions/openssl.so/ext/sources/crypto/ex_data.c +636 -0
  523. data/lib/extensions/openssl.so/ext/sources/crypto/fips_err.h +209 -0
  524. data/lib/extensions/openssl.so/ext/sources/crypto/fips_ers.c +7 -0
  525. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hm_ameth.c +167 -0
  526. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hm_pmeth.c +271 -0
  527. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hmac.c +251 -0
  528. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hmac.h +110 -0
  529. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_cbc.c +168 -0
  530. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_cfb64.c +122 -0
  531. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_ecb.c +85 -0
  532. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_ofb64.c +111 -0
  533. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_skey.c +164 -0
  534. data/lib/extensions/openssl.so/ext/sources/crypto/idea/idea.h +103 -0
  535. data/lib/extensions/openssl.so/ext/sources/crypto/idea/idea_lcl.h +215 -0
  536. data/lib/extensions/openssl.so/ext/sources/crypto/krb5/krb5_asn.c +167 -0
  537. data/lib/extensions/openssl.so/ext/sources/crypto/krb5/krb5_asn.h +256 -0
  538. data/lib/extensions/openssl.so/ext/sources/crypto/lhash/lh_stats.c +248 -0
  539. data/lib/extensions/openssl.so/ext/sources/crypto/lhash/lhash.c +475 -0
  540. data/lib/extensions/openssl.so/ext/sources/crypto/lhash/lhash.h +241 -0
  541. data/lib/extensions/openssl.so/ext/sources/crypto/md32_common.h +415 -0
  542. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4.h +120 -0
  543. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4_dgst.c +168 -0
  544. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4_locl.h +112 -0
  545. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4_one.c +97 -0
  546. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5.h +120 -0
  547. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5_dgst.c +185 -0
  548. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5_locl.h +130 -0
  549. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5_one.c +97 -0
  550. data/lib/extensions/openssl.so/ext/sources/crypto/mdc2/mdc2.h +98 -0
  551. data/lib/extensions/openssl.so/ext/sources/crypto/mdc2/mdc2_one.c +76 -0
  552. data/lib/extensions/openssl.so/ext/sources/crypto/mdc2/mdc2dgst.c +200 -0
  553. data/lib/extensions/openssl.so/ext/sources/crypto/mem.c +420 -0
  554. data/lib/extensions/openssl.so/ext/sources/crypto/mem_clr.c +77 -0
  555. data/lib/extensions/openssl.so/ext/sources/crypto/mem_dbg.c +874 -0
  556. data/lib/extensions/openssl.so/ext/sources/crypto/modes/cbc128.c +202 -0
  557. data/lib/extensions/openssl.so/ext/sources/crypto/modes/ccm128.c +441 -0
  558. data/lib/extensions/openssl.so/ext/sources/crypto/modes/cfb128.c +242 -0
  559. data/lib/extensions/openssl.so/ext/sources/crypto/modes/ctr128.c +252 -0
  560. data/lib/extensions/openssl.so/ext/sources/crypto/modes/cts128.c +465 -0
  561. data/lib/extensions/openssl.so/ext/sources/crypto/modes/gcm128.c +1757 -0
  562. data/lib/extensions/openssl.so/ext/sources/crypto/modes/modes.h +135 -0
  563. data/lib/extensions/openssl.so/ext/sources/crypto/modes/modes_lcl.h +131 -0
  564. data/lib/extensions/openssl.so/ext/sources/crypto/modes/ofb128.c +121 -0
  565. data/lib/extensions/openssl.so/ext/sources/crypto/modes/xts128.c +187 -0
  566. data/lib/extensions/openssl.so/ext/sources/crypto/o_dir.c +83 -0
  567. data/lib/extensions/openssl.so/ext/sources/crypto/o_dir.h +53 -0
  568. data/lib/extensions/openssl.so/ext/sources/crypto/o_fips.c +96 -0
  569. data/lib/extensions/openssl.so/ext/sources/crypto/o_init.c +82 -0
  570. data/lib/extensions/openssl.so/ext/sources/crypto/o_str.c +111 -0
  571. data/lib/extensions/openssl.so/ext/sources/crypto/o_str.h +68 -0
  572. data/lib/extensions/openssl.so/ext/sources/crypto/o_time.c +372 -0
  573. data/lib/extensions/openssl.so/ext/sources/crypto/o_time.h +67 -0
  574. data/lib/extensions/openssl.so/ext/sources/crypto/objects/o_names.c +372 -0
  575. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_dat.c +810 -0
  576. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_dat.h +5102 -0
  577. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_err.c +102 -0
  578. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_lib.c +129 -0
  579. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_mac.h +4032 -0
  580. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_xref.c +234 -0
  581. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_xref.h +77 -0
  582. data/lib/extensions/openssl.so/ext/sources/crypto/objects/objects.h +1138 -0
  583. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp.h +623 -0
  584. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_asn.c +182 -0
  585. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_cl.c +371 -0
  586. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_err.c +142 -0
  587. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_ext.c +518 -0
  588. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_ht.c +504 -0
  589. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_lib.c +266 -0
  590. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_prn.c +290 -0
  591. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_srv.c +264 -0
  592. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_vfy.c +446 -0
  593. data/lib/extensions/openssl.so/ext/sources/crypto/opensslconf.h +230 -0
  594. data/lib/extensions/openssl.so/ext/sources/crypto/opensslconf.h.in +154 -0
  595. data/lib/extensions/openssl.so/ext/sources/crypto/opensslv.h +89 -0
  596. data/lib/extensions/openssl.so/ext/sources/crypto/ossl_typ.h +202 -0
  597. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem.h +641 -0
  598. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem2.h +70 -0
  599. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_all.c +296 -0
  600. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_err.c +161 -0
  601. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_info.c +405 -0
  602. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_lib.c +852 -0
  603. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_oth.c +86 -0
  604. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_pk8.c +242 -0
  605. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_pkey.c +242 -0
  606. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_seal.c +189 -0
  607. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_sign.c +102 -0
  608. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_x509.c +68 -0
  609. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_xaux.c +68 -0
  610. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pvkfmt.c +950 -0
  611. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_add.c +240 -0
  612. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_asn.c +125 -0
  613. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_attr.c +145 -0
  614. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_crpt.c +112 -0
  615. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_crt.c +359 -0
  616. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_decr.c +184 -0
  617. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_init.c +92 -0
  618. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_key.c +219 -0
  619. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_kiss.c +302 -0
  620. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_mutl.c +190 -0
  621. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_npas.c +225 -0
  622. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_p8d.c +68 -0
  623. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_p8e.c +97 -0
  624. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_utl.c +146 -0
  625. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/pk12err.c +144 -0
  626. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/pkcs12.h +331 -0
  627. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/bio_pk7.c +69 -0
  628. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_asn1.c +247 -0
  629. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_attr.c +165 -0
  630. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_doit.c +1299 -0
  631. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_lib.c +665 -0
  632. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_mime.c +97 -0
  633. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_smime.c +606 -0
  634. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pkcs7.h +499 -0
  635. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pkcs7err.c +187 -0
  636. data/lib/extensions/openssl.so/ext/sources/crypto/pqueue/pqueue.c +252 -0
  637. data/lib/extensions/openssl.so/ext/sources/crypto/pqueue/pqueue.h +94 -0
  638. data/lib/extensions/openssl.so/ext/sources/crypto/rand/md_rand.c +592 -0
  639. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand.h +149 -0
  640. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_egd.c +303 -0
  641. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_err.c +100 -0
  642. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_lcl.h +158 -0
  643. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_lib.c +295 -0
  644. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_nw.c +183 -0
  645. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_os2.c +153 -0
  646. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_unix.c +431 -0
  647. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_win.c +807 -0
  648. data/lib/extensions/openssl.so/ext/sources/crypto/rand/randfile.c +326 -0
  649. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2.h +103 -0
  650. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_cbc.c +226 -0
  651. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_ecb.c +88 -0
  652. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_locl.h +156 -0
  653. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_skey.c +153 -0
  654. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2cfb64.c +122 -0
  655. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2ofb64.c +111 -0
  656. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4.h +90 -0
  657. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_enc.c +315 -0
  658. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_locl.h +5 -0
  659. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_skey.c +116 -0
  660. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_utl.c +62 -0
  661. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/ripemd.h +107 -0
  662. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmd_dgst.c +292 -0
  663. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmd_locl.h +150 -0
  664. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmd_one.c +78 -0
  665. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmdconst.h +399 -0
  666. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa.h +582 -0
  667. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_ameth.c +698 -0
  668. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_asn1.c +121 -0
  669. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_chk.c +184 -0
  670. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_crpt.c +257 -0
  671. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_depr.c +101 -0
  672. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_eay.c +915 -0
  673. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_err.c +209 -0
  674. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_gen.c +234 -0
  675. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_lib.c +333 -0
  676. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_locl.h +4 -0
  677. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_none.c +98 -0
  678. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_null.c +151 -0
  679. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_oaep.c +235 -0
  680. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_pk1.c +224 -0
  681. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_pmeth.c +723 -0
  682. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_prn.c +93 -0
  683. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_pss.c +300 -0
  684. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_saos.c +150 -0
  685. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_sign.c +318 -0
  686. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_ssl.c +154 -0
  687. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_x931.c +177 -0
  688. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed.c +336 -0
  689. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed.h +139 -0
  690. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_cbc.c +63 -0
  691. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_cfb.c +116 -0
  692. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_ecb.c +60 -0
  693. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_locl.h +116 -0
  694. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_ofb.c +116 -0
  695. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha.h +214 -0
  696. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha1_one.c +78 -0
  697. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha1dgst.c +75 -0
  698. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha256.c +282 -0
  699. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha512.c +597 -0
  700. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha_dgst.c +75 -0
  701. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha_locl.h +441 -0
  702. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha_one.c +78 -0
  703. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp.h +172 -0
  704. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_grps.h +517 -0
  705. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_lcl.h +83 -0
  706. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_lib.c +357 -0
  707. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_vfy.c +657 -0
  708. data/lib/extensions/openssl.so/ext/sources/crypto/stack/safestack.h +2663 -0
  709. data/lib/extensions/openssl.so/ext/sources/crypto/stack/stack.c +334 -0
  710. data/lib/extensions/openssl.so/ext/sources/crypto/stack/stack.h +108 -0
  711. data/lib/extensions/openssl.so/ext/sources/crypto/symhacks.h +477 -0
  712. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts.h +858 -0
  713. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_asn1.c +322 -0
  714. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_conf.c +507 -0
  715. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_err.c +179 -0
  716. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_lib.c +145 -0
  717. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_req_print.c +102 -0
  718. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_req_utils.c +234 -0
  719. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_print.c +287 -0
  720. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_sign.c +1020 -0
  721. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_utils.c +409 -0
  722. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_verify.c +728 -0
  723. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_verify_ctx.c +159 -0
  724. data/lib/extensions/openssl.so/ext/sources/crypto/txt_db/txt_db.c +388 -0
  725. data/lib/extensions/openssl.so/ext/sources/crypto/txt_db/txt_db.h +112 -0
  726. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui.h +383 -0
  727. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_compat.c +67 -0
  728. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_compat.h +83 -0
  729. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_err.c +112 -0
  730. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_lib.c +924 -0
  731. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_locl.h +153 -0
  732. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_openssl.c +712 -0
  733. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_util.c +91 -0
  734. data/lib/extensions/openssl.so/ext/sources/crypto/uid.c +89 -0
  735. data/lib/extensions/openssl.so/ext/sources/crypto/vms_rms.h +51 -0
  736. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/whrlpool.h +41 -0
  737. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/wp_block.c +655 -0
  738. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/wp_dgst.c +265 -0
  739. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/wp_locl.h +3 -0
  740. data/lib/extensions/openssl.so/ext/sources/crypto/x509/by_dir.c +482 -0
  741. data/lib/extensions/openssl.so/ext/sources/crypto/x509/by_file.c +300 -0
  742. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509.h +1297 -0
  743. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_att.c +359 -0
  744. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_cmp.c +344 -0
  745. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_d2.c +107 -0
  746. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_def.c +81 -0
  747. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_err.c +164 -0
  748. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_ext.c +210 -0
  749. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_lu.c +716 -0
  750. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_obj.c +226 -0
  751. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_r2x.c +114 -0
  752. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_req.c +316 -0
  753. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_set.c +150 -0
  754. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_trs.c +288 -0
  755. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_txt.c +193 -0
  756. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_v3.c +274 -0
  757. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_vfy.c +2214 -0
  758. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_vfy.h +567 -0
  759. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_vpm.c +438 -0
  760. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509cset.c +170 -0
  761. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509name.c +383 -0
  762. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509rset.c +83 -0
  763. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509spki.c +121 -0
  764. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509type.c +131 -0
  765. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x_all.c +535 -0
  766. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/ext_dat.h +132 -0
  767. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_cache.c +286 -0
  768. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_data.c +135 -0
  769. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_int.h +212 -0
  770. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_lib.c +167 -0
  771. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_map.c +132 -0
  772. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_node.c +197 -0
  773. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_tree.c +872 -0
  774. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_addr.c +1338 -0
  775. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_akey.c +208 -0
  776. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_akeya.c +72 -0
  777. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_alt.c +614 -0
  778. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_asid.c +890 -0
  779. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_bcons.c +124 -0
  780. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_bitst.c +141 -0
  781. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_conf.c +525 -0
  782. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_cpols.c +457 -0
  783. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_crld.c +616 -0
  784. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_enum.c +97 -0
  785. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_extku.c +144 -0
  786. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_genn.c +252 -0
  787. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_ia5.c +116 -0
  788. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_info.c +193 -0
  789. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_int.c +89 -0
  790. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_lib.c +309 -0
  791. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_ncons.c +505 -0
  792. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_ocsp.c +289 -0
  793. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pci.c +328 -0
  794. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pcia.c +55 -0
  795. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pcons.c +140 -0
  796. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pku.c +108 -0
  797. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pmaps.c +155 -0
  798. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_prn.c +234 -0
  799. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_purp.c +767 -0
  800. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_skey.c +145 -0
  801. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_sxnet.c +262 -0
  802. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_utl.c +874 -0
  803. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3err.c +226 -0
  804. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/x509v3.h +1007 -0
  805. data/lib/extensions/openssl.so/ext/sources/e_os.h +735 -0
  806. data/lib/extensions/openssl.so/ext/sources/e_os2.h +315 -0
  807. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/e_gost_err.c +212 -0
  808. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/e_gost_err.h +156 -0
  809. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost2001.c +343 -0
  810. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost2001_keyx.c +308 -0
  811. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost2001_keyx.h +10 -0
  812. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost89.c +409 -0
  813. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost89.h +96 -0
  814. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost94_keyx.c +291 -0
  815. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_ameth.c +945 -0
  816. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_asn1.c +55 -0
  817. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_crypt.c +617 -0
  818. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_ctl.c +89 -0
  819. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_eng.c +273 -0
  820. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_keywrap.c +109 -0
  821. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_keywrap.h +56 -0
  822. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_lcl.h +221 -0
  823. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_md.c +75 -0
  824. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_params.c +198 -0
  825. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_params.h +34 -0
  826. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_pmeth.c +628 -0
  827. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_sign.c +321 -0
  828. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gosthash.c +255 -0
  829. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gosthash.h +48 -0
  830. data/lib/extensions/openssl.so/ext/sources/engines/e_4758cca.c +987 -0
  831. data/lib/extensions/openssl.so/ext/sources/engines/e_4758cca_err.c +153 -0
  832. data/lib/extensions/openssl.so/ext/sources/engines/e_4758cca_err.h +97 -0
  833. data/lib/extensions/openssl.so/ext/sources/engines/e_aep.c +1139 -0
  834. data/lib/extensions/openssl.so/ext/sources/engines/e_aep_err.c +161 -0
  835. data/lib/extensions/openssl.so/ext/sources/engines/e_aep_err.h +105 -0
  836. data/lib/extensions/openssl.so/ext/sources/engines/e_atalla.c +607 -0
  837. data/lib/extensions/openssl.so/ext/sources/engines/e_atalla_err.c +149 -0
  838. data/lib/extensions/openssl.so/ext/sources/engines/e_atalla_err.h +93 -0
  839. data/lib/extensions/openssl.so/ext/sources/engines/e_capi.c +1913 -0
  840. data/lib/extensions/openssl.so/ext/sources/engines/e_capi_err.c +184 -0
  841. data/lib/extensions/openssl.so/ext/sources/engines/e_capi_err.h +128 -0
  842. data/lib/extensions/openssl.so/ext/sources/engines/e_chil.c +1356 -0
  843. data/lib/extensions/openssl.so/ext/sources/engines/e_chil_err.c +160 -0
  844. data/lib/extensions/openssl.so/ext/sources/engines/e_chil_err.h +104 -0
  845. data/lib/extensions/openssl.so/ext/sources/engines/e_cswift.c +1129 -0
  846. data/lib/extensions/openssl.so/ext/sources/engines/e_cswift_err.c +154 -0
  847. data/lib/extensions/openssl.so/ext/sources/engines/e_cswift_err.h +98 -0
  848. data/lib/extensions/openssl.so/ext/sources/engines/e_gmp.c +480 -0
  849. data/lib/extensions/openssl.so/ext/sources/engines/e_gmp_err.c +141 -0
  850. data/lib/extensions/openssl.so/ext/sources/engines/e_gmp_err.h +85 -0
  851. data/lib/extensions/openssl.so/ext/sources/engines/e_nuron.c +434 -0
  852. data/lib/extensions/openssl.so/ext/sources/engines/e_nuron_err.c +146 -0
  853. data/lib/extensions/openssl.so/ext/sources/engines/e_nuron_err.h +90 -0
  854. data/lib/extensions/openssl.so/ext/sources/engines/e_padlock.c +1239 -0
  855. data/lib/extensions/openssl.so/ext/sources/engines/e_sureware.c +1055 -0
  856. data/lib/extensions/openssl.so/ext/sources/engines/e_sureware_err.c +158 -0
  857. data/lib/extensions/openssl.so/ext/sources/engines/e_sureware_err.h +102 -0
  858. data/lib/extensions/openssl.so/ext/sources/engines/e_ubsec.c +1069 -0
  859. data/lib/extensions/openssl.so/ext/sources/engines/e_ubsec_err.c +157 -0
  860. data/lib/extensions/openssl.so/ext/sources/engines/e_ubsec_err.h +101 -0
  861. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/aep.h +178 -0
  862. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/atalla.h +48 -0
  863. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/cswift.h +234 -0
  864. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/hw_4758_cca.h +149 -0
  865. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/hw_ubsec.h +100 -0
  866. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/hwcryptohook.h +486 -0
  867. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/sureware.h +239 -0
  868. data/lib/extensions/openssl.so/ext/sources/include/openssl/aes.h +1 -0
  869. data/lib/extensions/openssl.so/ext/sources/include/openssl/asn1.h +1 -0
  870. data/lib/extensions/openssl.so/ext/sources/include/openssl/asn1_mac.h +1 -0
  871. data/lib/extensions/openssl.so/ext/sources/include/openssl/asn1t.h +1 -0
  872. data/lib/extensions/openssl.so/ext/sources/include/openssl/bio.h +1 -0
  873. data/lib/extensions/openssl.so/ext/sources/include/openssl/blowfish.h +1 -0
  874. data/lib/extensions/openssl.so/ext/sources/include/openssl/bn.h +1 -0
  875. data/lib/extensions/openssl.so/ext/sources/include/openssl/buffer.h +1 -0
  876. data/lib/extensions/openssl.so/ext/sources/include/openssl/camellia.h +1 -0
  877. data/lib/extensions/openssl.so/ext/sources/include/openssl/cast.h +1 -0
  878. data/lib/extensions/openssl.so/ext/sources/include/openssl/cmac.h +1 -0
  879. data/lib/extensions/openssl.so/ext/sources/include/openssl/cms.h +1 -0
  880. data/lib/extensions/openssl.so/ext/sources/include/openssl/comp.h +1 -0
  881. data/lib/extensions/openssl.so/ext/sources/include/openssl/conf.h +1 -0
  882. data/lib/extensions/openssl.so/ext/sources/include/openssl/conf_api.h +1 -0
  883. data/lib/extensions/openssl.so/ext/sources/include/openssl/crypto.h +1 -0
  884. data/lib/extensions/openssl.so/ext/sources/include/openssl/des.h +1 -0
  885. data/lib/extensions/openssl.so/ext/sources/include/openssl/des_old.h +1 -0
  886. data/lib/extensions/openssl.so/ext/sources/include/openssl/dh.h +1 -0
  887. data/lib/extensions/openssl.so/ext/sources/include/openssl/dsa.h +1 -0
  888. data/lib/extensions/openssl.so/ext/sources/include/openssl/dso.h +1 -0
  889. data/lib/extensions/openssl.so/ext/sources/include/openssl/dtls1.h +1 -0
  890. data/lib/extensions/openssl.so/ext/sources/include/openssl/e_os2.h +1 -0
  891. data/lib/extensions/openssl.so/ext/sources/include/openssl/ebcdic.h +1 -0
  892. data/lib/extensions/openssl.so/ext/sources/include/openssl/ec.h +1 -0
  893. data/lib/extensions/openssl.so/ext/sources/include/openssl/ecdh.h +1 -0
  894. data/lib/extensions/openssl.so/ext/sources/include/openssl/ecdsa.h +1 -0
  895. data/lib/extensions/openssl.so/ext/sources/include/openssl/engine.h +1 -0
  896. data/lib/extensions/openssl.so/ext/sources/include/openssl/err.h +1 -0
  897. data/lib/extensions/openssl.so/ext/sources/include/openssl/evp.h +1 -0
  898. data/lib/extensions/openssl.so/ext/sources/include/openssl/hmac.h +1 -0
  899. data/lib/extensions/openssl.so/ext/sources/include/openssl/idea.h +1 -0
  900. data/lib/extensions/openssl.so/ext/sources/include/openssl/krb5_asn.h +1 -0
  901. data/lib/extensions/openssl.so/ext/sources/include/openssl/kssl.h +1 -0
  902. data/lib/extensions/openssl.so/ext/sources/include/openssl/lhash.h +1 -0
  903. data/lib/extensions/openssl.so/ext/sources/include/openssl/md4.h +1 -0
  904. data/lib/extensions/openssl.so/ext/sources/include/openssl/md5.h +1 -0
  905. data/lib/extensions/openssl.so/ext/sources/include/openssl/mdc2.h +1 -0
  906. data/lib/extensions/openssl.so/ext/sources/include/openssl/modes.h +1 -0
  907. data/lib/extensions/openssl.so/ext/sources/include/openssl/obj_mac.h +1 -0
  908. data/lib/extensions/openssl.so/ext/sources/include/openssl/objects.h +1 -0
  909. data/lib/extensions/openssl.so/ext/sources/include/openssl/ocsp.h +1 -0
  910. data/lib/extensions/openssl.so/ext/sources/include/openssl/opensslconf.h +1 -0
  911. data/lib/extensions/openssl.so/ext/sources/include/openssl/opensslv.h +1 -0
  912. data/lib/extensions/openssl.so/ext/sources/include/openssl/ossl_typ.h +1 -0
  913. data/lib/extensions/openssl.so/ext/sources/include/openssl/pem.h +1 -0
  914. data/lib/extensions/openssl.so/ext/sources/include/openssl/pem2.h +1 -0
  915. data/lib/extensions/openssl.so/ext/sources/include/openssl/pkcs12.h +1 -0
  916. data/lib/extensions/openssl.so/ext/sources/include/openssl/pkcs7.h +1 -0
  917. data/lib/extensions/openssl.so/ext/sources/include/openssl/pqueue.h +1 -0
  918. data/lib/extensions/openssl.so/ext/sources/include/openssl/rand.h +1 -0
  919. data/lib/extensions/openssl.so/ext/sources/include/openssl/rc2.h +1 -0
  920. data/lib/extensions/openssl.so/ext/sources/include/openssl/rc4.h +1 -0
  921. data/lib/extensions/openssl.so/ext/sources/include/openssl/ripemd.h +1 -0
  922. data/lib/extensions/openssl.so/ext/sources/include/openssl/rsa.h +1 -0
  923. data/lib/extensions/openssl.so/ext/sources/include/openssl/safestack.h +1 -0
  924. data/lib/extensions/openssl.so/ext/sources/include/openssl/seed.h +1 -0
  925. data/lib/extensions/openssl.so/ext/sources/include/openssl/sha.h +1 -0
  926. data/lib/extensions/openssl.so/ext/sources/include/openssl/srp.h +1 -0
  927. data/lib/extensions/openssl.so/ext/sources/include/openssl/srtp.h +1 -0
  928. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl.h +1 -0
  929. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl2.h +1 -0
  930. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl23.h +1 -0
  931. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl3.h +1 -0
  932. data/lib/extensions/openssl.so/ext/sources/include/openssl/stack.h +1 -0
  933. data/lib/extensions/openssl.so/ext/sources/include/openssl/store.h +1 -0
  934. data/lib/extensions/openssl.so/ext/sources/include/openssl/symhacks.h +1 -0
  935. data/lib/extensions/openssl.so/ext/sources/include/openssl/tls1.h +1 -0
  936. data/lib/extensions/openssl.so/ext/sources/include/openssl/ts.h +1 -0
  937. data/lib/extensions/openssl.so/ext/sources/include/openssl/txt_db.h +1 -0
  938. data/lib/extensions/openssl.so/ext/sources/include/openssl/ui.h +1 -0
  939. data/lib/extensions/openssl.so/ext/sources/include/openssl/ui_compat.h +1 -0
  940. data/lib/extensions/openssl.so/ext/sources/include/openssl/whrlpool.h +1 -0
  941. data/lib/extensions/openssl.so/ext/sources/include/openssl/x509.h +1 -0
  942. data/lib/extensions/openssl.so/ext/sources/include/openssl/x509_vfy.h +1 -0
  943. data/lib/extensions/openssl.so/ext/sources/include/openssl/x509v3.h +1 -0
  944. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/assert.h +50 -0
  945. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/conio.h +40 -0
  946. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/ctype.h +90 -0
  947. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/direct.h +22 -0
  948. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/errno.h +158 -0
  949. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/fcntl.h +56 -0
  950. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/float.h +330 -0
  951. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/io.h +63 -0
  952. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/limits.h +95 -0
  953. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/malloc.h +59 -0
  954. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/math.h +95 -0
  955. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/memory.h +44 -0
  956. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/process.h +59 -0
  957. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/setjmp.h +69 -0
  958. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/signal.h +53 -0
  959. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stdarg.h +78 -0
  960. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stddef.h +88 -0
  961. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stdio.h +182 -0
  962. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stdlib.h +142 -0
  963. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/string.h +109 -0
  964. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/strings.h +3 -0
  965. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/locking.h +31 -0
  966. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/stat.h +92 -0
  967. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/time.h +20 -0
  968. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/timeb.h +58 -0
  969. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/types.h +35 -0
  970. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/utime.h +21 -0
  971. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/time.h +81 -0
  972. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/winsock_extras.h +46 -0
  973. data/lib/extensions/openssl.so/ext/sources/ssl/bio_ssl.c +605 -0
  974. data/lib/extensions/openssl.so/ext/sources/ssl/d1_both.c +1591 -0
  975. data/lib/extensions/openssl.so/ext/sources/ssl/d1_clnt.c +1710 -0
  976. data/lib/extensions/openssl.so/ext/sources/ssl/d1_enc.c +289 -0
  977. data/lib/extensions/openssl.so/ext/sources/ssl/d1_lib.c +482 -0
  978. data/lib/extensions/openssl.so/ext/sources/ssl/d1_meth.c +77 -0
  979. data/lib/extensions/openssl.so/ext/sources/ssl/d1_pkt.c +1876 -0
  980. data/lib/extensions/openssl.so/ext/sources/ssl/d1_srtp.c +493 -0
  981. data/lib/extensions/openssl.so/ext/sources/ssl/d1_srvr.c +1711 -0
  982. data/lib/extensions/openssl.so/ext/sources/ssl/dtls1.h +283 -0
  983. data/lib/extensions/openssl.so/ext/sources/ssl/kssl.c +2221 -0
  984. data/lib/extensions/openssl.so/ext/sources/ssl/kssl.h +183 -0
  985. data/lib/extensions/openssl.so/ext/sources/ssl/kssl_lcl.h +87 -0
  986. data/lib/extensions/openssl.so/ext/sources/ssl/s23_clnt.c +779 -0
  987. data/lib/extensions/openssl.so/ext/sources/ssl/s23_lib.c +187 -0
  988. data/lib/extensions/openssl.so/ext/sources/ssl/s23_meth.c +92 -0
  989. data/lib/extensions/openssl.so/ext/sources/ssl/s23_pkt.c +117 -0
  990. data/lib/extensions/openssl.so/ext/sources/ssl/s23_srvr.c +638 -0
  991. data/lib/extensions/openssl.so/ext/sources/ssl/s2_clnt.c +1125 -0
  992. data/lib/extensions/openssl.so/ext/sources/ssl/s2_enc.c +193 -0
  993. data/lib/extensions/openssl.so/ext/sources/ssl/s2_lib.c +556 -0
  994. data/lib/extensions/openssl.so/ext/sources/ssl/s2_meth.c +84 -0
  995. data/lib/extensions/openssl.so/ext/sources/ssl/s2_pkt.c +744 -0
  996. data/lib/extensions/openssl.so/ext/sources/ssl/s2_srvr.c +1142 -0
  997. data/lib/extensions/openssl.so/ext/sources/ssl/s3_both.c +843 -0
  998. data/lib/extensions/openssl.so/ext/sources/ssl/s3_clnt.c +3371 -0
  999. data/lib/extensions/openssl.so/ext/sources/ssl/s3_enc.c +861 -0
  1000. data/lib/extensions/openssl.so/ext/sources/ssl/s3_lib.c +4282 -0
  1001. data/lib/extensions/openssl.so/ext/sources/ssl/s3_meth.c +77 -0
  1002. data/lib/extensions/openssl.so/ext/sources/ssl/s3_pkt.c +1518 -0
  1003. data/lib/extensions/openssl.so/ext/sources/ssl/s3_srvr.c +3586 -0
  1004. data/lib/extensions/openssl.so/ext/sources/ssl/srtp.h +145 -0
  1005. data/lib/extensions/openssl.so/ext/sources/ssl/ssl.h +2573 -0
  1006. data/lib/extensions/openssl.so/ext/sources/ssl/ssl2.h +272 -0
  1007. data/lib/extensions/openssl.so/ext/sources/ssl/ssl23.h +83 -0
  1008. data/lib/extensions/openssl.so/ext/sources/ssl/ssl3.h +678 -0
  1009. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_algs.c +149 -0
  1010. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_asn1.c +642 -0
  1011. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_cert.c +853 -0
  1012. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_ciph.c +1852 -0
  1013. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_err.c +609 -0
  1014. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_err2.c +70 -0
  1015. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_lib.c +3251 -0
  1016. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_locl.h +1134 -0
  1017. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_rsa.c +779 -0
  1018. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_sess.c +1159 -0
  1019. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_stat.c +567 -0
  1020. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_txt.c +248 -0
  1021. data/lib/extensions/openssl.so/ext/sources/ssl/t1_clnt.c +92 -0
  1022. data/lib/extensions/openssl.so/ext/sources/ssl/t1_enc.c +1256 -0
  1023. data/lib/extensions/openssl.so/ext/sources/ssl/t1_lib.c +2578 -0
  1024. data/lib/extensions/openssl.so/ext/sources/ssl/t1_meth.c +88 -0
  1025. data/lib/extensions/openssl.so/ext/sources/ssl/t1_reneg.c +292 -0
  1026. data/lib/extensions/openssl.so/ext/sources/ssl/t1_srvr.c +93 -0
  1027. data/lib/extensions/openssl.so/ext/sources/ssl/tls1.h +735 -0
  1028. data/lib/extensions/openssl.so/ext/sources/ssl/tls_srp.c +506 -0
  1029. data/lib/extensions/openssl.so/ext/win32/UPDATE +15 -0
  1030. data/lib/extensions/openssl.so/ext/win32/bin/libeay32.dll +0 -0
  1031. data/lib/extensions/openssl.so/ext/win32/bin/ssleay32.dll +0 -0
  1032. data/lib/extensions/openssl.so/ext/win32/include/openssl/aes.h +147 -0
  1033. data/lib/extensions/openssl.so/ext/win32/include/openssl/applink.c +94 -0
  1034. data/lib/extensions/openssl.so/ext/win32/include/openssl/asn1.h +1404 -0
  1035. data/lib/extensions/openssl.so/ext/win32/include/openssl/asn1_mac.h +578 -0
  1036. data/lib/extensions/openssl.so/ext/win32/include/openssl/asn1t.h +960 -0
  1037. data/lib/extensions/openssl.so/ext/win32/include/openssl/bio.h +847 -0
  1038. data/lib/extensions/openssl.so/ext/win32/include/openssl/blowfish.h +129 -0
  1039. data/lib/extensions/openssl.so/ext/win32/include/openssl/bn.h +891 -0
  1040. data/lib/extensions/openssl.so/ext/win32/include/openssl/buffer.h +119 -0
  1041. data/lib/extensions/openssl.so/ext/win32/include/openssl/camellia.h +130 -0
  1042. data/lib/extensions/openssl.so/ext/win32/include/openssl/cast.h +107 -0
  1043. data/lib/extensions/openssl.so/ext/win32/include/openssl/cmac.h +82 -0
  1044. data/lib/extensions/openssl.so/ext/win32/include/openssl/cms.h +501 -0
  1045. data/lib/extensions/openssl.so/ext/win32/include/openssl/comp.h +80 -0
  1046. data/lib/extensions/openssl.so/ext/win32/include/openssl/conf.h +263 -0
  1047. data/lib/extensions/openssl.so/ext/win32/include/openssl/conf_api.h +89 -0
  1048. data/lib/extensions/openssl.so/ext/win32/include/openssl/crypto.h +604 -0
  1049. data/lib/extensions/openssl.so/ext/win32/include/openssl/des.h +248 -0
  1050. data/lib/extensions/openssl.so/ext/win32/include/openssl/des_old.h +446 -0
  1051. data/lib/extensions/openssl.so/ext/win32/include/openssl/dh.h +280 -0
  1052. data/lib/extensions/openssl.so/ext/win32/include/openssl/dsa.h +327 -0
  1053. data/lib/extensions/openssl.so/ext/win32/include/openssl/dso.h +409 -0
  1054. data/lib/extensions/openssl.so/ext/win32/include/openssl/dtls1.h +283 -0
  1055. data/lib/extensions/openssl.so/ext/win32/include/openssl/e_os2.h +315 -0
  1056. data/lib/extensions/openssl.so/ext/win32/include/openssl/ebcdic.h +19 -0
  1057. data/lib/extensions/openssl.so/ext/win32/include/openssl/ec.h +1159 -0
  1058. data/lib/extensions/openssl.so/ext/win32/include/openssl/ecdh.h +125 -0
  1059. data/lib/extensions/openssl.so/ext/win32/include/openssl/ecdsa.h +260 -0
  1060. data/lib/extensions/openssl.so/ext/win32/include/openssl/engine.h +842 -0
  1061. data/lib/extensions/openssl.so/ext/win32/include/openssl/err.h +386 -0
  1062. data/lib/extensions/openssl.so/ext/win32/include/openssl/evp.h +1402 -0
  1063. data/lib/extensions/openssl.so/ext/win32/include/openssl/hmac.h +110 -0
  1064. data/lib/extensions/openssl.so/ext/win32/include/openssl/idea.h +103 -0
  1065. data/lib/extensions/openssl.so/ext/win32/include/openssl/krb5_asn.h +256 -0
  1066. data/lib/extensions/openssl.so/ext/win32/include/openssl/kssl.h +183 -0
  1067. data/lib/extensions/openssl.so/ext/win32/include/openssl/lhash.h +241 -0
  1068. data/lib/extensions/openssl.so/ext/win32/include/openssl/md4.h +120 -0
  1069. data/lib/extensions/openssl.so/ext/win32/include/openssl/md5.h +120 -0
  1070. data/lib/extensions/openssl.so/ext/win32/include/openssl/mdc2.h +98 -0
  1071. data/lib/extensions/openssl.so/ext/win32/include/openssl/modes.h +135 -0
  1072. data/lib/extensions/openssl.so/ext/win32/include/openssl/obj_mac.h +4032 -0
  1073. data/lib/extensions/openssl.so/ext/win32/include/openssl/objects.h +1138 -0
  1074. data/lib/extensions/openssl.so/ext/win32/include/openssl/ocsp.h +623 -0
  1075. data/lib/extensions/openssl.so/ext/win32/include/openssl/opensslconf.h +235 -0
  1076. data/lib/extensions/openssl.so/ext/win32/include/openssl/opensslv.h +89 -0
  1077. data/lib/extensions/openssl.so/ext/win32/include/openssl/ossl_typ.h +202 -0
  1078. data/lib/extensions/openssl.so/ext/win32/include/openssl/pem.h +641 -0
  1079. data/lib/extensions/openssl.so/ext/win32/include/openssl/pem2.h +70 -0
  1080. data/lib/extensions/openssl.so/ext/win32/include/openssl/pkcs12.h +331 -0
  1081. data/lib/extensions/openssl.so/ext/win32/include/openssl/pkcs7.h +499 -0
  1082. data/lib/extensions/openssl.so/ext/win32/include/openssl/pqueue.h +94 -0
  1083. data/lib/extensions/openssl.so/ext/win32/include/openssl/rand.h +149 -0
  1084. data/lib/extensions/openssl.so/ext/win32/include/openssl/rc2.h +103 -0
  1085. data/lib/extensions/openssl.so/ext/win32/include/openssl/rc4.h +90 -0
  1086. data/lib/extensions/openssl.so/ext/win32/include/openssl/ripemd.h +107 -0
  1087. data/lib/extensions/openssl.so/ext/win32/include/openssl/rsa.h +582 -0
  1088. data/lib/extensions/openssl.so/ext/win32/include/openssl/safestack.h +2663 -0
  1089. data/lib/extensions/openssl.so/ext/win32/include/openssl/seed.h +139 -0
  1090. data/lib/extensions/openssl.so/ext/win32/include/openssl/sha.h +214 -0
  1091. data/lib/extensions/openssl.so/ext/win32/include/openssl/srp.h +172 -0
  1092. data/lib/extensions/openssl.so/ext/win32/include/openssl/srtp.h +145 -0
  1093. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl.h +2572 -0
  1094. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl2.h +272 -0
  1095. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl23.h +83 -0
  1096. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl3.h +678 -0
  1097. data/lib/extensions/openssl.so/ext/win32/include/openssl/stack.h +108 -0
  1098. data/lib/extensions/openssl.so/ext/win32/include/openssl/symhacks.h +477 -0
  1099. data/lib/extensions/openssl.so/ext/win32/include/openssl/tls1.h +735 -0
  1100. data/lib/extensions/openssl.so/ext/win32/include/openssl/ts.h +858 -0
  1101. data/lib/extensions/openssl.so/ext/win32/include/openssl/txt_db.h +112 -0
  1102. data/lib/extensions/openssl.so/ext/win32/include/openssl/ui.h +383 -0
  1103. data/lib/extensions/openssl.so/ext/win32/include/openssl/ui_compat.h +83 -0
  1104. data/lib/extensions/openssl.so/ext/win32/include/openssl/whrlpool.h +41 -0
  1105. data/lib/extensions/openssl.so/ext/win32/include/openssl/x509.h +1297 -0
  1106. data/lib/extensions/openssl.so/ext/win32/include/openssl/x509_vfy.h +567 -0
  1107. data/lib/extensions/openssl.so/ext/win32/include/openssl/x509v3.h +1007 -0
  1108. data/lib/extensions/openssl.so/ext/win32/lib/libeay32.lib +0 -0
  1109. data/lib/extensions/openssl.so/ext/win32/lib/ssleay32.lib +0 -0
  1110. data/lib/extensions/openssl.so/ext/wm/lib/libopenssl.lib +0 -0
  1111. data/lib/extensions/openssl.so/ext/wm/openssl.sln +30 -0
  1112. data/lib/extensions/openssl.so/ext/wm/openssl.vcproj +3254 -0
  1113. data/lib/extensions/openssl.so/ext/wm/tmp/MC3000c50b (ARMV4I)/Release/BuildLog.htm +0 -0
  1114. data/lib/extensions/openssl.so/ext/wm/tmp/Windows Mobile 6 Professional SDK (ARMV4I)/Release/BuildLog.htm +0 -0
  1115. data/lib/extensions/openssl.so/openssl.so.rb +1 -0
  1116. data/lib/extensions/openssl/ext.yml +2 -0
  1117. data/lib/extensions/openssl/ext/Rakefile +132 -0
  1118. data/lib/extensions/openssl/ext/android/extconf.h +55 -0
  1119. data/lib/extensions/openssl/ext/build +12 -0
  1120. data/lib/extensions/openssl/ext/build.bat +1 -0
  1121. data/lib/extensions/openssl/ext/extconf.rb +141 -0
  1122. data/lib/extensions/openssl/ext/iphone/Rakefile +79 -0
  1123. data/lib/extensions/openssl/ext/iphone/extconf.h +55 -0
  1124. data/lib/extensions/openssl/ext/iphone/openssl.xcodeproj/project.pbxproj +472 -0
  1125. data/lib/extensions/openssl/ext/iphone/openssl_Prefix.pch +7 -0
  1126. data/lib/extensions/openssl/ext/macosx/extconf.h +53 -0
  1127. data/lib/extensions/openssl/ext/openssl.sln +44 -0
  1128. data/lib/extensions/openssl/ext/openssl.vcproj +844 -0
  1129. data/lib/extensions/openssl/ext/openssl_missing.c +361 -0
  1130. data/lib/extensions/openssl/ext/openssl_missing.h +194 -0
  1131. data/lib/extensions/openssl/ext/ossl.c +514 -0
  1132. data/lib/extensions/openssl/ext/ossl.h +243 -0
  1133. data/lib/extensions/openssl/ext/ossl_asn1.c +1170 -0
  1134. data/lib/extensions/openssl/ext/ossl_asn1.h +59 -0
  1135. data/lib/extensions/openssl/ext/ossl_bio.c +86 -0
  1136. data/lib/extensions/openssl/ext/ossl_bio.h +21 -0
  1137. data/lib/extensions/openssl/ext/ossl_bn.c +852 -0
  1138. data/lib/extensions/openssl/ext/ossl_bn.h +25 -0
  1139. data/lib/extensions/openssl/ext/ossl_cipher.c +546 -0
  1140. data/lib/extensions/openssl/ext/ossl_cipher.h +22 -0
  1141. data/lib/extensions/openssl/ext/ossl_config.c +492 -0
  1142. data/lib/extensions/openssl/ext/ossl_config.h +22 -0
  1143. data/lib/extensions/openssl/ext/ossl_digest.c +257 -0
  1144. data/lib/extensions/openssl/ext/ossl_digest.h +22 -0
  1145. data/lib/extensions/openssl/ext/ossl_engine.c +411 -0
  1146. data/lib/extensions/openssl/ext/ossl_engine.h +20 -0
  1147. data/lib/extensions/openssl/ext/ossl_hmac.c +270 -0
  1148. data/lib/extensions/openssl/ext/ossl_hmac.h +19 -0
  1149. data/lib/extensions/openssl/ext/ossl_ns_spki.c +257 -0
  1150. data/lib/extensions/openssl/ext/ossl_ns_spki.h +21 -0
  1151. data/lib/extensions/openssl/ext/ossl_ocsp.c +773 -0
  1152. data/lib/extensions/openssl/ext/ossl_ocsp.h +24 -0
  1153. data/lib/extensions/openssl/ext/ossl_pkcs12.c +212 -0
  1154. data/lib/extensions/openssl/ext/ossl_pkcs12.h +15 -0
  1155. data/lib/extensions/openssl/ext/ossl_pkcs5.c +98 -0
  1156. data/lib/extensions/openssl/ext/ossl_pkcs5.h +6 -0
  1157. data/lib/extensions/openssl/ext/ossl_pkcs7.c +1041 -0
  1158. data/lib/extensions/openssl/ext/ossl_pkcs7.h +22 -0
  1159. data/lib/extensions/openssl/ext/ossl_pkey.c +240 -0
  1160. data/lib/extensions/openssl/ext/ossl_pkey.h +141 -0
  1161. data/lib/extensions/openssl/ext/ossl_pkey_dh.c +536 -0
  1162. data/lib/extensions/openssl/ext/ossl_pkey_dsa.c +492 -0
  1163. data/lib/extensions/openssl/ext/ossl_pkey_ec.c +1597 -0
  1164. data/lib/extensions/openssl/ext/ossl_pkey_rsa.c +601 -0
  1165. data/lib/extensions/openssl/ext/ossl_rand.c +202 -0
  1166. data/lib/extensions/openssl/ext/ossl_rand.h +20 -0
  1167. data/lib/extensions/openssl/ext/ossl_ssl.c +1691 -0
  1168. data/lib/extensions/openssl/ext/ossl_ssl.h +36 -0
  1169. data/lib/extensions/openssl/ext/ossl_ssl_session.c +306 -0
  1170. data/lib/extensions/openssl/ext/ossl_version.h +16 -0
  1171. data/lib/extensions/openssl/ext/ossl_x509.c +104 -0
  1172. data/lib/extensions/openssl/ext/ossl_x509.h +114 -0
  1173. data/lib/extensions/openssl/ext/ossl_x509attr.c +275 -0
  1174. data/lib/extensions/openssl/ext/ossl_x509cert.c +766 -0
  1175. data/lib/extensions/openssl/ext/ossl_x509crl.c +537 -0
  1176. data/lib/extensions/openssl/ext/ossl_x509ext.c +459 -0
  1177. data/lib/extensions/openssl/ext/ossl_x509name.c +375 -0
  1178. data/lib/extensions/openssl/ext/ossl_x509req.c +468 -0
  1179. data/lib/extensions/openssl/ext/ossl_x509revoked.c +229 -0
  1180. data/lib/extensions/openssl/ext/ossl_x509store.c +624 -0
  1181. data/lib/extensions/openssl/ext/ruby_missing.h +41 -0
  1182. data/lib/extensions/openssl/ext/windows/extconf.h +66 -0
  1183. data/lib/extensions/openssl/openssl.rb +24 -0
  1184. data/lib/extensions/openssl/openssl/bn.rb +35 -0
  1185. data/lib/extensions/openssl/openssl/buffering.rb +341 -0
  1186. data/lib/extensions/openssl/openssl/cipher.rb +65 -0
  1187. data/lib/extensions/openssl/openssl/digest.rb +61 -0
  1188. data/lib/extensions/openssl/openssl/ssl-internal.rb +178 -0
  1189. data/lib/extensions/openssl/openssl/ssl.rb +1 -0
  1190. data/lib/extensions/openssl/openssl/x509-internal.rb +153 -0
  1191. data/lib/extensions/openssl/openssl/x509.rb +1 -0
  1192. data/lib/extensions/rhoxml/rexml/xmldecl.rb +119 -0
  1193. data/lib/extensions/zlib/ext.yml +2 -0
  1194. data/lib/extensions/zlib/ext/README +115 -0
  1195. data/lib/extensions/zlib/ext/Rakefile +127 -0
  1196. data/lib/extensions/zlib/ext/adler32.c +179 -0
  1197. data/lib/extensions/zlib/ext/build +12 -0
  1198. data/lib/extensions/zlib/ext/build.bat +1 -0
  1199. data/lib/extensions/zlib/ext/compress.c +80 -0
  1200. data/lib/extensions/zlib/ext/crc32.c +425 -0
  1201. data/lib/extensions/zlib/ext/crc32.h +441 -0
  1202. data/lib/extensions/zlib/ext/deflate.c +1965 -0
  1203. data/lib/extensions/zlib/ext/deflate.h +346 -0
  1204. data/lib/extensions/zlib/ext/gzclose.c +25 -0
  1205. data/lib/extensions/zlib/ext/gzguts.h +193 -0
  1206. data/lib/extensions/zlib/ext/gzlib.c +620 -0
  1207. data/lib/extensions/zlib/ext/gzread.c +589 -0
  1208. data/lib/extensions/zlib/ext/gzwrite.c +565 -0
  1209. data/lib/extensions/zlib/ext/infback.c +640 -0
  1210. data/lib/extensions/zlib/ext/inffast.c +340 -0
  1211. data/lib/extensions/zlib/ext/inffast.h +11 -0
  1212. data/lib/extensions/zlib/ext/inffixed.h +94 -0
  1213. data/lib/extensions/zlib/ext/inflate.c +1496 -0
  1214. data/lib/extensions/zlib/ext/inflate.h +122 -0
  1215. data/lib/extensions/zlib/ext/inftrees.c +306 -0
  1216. data/lib/extensions/zlib/ext/inftrees.h +62 -0
  1217. data/lib/extensions/zlib/ext/iphone/Rakefile +79 -0
  1218. data/lib/extensions/zlib/ext/iphone/zlib.xcodeproj/project.pbxproj +360 -0
  1219. data/lib/extensions/zlib/ext/iphone/zlib_Prefix.pch +7 -0
  1220. data/lib/extensions/zlib/ext/trees.c +1224 -0
  1221. data/lib/extensions/zlib/ext/trees.h +128 -0
  1222. data/lib/extensions/zlib/ext/uncompr.c +59 -0
  1223. data/lib/extensions/zlib/ext/zconf.h +506 -0
  1224. data/lib/extensions/zlib/ext/zlib.c +3762 -0
  1225. data/lib/extensions/zlib/ext/zlib.h +1744 -0
  1226. data/lib/extensions/zlib/ext/zlib.sln +36 -0
  1227. data/lib/extensions/zlib/ext/zlib.vcproj +746 -0
  1228. data/lib/extensions/zlib/ext/zlib.vsprops +16 -0
  1229. data/lib/extensions/zlib/ext/zutil.c +324 -0
  1230. data/lib/extensions/zlib/ext/zutil.h +252 -0
  1231. data/lib/extensions/zlib/zlib.rb +0 -0
  1232. data/lib/framework/rbconfig.rb +1 -1
  1233. data/lib/framework/rho/render.rb +31 -34
  1234. data/lib/framework/rho/rho.rb +89 -24
  1235. data/lib/framework/rho/rhocontroller.rb +8 -5
  1236. data/lib/framework/rho/rhofsconnector.rb +3 -0
  1237. data/lib/framework/rhodes.rb +9 -9
  1238. data/lib/framework/rhom/rhom.rb +15 -0
  1239. data/lib/framework/rhom/rhom_db_adapter.rb +18 -0
  1240. data/lib/framework/rhom/rhom_object_factory.rb +36 -26
  1241. data/lib/framework/rhomotoapi.rb +65 -1
  1242. data/lib/framework/rhosystem.rb +23 -19
  1243. data/lib/framework/version.rb +7 -7
  1244. data/lib/rhodes.rb +9 -9
  1245. data/platform/android/Rhodes/AndroidManifest.xml +117 -117
  1246. data/platform/android/Rhodes/AndroidManifest.xml.erb +77 -0
  1247. data/platform/android/Rhodes/PushReceiver.erb +14 -0
  1248. data/platform/android/Rhodes/jni/Android.mk +3 -1
  1249. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_Logger.h +16 -0
  1250. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +8 -0
  1251. data/platform/android/Rhodes/jni/src/fileapi.cpp +18 -0
  1252. data/platform/android/Rhodes/jni/src/logger.cpp +16 -0
  1253. data/platform/android/Rhodes/jni/src/rhodesapp.cpp +9 -2
  1254. data/platform/android/Rhodes/jni/src/signature.cpp +3 -28
  1255. data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +41 -37
  1256. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Logger.java +5 -5
  1257. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +6 -2
  1258. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +38 -15
  1259. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +49 -9
  1260. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +130 -10
  1261. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +13 -1
  1262. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +8 -6
  1263. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraNewService.java +20 -0
  1264. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraOldService.java +5 -0
  1265. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSemiService.java +14 -0
  1266. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraService.java +2 -0
  1267. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +16 -13
  1268. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/AbstractRhoExtension.java +1 -1
  1269. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/Config.java +3 -0
  1270. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtManager.java +1 -1
  1271. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtension.java +3 -1
  1272. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManager.java +10 -0
  1273. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManagerImpl.java +23 -35
  1274. data/platform/android/Rhodes/src/com/rhomobile/rhodes/file/RhoFileApi.java +10 -0
  1275. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SplashScreen.java +60 -34
  1276. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality.java +14 -1
  1277. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality01.java +38 -3
  1278. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality08.java +26 -4
  1279. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality11.java +47 -0
  1280. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionalityManager.java +4 -1
  1281. data/platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSocketImpl.java +9 -1
  1282. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java +10 -0
  1283. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/IRhoWebView.java +2 -0
  1284. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebViewClient.java +10 -3
  1285. data/platform/android/build/RhodesSRC_build.files +1 -1
  1286. data/platform/android/build/android.rake +567 -556
  1287. data/platform/android/build/android_tools.rb +87 -0
  1288. data/platform/android/build/librhocommon_build.files +3 -0
  1289. data/platform/android/build/librhodb_build.files +2 -0
  1290. data/platform/android/build/manifest_generator.rb +96 -0
  1291. data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +2 -4
  1292. data/platform/bb/RubyVM/src/com/rho/RhoProfiler.java +11 -0
  1293. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +61 -48
  1294. data/platform/bb/build/rhodes_build.files +0 -1
  1295. data/platform/bb/rhodes/platform/4.7/com/rho/rubyext/SignatureCapture.java +314 -0
  1296. data/platform/bb/rhodes/platform/common/com/rho/rubyext/SignatureCapture.java +312 -0
  1297. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +4 -1
  1298. data/platform/iphone/Classes/AppManager/AppManager.h +1 -0
  1299. data/platform/iphone/Classes/AppManager/AppManager.m +165 -123
  1300. data/platform/iphone/Classes/Event/Event.m +53 -14
  1301. data/platform/iphone/Classes/Rhodes.h +5 -4
  1302. data/platform/iphone/Classes/Rhodes.m +10 -8
  1303. data/platform/iphone/Classes/Signature/SignatureDelegate.m +2 -2
  1304. data/platform/iphone/Classes/SimpleMainView.m +55 -17
  1305. data/platform/iphone/Classes/SplashViewController.m +28 -1
  1306. data/platform/iphone/Info.plist +59 -54
  1307. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +43 -14
  1308. data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +15 -18
  1309. data/platform/iphone/rbuild/iphone.rake +113 -4
  1310. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +15 -17
  1311. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +6 -14
  1312. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +20 -23
  1313. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +22 -14
  1314. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore +0 -0
  1315. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui +0 -0
  1316. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork +0 -0
  1317. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtWebKit.framework/Versions/4/QtWebKit +0 -0
  1318. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Info.plist +1 -1
  1319. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  1320. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/accessible/libqtaccessiblewidgets.dylib +0 -0
  1321. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqcorewlanbearer.dylib +0 -0
  1322. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqgenericbearer.dylib +0 -0
  1323. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqcncodecs.dylib +0 -0
  1324. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqjpcodecs.dylib +0 -0
  1325. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqkrcodecs.dylib +0 -0
  1326. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqtwcodecs.dylib +0 -0
  1327. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/graphicssystems/libqtracegraphicssystem.dylib +0 -0
  1328. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqgif.dylib +0 -0
  1329. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqico.dylib +0 -0
  1330. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqjpeg.dylib +0 -0
  1331. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqmng.dylib +0 -0
  1332. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtga.dylib +0 -0
  1333. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtiff.dylib +0 -0
  1334. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_inspector.dylib +0 -0
  1335. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_tcp.dylib +0 -0
  1336. data/platform/osx/build/osx.rake +18 -9
  1337. data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +12 -0
  1338. data/platform/shared/RhoConnectClient/RhoConnectClient.h +3 -0
  1339. data/platform/shared/common/Android.mk +1 -0
  1340. data/platform/shared/common/BundleManager.cpp +503 -47
  1341. data/platform/shared/common/ExtManager.h +4 -0
  1342. data/platform/shared/common/RhoSettingsDefs.h +3 -0
  1343. data/platform/shared/common/RhoStd.h +14 -1
  1344. data/platform/shared/common/RhodesApp.cpp +84 -137
  1345. data/platform/shared/common/RhodesApp.h +12 -7
  1346. data/platform/shared/common/RhodesAppBase.cpp +124 -2
  1347. data/platform/shared/common/RhodesAppBase.h +43 -2
  1348. data/platform/shared/common/ThreadQueue.cpp +1 -1
  1349. data/platform/shared/common/app_build_capabilities.h +0 -7
  1350. data/platform/shared/common/map/MapEngine.h +1 -0
  1351. data/platform/shared/common/push/IRhoPushClient.h +46 -0
  1352. data/platform/shared/common/push/RhoPushManager.cpp +146 -0
  1353. data/platform/shared/common/push/RhoPushManager.h +79 -0
  1354. data/platform/shared/curl/lib/curl_config.h +8 -0
  1355. data/platform/shared/curl/lib/netrc.c +2 -0
  1356. data/platform/shared/db/Android.mk +4 -1
  1357. data/platform/shared/db/DBAdapter.cpp +218 -12
  1358. data/platform/shared/db/DBAdapter.h +16 -1
  1359. data/platform/shared/db/DBAttrManager.cpp +18 -1
  1360. data/platform/shared/db/DBAttrManager.h +2 -1
  1361. data/platform/shared/db/DBImportTransaction.cpp +300 -0
  1362. data/platform/shared/db/DBImportTransaction.h +56 -0
  1363. data/platform/shared/db/DBRequestHelper.cpp +114 -0
  1364. data/platform/shared/db/DBRequestHelper.h +27 -0
  1365. data/platform/shared/logging/RhoLogConf.h +2 -0
  1366. data/platform/shared/net/AsyncHttp.cpp +4 -3
  1367. data/platform/shared/net/AsyncHttp.h +3 -2
  1368. data/platform/shared/net/CURLNetRequest.cpp +18 -5
  1369. data/platform/shared/net/HttpServer.cpp +18 -14
  1370. data/platform/shared/qt/rhodes/MainWindowCallback.h +0 -1
  1371. data/platform/shared/qt/rhodes/QtMainWindow.cpp +180 -36
  1372. data/platform/shared/qt/rhodes/QtMainWindow.h +13 -1
  1373. data/platform/shared/qt/rhodes/QtMainWindow.ui +22 -3
  1374. data/platform/shared/qt/rhodes/RhoSimulator.h +3 -0
  1375. data/platform/shared/qt/rhodes/impl/MainWindowImpl.cpp +22 -0
  1376. data/platform/shared/qt/rhodes/impl/MainWindowImpl.h +6 -0
  1377. data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +15 -0
  1378. data/platform/shared/qt/rhodes/main.cpp +15 -1
  1379. data/platform/shared/qt/rholib/rholib.pro +8 -2
  1380. data/platform/shared/qt/syncengine/syncengine.pro +6 -2
  1381. data/platform/shared/ruby/ext/rho/extensions.c +2 -0
  1382. data/platform/shared/ruby/ext/rho/rhoruby.c +12 -0
  1383. data/platform/shared/ruby/ext/rho/rhoruby.h +2 -0
  1384. data/platform/shared/ruby/ext/rho/rhosupport.c +77 -38
  1385. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +54 -2
  1386. data/platform/shared/ruby/ext/syncengine/syncengine.i +4 -0
  1387. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +40 -1
  1388. data/platform/shared/ruby/ext/system/system.i +38 -4
  1389. data/platform/shared/ruby/ext/system/system_wrap.c +277 -9
  1390. data/platform/shared/ruby/iphone/ruby/config.h +28 -0
  1391. data/platform/shared/ruby/main.c +8 -0
  1392. data/platform/shared/ruby/wince/sys/timeb.c +4 -0
  1393. data/platform/shared/ruby/wince/sys/timeb.h +1 -0
  1394. data/platform/shared/rubyext/Android.mk +2 -1
  1395. data/platform/shared/rubyext/System.cpp +93 -3
  1396. data/platform/shared/rubyext/ZipFiles.cpp +65 -0
  1397. data/platform/shared/statistic/RhoProfiler.cpp +36 -6
  1398. data/platform/shared/statistic/RhoProfiler.h +3 -0
  1399. data/platform/shared/sync/ClientRegister.cpp +21 -5
  1400. data/platform/shared/sync/ClientRegister.h +4 -2
  1401. data/platform/shared/sync/ISyncProtocol.h +5 -2
  1402. data/platform/shared/sync/SyncEngine.cpp +85 -15
  1403. data/platform/shared/sync/SyncEngine.h +5 -0
  1404. data/platform/shared/sync/SyncNotify.cpp +3 -0
  1405. data/platform/shared/sync/SyncProtocol_3.h +14 -2
  1406. data/platform/shared/sync/SyncSource.cpp +238 -40
  1407. data/platform/shared/sync/SyncSource.h +2 -0
  1408. data/platform/shared/sync/SyncThread.cpp +7 -0
  1409. data/platform/shared/sync/SyncThread.h +1 -0
  1410. data/platform/shared/tcmalloc/rhomem.h +1 -1
  1411. data/platform/shared/tcmalloc/windows/port.cpp +1 -1
  1412. data/platform/shared/unzip/Android.mk +1 -1
  1413. data/platform/shared/unzip/zip.cpp +2953 -0
  1414. data/platform/shared/unzip/zip.h +255 -0
  1415. data/platform/win32/RhoSimulator/QtCore4.dll +0 -0
  1416. data/platform/win32/RhoSimulator/QtGui4.dll +0 -0
  1417. data/platform/win32/RhoSimulator/QtNetwork4.dll +0 -0
  1418. data/platform/win32/RhoSimulator/QtWebKit4.dll +0 -0
  1419. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  1420. data/platform/win32/RhoSimulator/imageformats/qgif4.dll +0 -0
  1421. data/platform/win32/RhoSimulator/imageformats/qico4.dll +0 -0
  1422. data/platform/win32/RhoSimulator/imageformats/qjpeg4.dll +0 -0
  1423. data/platform/win32/RhoSimulator/imageformats/qmng4.dll +0 -0
  1424. data/platform/win32/RhoSimulator/imageformats/qsvg4.dll +0 -0
  1425. data/platform/win32/RhoSimulator/imageformats/qtiff4.dll +0 -0
  1426. data/platform/win32/RhoSimulator/phonon4.dll +0 -0
  1427. data/platform/win32/RubyWin/RubyWin.sln +2 -2
  1428. data/platform/win32/RubyWin/RubyWin.vcproj +6 -7
  1429. data/platform/wm/RhoLib/RhoLib.vcproj +33 -3
  1430. data/platform/wm/build/rhodes.nsi +64 -230
  1431. data/platform/wm/build/wm.rake +306 -93
  1432. data/platform/wm/rhodes.sln +70 -21
  1433. data/platform/wm/rhodes/DateTimePicker.h +1 -1
  1434. data/platform/wm/rhodes/IEBrowserEngine.cpp +4 -1
  1435. data/platform/wm/rhodes/MainWindow.cpp +8 -7
  1436. data/platform/wm/rhodes/MainWindow.h +1 -1
  1437. data/platform/wm/rhodes/RhoNativeViewManager.cpp +2 -2
  1438. data/platform/wm/rhodes/Rhodes.cpp +80 -30
  1439. data/platform/wm/rhodes/camera/Camera.cpp +44 -65
  1440. data/platform/wm/rhodes/camera/Camera.h +6 -0
  1441. data/platform/wm/rhodes/rho/common/ExtManager.cpp +29 -6
  1442. data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +6 -1
  1443. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +3 -0
  1444. data/platform/wm/rhodes/rho/net/NetRequestImpl.h +1 -1
  1445. data/platform/wm/rhodes/rho/rubyext/NativeToolbarExt.cpp +5 -5
  1446. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +188 -29
  1447. data/platform/wm/rhodes/rho/rubyext/WebView.cpp +3 -3
  1448. data/platform/wm/rhodes/rhodes.vcproj +2284 -148
  1449. data/platform/wm/rhodes/simulator/MainWindowQt.cpp +48 -10
  1450. data/platform/wm/rhodes/simulator/MainWindowQt.h +6 -2
  1451. data/platform/wm/rhoelements.sln +122 -0
  1452. data/platform/wm/rubylib/rubylib.vcproj +4 -2
  1453. data/platform/wm/sqlite3/sqlite3.vcproj +4 -2
  1454. data/platform/wm/syncengine/syncengine.vcproj +20 -2
  1455. data/platform/wm/tcmalloc/tcmalloc.vcproj +160 -0
  1456. data/platform/wp7/RhoRubyLib/rubyext/RhoSyncEngine.cs +4 -0
  1457. data/platform/wp7/RhoRubyLib/rubyext/RhoSystem.cs +4 -0
  1458. data/rakefile.rb +173 -17
  1459. data/res/build-tools/license_rc.dll +0 -0
  1460. data/res/build-tools/win32/license_rc.dll +0 -0
  1461. data/res/generators/templates/application/app/layout.erb +7 -3
  1462. data/res/generators/templates/application/public/css/re_webkit.css +1 -1
  1463. data/res/generators/templates/application/public/css/re_webkit_flat.css +753 -0
  1464. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Montana.xcodeproj/project.pbxproj +4 -10
  1465. data/spec/framework_spec/app/spec/core/file/new_spec.rb +2 -2
  1466. data/spec/framework_spec/app/spec/core/file/open_spec.rb +6 -6
  1467. data/spec/framework_spec/app/spec/core/file/shared/open.rb +1 -1
  1468. data/spec/framework_spec/app/spec/core/file/shared/stat.rb +2 -2
  1469. data/spec/framework_spec/app/spec/core/file/stat/blksize_spec.rb +1 -1
  1470. data/spec/framework_spec/app/spec/core/file/stat/blocks_spec.rb +1 -1
  1471. data/spec/framework_spec/app/spec/core/file/stat/comparison_spec.rb +1 -1
  1472. data/spec/framework_spec/app/spec/core/file/stat/ino_spec.rb +1 -1
  1473. data/spec/framework_spec/app/spec/core/file/stat/inspect_spec.rb +1 -1
  1474. data/spec/framework_spec/app/spec/core/file/stat/mode_spec.rb +1 -1
  1475. data/spec/framework_spec/app/spec/core/file/stat/nlink_spec.rb +1 -1
  1476. data/spec/framework_spec/app/spec/core/file/stat_spec.rb +1 -1
  1477. data/spec/framework_spec/app/spec/core/file/sticky_spec.rb +2 -2
  1478. data/spec/framework_spec/app/spec/core/io/close_read_spec.rb +1 -1
  1479. data/spec/framework_spec/app/spec/core/io/close_write_spec.rb +1 -1
  1480. data/spec/framework_spec/app/spec/core/io/foreach_spec.rb +8 -8
  1481. data/spec/framework_spec/app/spec/core/io/getc_spec.rb +1 -1
  1482. data/spec/framework_spec/app/spec/core/io/gets_spec.rb +1 -1
  1483. data/spec/framework_spec/app/spec/core/io/stat_spec.rb +1 -1
  1484. data/spec/framework_spec/app/spec/core/kernel/respond_to_spec.rb +1 -1
  1485. data/spec/framework_spec/app/spec/core/time/shared/gmt_offset.rb +1 -1
  1486. data/spec/framework_spec/app/spec/library/digest/hmac_spec.rb +91 -0
  1487. data/spec/framework_spec/app/spec/library/digest/md5/file_spec.rb +1 -1
  1488. data/spec/framework_spec/app/spec/library/digest/sha256/append_spec.rb +7 -0
  1489. data/spec/framework_spec/app/spec/library/digest/sha256/block_length_spec.rb +12 -0
  1490. data/spec/framework_spec/app/spec/library/digest/sha256/digest_bang_spec.rb +13 -0
  1491. data/spec/framework_spec/app/spec/library/digest/sha256/digest_length_spec.rb +12 -0
  1492. data/spec/framework_spec/app/spec/library/digest/sha256/digest_spec.rb +32 -0
  1493. data/spec/framework_spec/app/spec/library/digest/sha256/equal_spec.rb +37 -0
  1494. data/spec/framework_spec/app/spec/library/digest/sha256/file_spec.rb +47 -0
  1495. data/spec/framework_spec/app/spec/library/digest/sha256/hexdigest_bang_spec.rb +14 -0
  1496. data/spec/framework_spec/app/spec/library/digest/sha256/hexdigest_spec.rb +32 -0
  1497. data/spec/framework_spec/app/spec/library/digest/sha256/inspect_spec.rb +12 -0
  1498. data/spec/framework_spec/app/spec/library/digest/sha256/length_spec.rb +8 -0
  1499. data/spec/framework_spec/app/spec/library/digest/sha256/reset_spec.rb +15 -0
  1500. data/spec/framework_spec/app/spec/library/digest/sha256/shared/constants.rb +15 -0
  1501. data/spec/framework_spec/app/spec/library/digest/sha256/shared/length.rb +8 -0
  1502. data/spec/framework_spec/app/spec/library/digest/sha256/shared/update.rb +7 -0
  1503. data/spec/framework_spec/app/spec/library/digest/sha256/size_spec.rb +8 -0
  1504. data/spec/framework_spec/app/spec/library/digest/sha256/to_s_spec.rb +21 -0
  1505. data/spec/framework_spec/app/spec/library/digest/sha256/update_spec.rb +7 -0
  1506. data/spec/framework_spec/app/spec/library/digest/sha384/append_spec.rb +7 -0
  1507. data/spec/framework_spec/app/spec/library/digest/sha384/block_length_spec.rb +12 -0
  1508. data/spec/framework_spec/app/spec/library/digest/sha384/digest_bang_spec.rb +13 -0
  1509. data/spec/framework_spec/app/spec/library/digest/sha384/digest_length_spec.rb +12 -0
  1510. data/spec/framework_spec/app/spec/library/digest/sha384/digest_spec.rb +32 -0
  1511. data/spec/framework_spec/app/spec/library/digest/sha384/equal_spec.rb +37 -0
  1512. data/spec/framework_spec/app/spec/library/digest/sha384/file_spec.rb +47 -0
  1513. data/spec/framework_spec/app/spec/library/digest/sha384/hexdigest_bang_spec.rb +14 -0
  1514. data/spec/framework_spec/app/spec/library/digest/sha384/hexdigest_spec.rb +32 -0
  1515. data/spec/framework_spec/app/spec/library/digest/sha384/inspect_spec.rb +12 -0
  1516. data/spec/framework_spec/app/spec/library/digest/sha384/length_spec.rb +8 -0
  1517. data/spec/framework_spec/app/spec/library/digest/sha384/reset_spec.rb +15 -0
  1518. data/spec/framework_spec/app/spec/library/digest/sha384/shared/constants.rb +16 -0
  1519. data/spec/framework_spec/app/spec/library/digest/sha384/shared/length.rb +8 -0
  1520. data/spec/framework_spec/app/spec/library/digest/sha384/shared/update.rb +7 -0
  1521. data/spec/framework_spec/app/spec/library/digest/sha384/size_spec.rb +8 -0
  1522. data/spec/framework_spec/app/spec/library/digest/sha384/to_s_spec.rb +21 -0
  1523. data/spec/framework_spec/app/spec/library/digest/sha384/update_spec.rb +7 -0
  1524. data/spec/framework_spec/app/spec/library/digest/sha512/append_spec.rb +7 -0
  1525. data/spec/framework_spec/app/spec/library/digest/sha512/block_length_spec.rb +12 -0
  1526. data/spec/framework_spec/app/spec/library/digest/sha512/digest_bang_spec.rb +13 -0
  1527. data/spec/framework_spec/app/spec/library/digest/sha512/digest_length_spec.rb +12 -0
  1528. data/spec/framework_spec/app/spec/library/digest/sha512/digest_spec.rb +32 -0
  1529. data/spec/framework_spec/app/spec/library/digest/sha512/equal_spec.rb +37 -0
  1530. data/spec/framework_spec/app/spec/library/digest/sha512/file_spec.rb +47 -0
  1531. data/spec/framework_spec/app/spec/library/digest/sha512/hexdigest_bang_spec.rb +14 -0
  1532. data/spec/framework_spec/app/spec/library/digest/sha512/hexdigest_spec.rb +32 -0
  1533. data/spec/framework_spec/app/spec/library/digest/sha512/inspect_spec.rb +12 -0
  1534. data/spec/framework_spec/app/spec/library/digest/sha512/length_spec.rb +8 -0
  1535. data/spec/framework_spec/app/spec/library/digest/sha512/reset_spec.rb +15 -0
  1536. data/spec/framework_spec/app/spec/library/digest/sha512/shared/constants.rb +15 -0
  1537. data/spec/framework_spec/app/spec/library/digest/sha512/shared/length.rb +8 -0
  1538. data/spec/framework_spec/app/spec/library/digest/sha512/shared/update.rb +7 -0
  1539. data/spec/framework_spec/app/spec/library/digest/sha512/size_spec.rb +8 -0
  1540. data/spec/framework_spec/app/spec/library/digest/sha512/to_s_spec.rb +21 -0
  1541. data/spec/framework_spec/app/spec/library/digest/sha512/update_spec.rb +7 -0
  1542. data/spec/framework_spec/app/spec/library/ezcrypto/ezcrypto_spec.rb +13 -0
  1543. data/spec/framework_spec/app/spec/library/net/ftp/nlst_spec.rb +1 -1
  1544. data/spec/framework_spec/app/spec/library/net/ftp/retrbinary_spec.rb +1 -1
  1545. data/spec/framework_spec/app/spec/library/net/ftp/retrlines_spec.rb +1 -1
  1546. data/spec/framework_spec/app/spec/library/net/ftp/shared/getbinaryfile.rb +1 -1
  1547. data/spec/framework_spec/app/spec/library/net/ftp/shared/gettextfile.rb +1 -1
  1548. data/spec/framework_spec/app/spec/library/net/ftp/shared/list.rb +1 -1
  1549. data/spec/framework_spec/app/spec/library/net/ftp/shared/putbinaryfile.rb +1 -1
  1550. data/spec/framework_spec/app/spec/library/net/ftp/shared/puttextfile.rb +1 -1
  1551. data/spec/framework_spec/app/spec/library/net/ftp/storbinary_spec.rb +1 -1
  1552. data/spec/framework_spec/app/spec/library/net/ftp/storlines_spec.rb +1 -1
  1553. data/spec/framework_spec/app/spec/library/openssl/cipher_spec.rb +19 -0
  1554. data/spec/framework_spec/app/spec/library/openssl/config/freeze_spec.rb +21 -0
  1555. data/spec/framework_spec/app/spec/library/openssl/hmac/digest_spec.rb +18 -0
  1556. data/spec/framework_spec/app/spec/library/openssl/hmac/hexdigest_spec.rb +18 -0
  1557. data/spec/framework_spec/app/spec/library/openssl/random/pseudo_bytes_spec.rb +7 -0
  1558. data/spec/framework_spec/app/spec/library/openssl/random/random_bytes_spec.rb +7 -0
  1559. data/spec/framework_spec/app/spec/library/openssl/random/shared/random_bytes.rb +29 -0
  1560. data/spec/framework_spec/app/spec/library/openssl/shared/constants.rb +10 -0
  1561. data/spec/framework_spec/app/spec/library/zlib/adler32_spec.rb +46 -0
  1562. data/spec/framework_spec/app/spec/library/zlib/crc32_spec.rb +52 -0
  1563. data/spec/framework_spec/app/spec/library/zlib/crc_table_spec.rb +11 -0
  1564. data/spec/framework_spec/app/spec/library/zlib/deflate/append_spec.rb +1 -0
  1565. data/spec/framework_spec/app/spec/library/zlib/deflate/deflate_spec.rb +49 -0
  1566. data/spec/framework_spec/app/spec/library/zlib/deflate/flush_spec.rb +1 -0
  1567. data/spec/framework_spec/app/spec/library/zlib/deflate/initialize_copy_spec.rb +1 -0
  1568. data/spec/framework_spec/app/spec/library/zlib/deflate/new_spec.rb +1 -0
  1569. data/spec/framework_spec/app/spec/library/zlib/deflate/params_spec.rb +20 -0
  1570. data/spec/framework_spec/app/spec/library/zlib/deflate/set_dictionary_spec.rb +14 -0
  1571. data/spec/framework_spec/app/spec/library/zlib/gzipfile/close_spec.rb +23 -0
  1572. data/spec/framework_spec/app/spec/library/zlib/gzipfile/closed_spec.rb +17 -0
  1573. data/spec/framework_spec/app/spec/library/zlib/gzipfile/comment_spec.rb +27 -0
  1574. data/spec/framework_spec/app/spec/library/zlib/gzipfile/crc_spec.rb +1 -0
  1575. data/spec/framework_spec/app/spec/library/zlib/gzipfile/finish_spec.rb +1 -0
  1576. data/spec/framework_spec/app/spec/library/zlib/gzipfile/level_spec.rb +1 -0
  1577. data/spec/framework_spec/app/spec/library/zlib/gzipfile/mtime_spec.rb +1 -0
  1578. data/spec/framework_spec/app/spec/library/zlib/gzipfile/orig_name_spec.rb +27 -0
  1579. data/spec/framework_spec/app/spec/library/zlib/gzipfile/os_code_spec.rb +1 -0
  1580. data/spec/framework_spec/app/spec/library/zlib/gzipfile/sync_spec.rb +1 -0
  1581. data/spec/framework_spec/app/spec/library/zlib/gzipfile/to_io_spec.rb +1 -0
  1582. data/spec/framework_spec/app/spec/library/zlib/gzipfile/wrap_spec.rb +1 -0
  1583. data/spec/framework_spec/app/spec/library/zlib/gzipreader/each_byte_spec.rb +33 -0
  1584. data/spec/framework_spec/app/spec/library/zlib/gzipreader/each_line_spec.rb +1 -0
  1585. data/spec/framework_spec/app/spec/library/zlib/gzipreader/each_spec.rb +1 -0
  1586. data/spec/framework_spec/app/spec/library/zlib/gzipreader/eof_spec.rb +55 -0
  1587. data/spec/framework_spec/app/spec/library/zlib/gzipreader/getc_spec.rb +55 -0
  1588. data/spec/framework_spec/app/spec/library/zlib/gzipreader/gets_spec.rb +1 -0
  1589. data/spec/framework_spec/app/spec/library/zlib/gzipreader/lineno_spec.rb +1 -0
  1590. data/spec/framework_spec/app/spec/library/zlib/gzipreader/new_spec.rb +1 -0
  1591. data/spec/framework_spec/app/spec/library/zlib/gzipreader/open_spec.rb +1 -0
  1592. data/spec/framework_spec/app/spec/library/zlib/gzipreader/pos_spec.rb +26 -0
  1593. data/spec/framework_spec/app/spec/library/zlib/gzipreader/read_spec.rb +58 -0
  1594. data/spec/framework_spec/app/spec/library/zlib/gzipreader/readchar_spec.rb +1 -0
  1595. data/spec/framework_spec/app/spec/library/zlib/gzipreader/readline_spec.rb +1 -0
  1596. data/spec/framework_spec/app/spec/library/zlib/gzipreader/readlines_spec.rb +1 -0
  1597. data/spec/framework_spec/app/spec/library/zlib/gzipreader/rewind_spec.rb +47 -0
  1598. data/spec/framework_spec/app/spec/library/zlib/gzipreader/tell_spec.rb +1 -0
  1599. data/spec/framework_spec/app/spec/library/zlib/gzipreader/ungetc_spec.rb +1 -0
  1600. data/spec/framework_spec/app/spec/library/zlib/gzipreader/unused_spec.rb +1 -0
  1601. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/append_spec.rb +1 -0
  1602. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/comment_spec.rb +1 -0
  1603. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/flush_spec.rb +1 -0
  1604. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/mtime_spec.rb +41 -0
  1605. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/new_spec.rb +1 -0
  1606. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/open_spec.rb +1 -0
  1607. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/orig_name_spec.rb +1 -0
  1608. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/pos_spec.rb +1 -0
  1609. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/print_spec.rb +1 -0
  1610. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/printf_spec.rb +1 -0
  1611. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/putc_spec.rb +1 -0
  1612. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/puts_spec.rb +1 -0
  1613. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/tell_spec.rb +1 -0
  1614. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/write_spec.rb +24 -0
  1615. data/spec/framework_spec/app/spec/library/zlib/inflate/append_spec.rb +60 -0
  1616. data/spec/framework_spec/app/spec/library/zlib/inflate/inflate_spec.rb +109 -0
  1617. data/spec/framework_spec/app/spec/library/zlib/inflate/new_spec.rb +1 -0
  1618. data/spec/framework_spec/app/spec/library/zlib/inflate/set_dictionary_spec.rb +20 -0
  1619. data/spec/framework_spec/app/spec/library/zlib/inflate/sync_point_spec.rb +1 -0
  1620. data/spec/framework_spec/app/spec/library/zlib/inflate/sync_spec.rb +1 -0
  1621. data/spec/framework_spec/app/spec/library/zlib/zlib_version_spec.rb +1 -0
  1622. data/spec/framework_spec/app/spec/library/zlib/zstream/adler_spec.rb +1 -0
  1623. data/spec/framework_spec/app/spec/library/zlib/zstream/avail_in_spec.rb +1 -0
  1624. data/spec/framework_spec/app/spec/library/zlib/zstream/avail_out_spec.rb +1 -0
  1625. data/spec/framework_spec/app/spec/library/zlib/zstream/close_spec.rb +1 -0
  1626. data/spec/framework_spec/app/spec/library/zlib/zstream/closed_spec.rb +1 -0
  1627. data/spec/framework_spec/app/spec/library/zlib/zstream/data_type_spec.rb +1 -0
  1628. data/spec/framework_spec/app/spec/library/zlib/zstream/end_spec.rb +1 -0
  1629. data/spec/framework_spec/app/spec/library/zlib/zstream/ended_spec.rb +1 -0
  1630. data/spec/framework_spec/app/spec/library/zlib/zstream/finish_spec.rb +1 -0
  1631. data/spec/framework_spec/app/spec/library/zlib/zstream/finished_spec.rb +1 -0
  1632. data/spec/framework_spec/app/spec/library/zlib/zstream/flush_next_in_spec.rb +1 -0
  1633. data/spec/framework_spec/app/spec/library/zlib/zstream/flush_next_out_spec.rb +16 -0
  1634. data/spec/framework_spec/app/spec/library/zlib/zstream/reset_spec.rb +1 -0
  1635. data/spec/framework_spec/app/spec/library/zlib/zstream/stream_end_spec.rb +1 -0
  1636. data/spec/framework_spec/app/spec/library/zlib/zstream/total_in_spec.rb +1 -0
  1637. data/spec/framework_spec/app/spec/library/zlib/zstream/total_out_spec.rb +1 -0
  1638. data/spec/framework_spec/app/spec/shared/file/executable_real.rb +1 -1
  1639. data/spec/framework_spec/app/spec/shared/file/file.rb +1 -1
  1640. data/spec/framework_spec/app/spec_runner.rb +6 -5
  1641. data/spec/framework_spec/build.yml +4 -1
  1642. data/spec/phone_spec/app/BlobBulkTest/blob_bulk_test.png +0 -0
  1643. data/spec/phone_spec/app/BlobBulkTest/blob_bulk_test.rb +11 -0
  1644. data/spec/phone_spec/app/BlobBulkTest_s/blob_bulk_test_s.png +0 -0
  1645. data/spec/phone_spec/app/BlobBulkTest_s/blob_bulk_test_s.rb +11 -0
  1646. data/spec/phone_spec/app/Data/invalid_import_db.zip +0 -0
  1647. data/spec/phone_spec/app/Data/valid_import_db.zip +0 -0
  1648. data/spec/phone_spec/app/spec/asynchttp_spec.rb +1 -1
  1649. data/spec/phone_spec/app/spec/blob_bulksync_spec.rb +160 -0
  1650. data/spec/phone_spec/app/spec/bulksync_spec.rb +51 -1
  1651. data/spec/phone_spec/app/spec/bundle_update_spec.rb +85 -0
  1652. data/spec/phone_spec/app/spec/database_spec.rb +174 -0
  1653. data/spec/phone_spec/app/spec/events_spec.rb +4 -4
  1654. data/spec/phone_spec/app/spec/json_spec.rb +1 -1
  1655. data/spec/phone_spec/app/spec/rho_spec.rb +88 -12
  1656. data/spec/phone_spec/app/spec/rhofile_spec.rb +1 -1
  1657. data/spec/phone_spec/app/spec/rhom_object_spec.rb +8 -5
  1658. data/spec/phone_spec/app/spec/syncengine_spec.rb +281 -18
  1659. data/spec/phone_spec/app/spec/uri_spec.rb +5 -5
  1660. data/spec/phone_spec/app/spec_runner.rb +16 -9
  1661. data/spec/phone_spec/build.yml +2 -1
  1662. data/spec/phone_spec/public/file_for_replace.txt +1 -0
  1663. data/spec/phone_spec/public/file_to_remove.png +0 -0
  1664. data/spec/phone_spec/public/folder_to_remove.png +0 -0
  1665. data/spec/phone_spec/public/folder_to_remove/switch.png +0 -0
  1666. data/spec/phone_spec/public/partial_update_bundle/upgrade_bundle_partial.zip +0 -0
  1667. data/spec/phone_spec/upgrade_package_add_files.txt +2 -0
  1668. data/spec/phone_spec/upgrade_package_remove_files.txt +2 -0
  1669. data/version +1 -1
  1670. metadata +1384 -12
  1671. data/Manifest.txt +0 -8054
  1672. data/doc/alert-api.txt +0 -51
  1673. data/doc/files.txt +0 -4
  1674. data/doc/rhodes-api.txt +0 -147
  1675. data/doc/scanner.txt +0 -507
  1676. data/doc/timer-api.txt +0 -39
  1677. data/doc/tutorial.txt +0 -130
  1678. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/WebkitExtension.java +0 -53
@@ -0,0 +1,3762 @@
1
+ /*
2
+ * zlib.c - An interface for zlib.
3
+ *
4
+ * Copyright (C) UENO Katsuhiro 2000-2003
5
+ *
6
+ * $Id: zlib.c 32388 2011-07-03 13:41:50Z yugui $
7
+ */
8
+
9
+ #include <ruby.h>
10
+ #include "zlib.h"
11
+ #include <time.h>
12
+ #include <ruby/encoding.h>
13
+
14
+ #ifdef HAVE_VALGRIND_MEMCHECK_H
15
+ # include <valgrind/memcheck.h>
16
+ # ifndef VALGRIND_MAKE_MEM_DEFINED
17
+ # define VALGRIND_MAKE_MEM_DEFINED(p, n) VALGRIND_MAKE_READABLE(p, n)
18
+ # endif
19
+ # ifndef VALGRIND_MAKE_MEM_UNDEFINED
20
+ # define VALGRIND_MAKE_MEM_UNDEFINED(p, n) VALGRIND_MAKE_WRITABLE(p, n)
21
+ # endif
22
+ #else
23
+ # define VALGRIND_MAKE_MEM_DEFINED(p, n) /* empty */
24
+ # define VALGRIND_MAKE_MEM_UNDEFINED(p, n) /* empty */
25
+ #endif
26
+
27
+ #define RUBY_ZLIB_VERSION "0.6.0"
28
+
29
+
30
+ #define OBJ_IS_FREED(val) (RBASIC(val)->flags == 0)
31
+
32
+ #ifndef GZIP_SUPPORT
33
+ #define GZIP_SUPPORT 1
34
+ #endif
35
+
36
+ /* from zutil.h */
37
+ #ifndef DEF_MEM_LEVEL
38
+ #if MAX_MEM_LEVEL >= 8
39
+ #define DEF_MEM_LEVEL 8
40
+ #else
41
+ #define DEF_MEM_LEVEL MAX_MEM_LEVEL
42
+ #endif
43
+ #endif
44
+
45
+
46
+ /*--------- Prototypes --------*/
47
+
48
+ static NORETURN(void raise_zlib_error(int, const char*));
49
+ static VALUE rb_zlib_version(VALUE);
50
+ static VALUE do_checksum(int, VALUE*, uLong (*)(uLong, const Bytef*, uInt));
51
+ static VALUE rb_zlib_adler32(int, VALUE*, VALUE);
52
+ static VALUE rb_zlib_crc32(int, VALUE*, VALUE);
53
+ static VALUE rb_zlib_crc_table(VALUE);
54
+ static voidpf zlib_mem_alloc(voidpf, uInt, uInt);
55
+ static void zlib_mem_free(voidpf, voidpf);
56
+ static void finalizer_warn(const char*);
57
+
58
+ struct zstream;
59
+ struct zstream_funcs;
60
+ static void zstream_init(struct zstream*, const struct zstream_funcs*);
61
+ static void zstream_expand_buffer(struct zstream*);
62
+ static void zstream_expand_buffer_into(struct zstream*, unsigned int);
63
+ static void zstream_append_buffer(struct zstream*, const Bytef*, int);
64
+ static VALUE zstream_detach_buffer(struct zstream*);
65
+ static VALUE zstream_shift_buffer(struct zstream*, int);
66
+ static void zstream_buffer_ungets(struct zstream*, const Bytef*, int);
67
+ static void zstream_buffer_ungetbyte(struct zstream*, int);
68
+ static void zstream_append_input(struct zstream*, const Bytef*, unsigned int);
69
+ static void zstream_discard_input(struct zstream*, unsigned int);
70
+ static void zstream_reset_input(struct zstream*);
71
+ static void zstream_passthrough_input(struct zstream*);
72
+ static VALUE zstream_detach_input(struct zstream*);
73
+ static void zstream_reset(struct zstream*);
74
+ static VALUE zstream_end(struct zstream*);
75
+ static void zstream_run(struct zstream*, Bytef*, uInt, int);
76
+ static VALUE zstream_sync(struct zstream*, Bytef*, uInt);
77
+ static void zstream_mark(struct zstream*);
78
+ static void zstream_free(struct zstream*);
79
+ static VALUE zstream_new(VALUE, const struct zstream_funcs*);
80
+ static struct zstream *get_zstream(VALUE);
81
+ static void zstream_finalize(struct zstream*);
82
+
83
+ static VALUE rb_zstream_end(VALUE);
84
+ static VALUE rb_zstream_reset(VALUE);
85
+ static VALUE rb_zstream_finish(VALUE);
86
+ static VALUE rb_zstream_flush_next_in(VALUE);
87
+ static VALUE rb_zstream_flush_next_out(VALUE);
88
+ static VALUE rb_zstream_avail_out(VALUE);
89
+ static VALUE rb_zstream_set_avail_out(VALUE, VALUE);
90
+ static VALUE rb_zstream_avail_in(VALUE);
91
+ static VALUE rb_zstream_total_in(VALUE);
92
+ static VALUE rb_zstream_total_out(VALUE);
93
+ static VALUE rb_zstream_data_type(VALUE);
94
+ static VALUE rb_zstream_adler(VALUE);
95
+ static VALUE rb_zstream_finished_p(VALUE);
96
+ static VALUE rb_zstream_closed_p(VALUE);
97
+
98
+ static VALUE rb_deflate_s_allocate(VALUE);
99
+ static VALUE rb_deflate_initialize(int, VALUE*, VALUE);
100
+ static VALUE rb_deflate_init_copy(VALUE, VALUE);
101
+ static VALUE deflate_run(VALUE);
102
+ static VALUE rb_deflate_s_deflate(int, VALUE*, VALUE);
103
+ static void do_deflate(struct zstream*, VALUE, int);
104
+ static VALUE rb_deflate_deflate(int, VALUE*, VALUE);
105
+ static VALUE rb_deflate_addstr(VALUE, VALUE);
106
+ static VALUE rb_deflate_flush(int, VALUE*, VALUE);
107
+ static VALUE rb_deflate_params(VALUE, VALUE, VALUE);
108
+ static VALUE rb_deflate_set_dictionary(VALUE, VALUE);
109
+
110
+ static VALUE inflate_run(VALUE);
111
+ static VALUE rb_inflate_s_allocate(VALUE);
112
+ static VALUE rb_inflate_initialize(int, VALUE*, VALUE);
113
+ static VALUE rb_inflate_s_inflate(VALUE, VALUE);
114
+ static void do_inflate(struct zstream*, VALUE);
115
+ static VALUE rb_inflate_inflate(VALUE, VALUE);
116
+ static VALUE rb_inflate_addstr(VALUE, VALUE);
117
+ static VALUE rb_inflate_sync(VALUE, VALUE);
118
+ static VALUE rb_inflate_sync_point_p(VALUE);
119
+ static VALUE rb_inflate_set_dictionary(VALUE, VALUE);
120
+
121
+ #if GZIP_SUPPORT
122
+ struct gzfile;
123
+ static void gzfile_mark(struct gzfile*);
124
+ static void gzfile_free(struct gzfile*);
125
+ static VALUE gzfile_new(VALUE, const struct zstream_funcs*, void (*) _((struct gzfile*)));
126
+ static void gzfile_reset(struct gzfile*);
127
+ static void gzfile_close(struct gzfile*, int);
128
+ static void gzfile_write_raw(struct gzfile*);
129
+ static VALUE gzfile_read_raw_partial(VALUE);
130
+ static VALUE gzfile_read_raw_rescue(VALUE);
131
+ static VALUE gzfile_read_raw(struct gzfile*);
132
+ static int gzfile_read_raw_ensure(struct gzfile*, int);
133
+ static char *gzfile_read_raw_until_zero(struct gzfile*, long);
134
+ static unsigned int gzfile_get16(const unsigned char*);
135
+ static unsigned long gzfile_get32(const unsigned char*);
136
+ static void gzfile_set32(unsigned long n, unsigned char*);
137
+ static void gzfile_make_header(struct gzfile*);
138
+ static void gzfile_make_footer(struct gzfile*);
139
+ static void gzfile_read_header(struct gzfile*);
140
+ static void gzfile_check_footer(struct gzfile*);
141
+ static void gzfile_write(struct gzfile*, Bytef*, uInt);
142
+ static long gzfile_read_more(struct gzfile*);
143
+ static void gzfile_calc_crc(struct gzfile*, VALUE);
144
+ static VALUE gzfile_read(struct gzfile*, int);
145
+ static VALUE gzfile_read_all(struct gzfile*);
146
+ static void gzfile_ungets(struct gzfile*, const Bytef*, int);
147
+ static void gzfile_ungetbyte(struct gzfile*, int);
148
+ static VALUE gzfile_writer_end_run(VALUE);
149
+ static void gzfile_writer_end(struct gzfile*);
150
+ static VALUE gzfile_reader_end_run(VALUE);
151
+ static void gzfile_reader_end(struct gzfile*);
152
+ static void gzfile_reader_rewind(struct gzfile*);
153
+ static VALUE gzfile_reader_get_unused(struct gzfile*);
154
+ static struct gzfile *get_gzfile(VALUE);
155
+ static VALUE gzfile_ensure_close(VALUE);
156
+ static VALUE rb_gzfile_s_wrap(int, VALUE*, VALUE);
157
+ static VALUE gzfile_s_open(int, VALUE*, VALUE, const char*);
158
+
159
+ static VALUE rb_gzfile_to_io(VALUE);
160
+ static VALUE rb_gzfile_crc(VALUE);
161
+ static VALUE rb_gzfile_mtime(VALUE);
162
+ static VALUE rb_gzfile_level(VALUE);
163
+ static VALUE rb_gzfile_os_code(VALUE);
164
+ static VALUE rb_gzfile_orig_name(VALUE);
165
+ static VALUE rb_gzfile_comment(VALUE);
166
+ static VALUE rb_gzfile_lineno(VALUE);
167
+ static VALUE rb_gzfile_set_lineno(VALUE, VALUE);
168
+ static VALUE rb_gzfile_set_mtime(VALUE, VALUE);
169
+ static VALUE rb_gzfile_set_orig_name(VALUE, VALUE);
170
+ static VALUE rb_gzfile_set_comment(VALUE, VALUE);
171
+ static VALUE rb_gzfile_close(VALUE);
172
+ static VALUE rb_gzfile_finish(VALUE);
173
+ static VALUE rb_gzfile_closed_p(VALUE);
174
+ static VALUE rb_gzfile_eof_p(VALUE);
175
+ static VALUE rb_gzfile_sync(VALUE);
176
+ static VALUE rb_gzfile_set_sync(VALUE, VALUE);
177
+ static VALUE rb_gzfile_total_in(VALUE);
178
+ static VALUE rb_gzfile_total_out(VALUE);
179
+ static VALUE rb_gzfile_path(VALUE);
180
+
181
+ static VALUE rb_gzwriter_s_allocate(VALUE);
182
+ static VALUE rb_gzwriter_s_open(int, VALUE*, VALUE);
183
+ static VALUE rb_gzwriter_initialize(int, VALUE*, VALUE);
184
+ static VALUE rb_gzwriter_flush(int, VALUE*, VALUE);
185
+ static VALUE rb_gzwriter_write(VALUE, VALUE);
186
+ static VALUE rb_gzwriter_putc(VALUE, VALUE);
187
+
188
+ static VALUE rb_gzreader_s_allocate(VALUE);
189
+ static VALUE rb_gzreader_s_open(int, VALUE*, VALUE);
190
+ static VALUE rb_gzreader_initialize(int, VALUE*, VALUE);
191
+ static VALUE rb_gzreader_rewind(VALUE);
192
+ static VALUE rb_gzreader_unused(VALUE);
193
+ static VALUE rb_gzreader_read(int, VALUE*, VALUE);
194
+ static VALUE rb_gzreader_getc(VALUE);
195
+ static VALUE rb_gzreader_readchar(VALUE);
196
+ static VALUE rb_gzreader_each_byte(VALUE);
197
+ static VALUE rb_gzreader_ungetc(VALUE, VALUE);
198
+ static VALUE rb_gzreader_ungetbyte(VALUE, VALUE);
199
+ static void gzreader_skip_linebreaks(struct gzfile*);
200
+ static VALUE gzreader_gets(int, VALUE*, VALUE);
201
+ static VALUE rb_gzreader_gets(int, VALUE*, VALUE);
202
+ static VALUE rb_gzreader_readline(int, VALUE*, VALUE);
203
+ static VALUE rb_gzreader_each(int, VALUE*, VALUE);
204
+ static VALUE rb_gzreader_readlines(int, VALUE*, VALUE);
205
+ #endif /* GZIP_SUPPORT */
206
+
207
+
208
+ void Init_zlib(void);
209
+
210
+ int rb_io_extract_encoding_option(VALUE opt, rb_encoding **enc_p, rb_encoding **enc2_p);
211
+ VALUE rb_str_conv_enc_opts(VALUE, rb_encoding*, rb_encoding*, int, VALUE);
212
+
213
+ /*--------- Exceptions --------*/
214
+
215
+ static VALUE cZError, cStreamEnd, cNeedDict;
216
+ static VALUE cStreamError, cDataError, cMemError, cBufError, cVersionError;
217
+
218
+ static void
219
+ raise_zlib_error(int err, const char *msg)
220
+ {
221
+ VALUE exc;
222
+
223
+ if (!msg) {
224
+ msg = zError(err);
225
+ }
226
+
227
+ switch(err) {
228
+ case Z_STREAM_END:
229
+ exc = rb_exc_new2(cStreamEnd, msg);
230
+ break;
231
+ case Z_NEED_DICT:
232
+ exc = rb_exc_new2(cNeedDict, msg);
233
+ break;
234
+ case Z_STREAM_ERROR:
235
+ exc = rb_exc_new2(cStreamError, msg);
236
+ break;
237
+ case Z_DATA_ERROR:
238
+ exc = rb_exc_new2(cDataError, msg);
239
+ break;
240
+ case Z_BUF_ERROR:
241
+ exc = rb_exc_new2(cBufError, msg);
242
+ break;
243
+ case Z_VERSION_ERROR:
244
+ exc = rb_exc_new2(cVersionError, msg);
245
+ break;
246
+ case Z_MEM_ERROR:
247
+ exc = rb_exc_new2(cMemError, msg);
248
+ break;
249
+ case Z_ERRNO:
250
+ rb_sys_fail(msg);
251
+ /* no return */
252
+ default:
253
+ {
254
+ char buf[BUFSIZ];
255
+ snprintf(buf, BUFSIZ, "unknown zlib error %d: %s", err, msg);
256
+ exc = rb_exc_new2(cZError, buf);
257
+ }
258
+ }
259
+
260
+ rb_exc_raise(exc);
261
+ }
262
+
263
+
264
+ /*--- Warning (in finalizer) ---*/
265
+
266
+ static void
267
+ finalizer_warn(const char *msg)
268
+ {
269
+ fprintf(stderr, "zlib(finalizer): %s\n", msg);
270
+ }
271
+
272
+
273
+ /*-------- module Zlib --------*/
274
+
275
+ /*
276
+ * Returns the string which represents the version of zlib library.
277
+ */
278
+ static VALUE
279
+ rb_zlib_version(VALUE klass)
280
+ {
281
+ VALUE str;
282
+
283
+ str = rb_str_new2(zlibVersion());
284
+ OBJ_TAINT(str); /* for safe */
285
+ return str;
286
+ }
287
+
288
+ static VALUE
289
+ do_checksum(argc, argv, func)
290
+ int argc;
291
+ VALUE *argv;
292
+ uLong (*func)(uLong, const Bytef*, uInt);
293
+ {
294
+ VALUE str, vsum;
295
+ unsigned long sum;
296
+
297
+ rb_scan_args(argc, argv, "02", &str, &vsum);
298
+
299
+ if (!NIL_P(vsum)) {
300
+ sum = NUM2ULONG(vsum);
301
+ }
302
+ else if (NIL_P(str)) {
303
+ sum = 0;
304
+ }
305
+ else {
306
+ sum = func(0, Z_NULL, 0);
307
+ }
308
+
309
+ if (NIL_P(str)) {
310
+ sum = func(sum, Z_NULL, 0);
311
+ }
312
+ else {
313
+ StringValue(str);
314
+ sum = func(sum, (Bytef*)RSTRING_PTR(str), RSTRING_LEN(str));
315
+ }
316
+ return rb_uint2inum(sum);
317
+ }
318
+
319
+ /*
320
+ * call-seq: Zlib.adler32(string, adler)
321
+ *
322
+ * Calculates Adler-32 checksum for +string+, and returns updated value of
323
+ * +adler+. If +string+ is omitted, it returns the Adler-32 initial value. If
324
+ * +adler+ is omitted, it assumes that the initial value is given to +adler+.
325
+ *
326
+ * FIXME: expression.
327
+ */
328
+ static VALUE
329
+ rb_zlib_adler32(int argc, VALUE *argv, VALUE klass)
330
+ {
331
+ return do_checksum(argc, argv, adler32);
332
+ }
333
+
334
+ #ifdef HAVE_ADLER32_COMBINE
335
+ /*
336
+ * call-seq: Zlib.adler32_combine(adler1, adler2, len2)
337
+ *
338
+ * Combine two Adler-32 check values in to one. +alder1+ is the first Adler-32
339
+ * value, +adler2+ is the second Adler-32 value. +len2+ is the length of the
340
+ * string used to generate +adler2+.
341
+ *
342
+ */
343
+ static VALUE
344
+ rb_zlib_adler32_combine(VALUE klass, VALUE adler1, VALUE adler2, VALUE len2)
345
+ {
346
+ return ULONG2NUM(
347
+ adler32_combine(NUM2ULONG(adler1), NUM2ULONG(adler2), NUM2LONG(len2)));
348
+ }
349
+ #else
350
+ #define rb_zlib_adler32_combine rb_f_notimplement
351
+ #endif
352
+
353
+ /*
354
+ * call-seq: Zlib.crc32(string, adler)
355
+ *
356
+ * Calculates CRC checksum for +string+, and returns updated value of +crc+. If
357
+ * +string+ is omitted, it returns the CRC initial value. If +crc+ is omitted, it
358
+ * assumes that the initial value is given to +crc+.
359
+ *
360
+ * FIXME: expression.
361
+ */
362
+ static VALUE
363
+ rb_zlib_crc32(int argc, VALUE *argv, VALUE klass)
364
+ {
365
+ return do_checksum(argc, argv, crc32);
366
+ }
367
+
368
+ #ifdef HAVE_CRC32_COMBINE
369
+ /*
370
+ * call-seq: Zlib.crc32_combine(crc1, crc2, len2)
371
+ *
372
+ * Combine two CRC-32 check values in to one. +crc1+ is the first CRC-32
373
+ * value, +crc2+ is the second CRC-32 value. +len2+ is the length of the
374
+ * string used to generate +crc2+.
375
+ *
376
+ */
377
+ static VALUE
378
+ rb_zlib_crc32_combine(VALUE klass, VALUE crc1, VALUE crc2, VALUE len2)
379
+ {
380
+ return ULONG2NUM(
381
+ crc32_combine(NUM2ULONG(crc1), NUM2ULONG(crc2), NUM2LONG(len2)));
382
+ }
383
+ #else
384
+ #define rb_zlib_crc32_combine rb_f_notimplement
385
+ #endif
386
+
387
+ /*
388
+ * Returns the table for calculating CRC checksum as an array.
389
+ */
390
+ static VALUE
391
+ rb_zlib_crc_table(VALUE obj)
392
+ {
393
+ const unsigned long *crctbl;
394
+ VALUE dst;
395
+ int i;
396
+
397
+ crctbl = get_crc_table();
398
+ dst = rb_ary_new2(256);
399
+
400
+ for (i = 0; i < 256; i++) {
401
+ rb_ary_push(dst, rb_uint2inum(crctbl[i]));
402
+ }
403
+ return dst;
404
+ }
405
+
406
+
407
+
408
+ /*-------- zstream - internal APIs --------*/
409
+
410
+ struct zstream {
411
+ unsigned long flags;
412
+ VALUE buf;
413
+ long buf_filled;
414
+ VALUE input;
415
+ z_stream stream;
416
+ const struct zstream_funcs {
417
+ int (*reset)(z_streamp);
418
+ int (*end)(z_streamp);
419
+ int (*run)(z_streamp, int);
420
+ } *func;
421
+ };
422
+
423
+ #define ZSTREAM_FLAG_READY 0x1
424
+ #define ZSTREAM_FLAG_IN_STREAM 0x2
425
+ #define ZSTREAM_FLAG_FINISHED 0x4
426
+ #define ZSTREAM_FLAG_CLOSING 0x8
427
+ #define ZSTREAM_FLAG_UNUSED 0x10
428
+
429
+ #define ZSTREAM_READY(z) ((z)->flags |= ZSTREAM_FLAG_READY)
430
+ #define ZSTREAM_IS_READY(z) ((z)->flags & ZSTREAM_FLAG_READY)
431
+ #define ZSTREAM_IS_FINISHED(z) ((z)->flags & ZSTREAM_FLAG_FINISHED)
432
+ #define ZSTREAM_IS_CLOSING(z) ((z)->flags & ZSTREAM_FLAG_CLOSING)
433
+
434
+ /* I think that more better value should be found,
435
+ but I gave up finding it. B) */
436
+ #define ZSTREAM_INITIAL_BUFSIZE 1024
437
+ #define ZSTREAM_AVAIL_OUT_STEP_MAX 16384
438
+ #define ZSTREAM_AVAIL_OUT_STEP_MIN 2048
439
+
440
+ static const struct zstream_funcs deflate_funcs = {
441
+ deflateReset, deflateEnd, deflate,
442
+ };
443
+
444
+ static const struct zstream_funcs inflate_funcs = {
445
+ inflateReset, inflateEnd, inflate,
446
+ };
447
+
448
+
449
+ static voidpf
450
+ zlib_mem_alloc(voidpf opaque, uInt items, uInt size)
451
+ {
452
+ voidpf p = xmalloc(items * size);
453
+ /* zlib FAQ: Valgrind (or some similar memory access checker) says that
454
+ deflate is performing a conditional jump that depends on an
455
+ uninitialized value. Isn't that a bug?
456
+ http://www.zlib.net/zlib_faq.html#faq36 */
457
+ VALGRIND_MAKE_MEM_DEFINED(p, items * size);
458
+ return p;
459
+ }
460
+
461
+ static void
462
+ zlib_mem_free(voidpf opaque, voidpf address)
463
+ {
464
+ xfree(address);
465
+ }
466
+
467
+ static void
468
+ zstream_init(struct zstream *z, const struct zstream_funcs *func)
469
+ {
470
+ z->flags = 0;
471
+ z->buf = Qnil;
472
+ z->buf_filled = 0;
473
+ z->input = Qnil;
474
+ z->stream.zalloc = zlib_mem_alloc;
475
+ z->stream.zfree = zlib_mem_free;
476
+ z->stream.opaque = Z_NULL;
477
+ z->stream.msg = Z_NULL;
478
+ z->stream.next_in = Z_NULL;
479
+ z->stream.avail_in = 0;
480
+ z->stream.next_out = Z_NULL;
481
+ z->stream.avail_out = 0;
482
+ z->func = func;
483
+ }
484
+
485
+ #define zstream_init_deflate(z) zstream_init((z), &deflate_funcs)
486
+ #define zstream_init_inflate(z) zstream_init((z), &inflate_funcs)
487
+
488
+ static void
489
+ zstream_expand_buffer(struct zstream *z)
490
+ {
491
+ long inc;
492
+
493
+ if (NIL_P(z->buf)) {
494
+ /* I uses rb_str_new here not rb_str_buf_new because
495
+ rb_str_buf_new makes a zero-length string. */
496
+ z->buf = rb_str_new(0, ZSTREAM_INITIAL_BUFSIZE);
497
+ z->buf_filled = 0;
498
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf);
499
+ z->stream.avail_out = ZSTREAM_INITIAL_BUFSIZE;
500
+ RBASIC(z->buf)->klass = 0;
501
+ return;
502
+ }
503
+
504
+ if (RSTRING_LEN(z->buf) - z->buf_filled >= ZSTREAM_AVAIL_OUT_STEP_MAX) {
505
+ /* to keep other threads from freezing */
506
+ z->stream.avail_out = ZSTREAM_AVAIL_OUT_STEP_MAX;
507
+ }
508
+ else {
509
+ inc = z->buf_filled / 2;
510
+ if (inc < ZSTREAM_AVAIL_OUT_STEP_MIN) {
511
+ inc = ZSTREAM_AVAIL_OUT_STEP_MIN;
512
+ }
513
+ rb_str_resize(z->buf, z->buf_filled + inc);
514
+ z->stream.avail_out = (inc < ZSTREAM_AVAIL_OUT_STEP_MAX) ?
515
+ inc : ZSTREAM_AVAIL_OUT_STEP_MAX;
516
+ }
517
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
518
+ }
519
+
520
+ static void
521
+ zstream_expand_buffer_into(struct zstream *z, unsigned int size)
522
+ {
523
+ if (NIL_P(z->buf)) {
524
+ /* I uses rb_str_new here not rb_str_buf_new because
525
+ rb_str_buf_new makes a zero-length string. */
526
+ z->buf = rb_str_new(0, size);
527
+ z->buf_filled = 0;
528
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf);
529
+ z->stream.avail_out = size;
530
+ RBASIC(z->buf)->klass = 0;
531
+ }
532
+ else if (z->stream.avail_out != size) {
533
+ rb_str_resize(z->buf, z->buf_filled + size);
534
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
535
+ z->stream.avail_out = size;
536
+ }
537
+ }
538
+
539
+ static void
540
+ zstream_append_buffer(struct zstream *z, const Bytef *src, int len)
541
+ {
542
+ if (NIL_P(z->buf)) {
543
+ z->buf = rb_str_buf_new(len);
544
+ rb_str_buf_cat(z->buf, (const char*)src, len);
545
+ z->buf_filled = len;
546
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf);
547
+ z->stream.avail_out = 0;
548
+ RBASIC(z->buf)->klass = 0;
549
+ return;
550
+ }
551
+
552
+ if (RSTRING_LEN(z->buf) < z->buf_filled + len) {
553
+ rb_str_resize(z->buf, z->buf_filled + len);
554
+ z->stream.avail_out = 0;
555
+ }
556
+ else {
557
+ if (z->stream.avail_out >= (uInt)len) {
558
+ z->stream.avail_out -= len;
559
+ }
560
+ else {
561
+ z->stream.avail_out = 0;
562
+ }
563
+ }
564
+ memcpy(RSTRING_PTR(z->buf) + z->buf_filled, src, len);
565
+ z->buf_filled += len;
566
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
567
+ }
568
+
569
+ #define zstream_append_buffer2(z,v) \
570
+ zstream_append_buffer((z),(Bytef*)RSTRING_PTR(v),RSTRING_LEN(v))
571
+
572
+ static VALUE
573
+ zstream_detach_buffer(struct zstream *z)
574
+ {
575
+ VALUE dst;
576
+
577
+ if (NIL_P(z->buf)) {
578
+ dst = rb_str_new(0, 0);
579
+ }
580
+ else {
581
+ dst = z->buf;
582
+ rb_str_resize(dst, z->buf_filled);
583
+ RBASIC(dst)->klass = rb_cString;
584
+ }
585
+
586
+ z->buf = Qnil;
587
+ z->buf_filled = 0;
588
+ z->stream.next_out = 0;
589
+ z->stream.avail_out = 0;
590
+ return dst;
591
+ }
592
+
593
+ static VALUE
594
+ zstream_shift_buffer(struct zstream *z, int len)
595
+ {
596
+ VALUE dst;
597
+
598
+ if (z->buf_filled <= len) {
599
+ return zstream_detach_buffer(z);
600
+ }
601
+
602
+ dst = rb_str_subseq(z->buf, 0, len);
603
+ RBASIC(dst)->klass = rb_cString;
604
+ z->buf_filled -= len;
605
+ memmove(RSTRING_PTR(z->buf), RSTRING_PTR(z->buf) + len,
606
+ z->buf_filled);
607
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
608
+ z->stream.avail_out = RSTRING_LEN(z->buf) - z->buf_filled;
609
+ if (z->stream.avail_out > ZSTREAM_AVAIL_OUT_STEP_MAX) {
610
+ z->stream.avail_out = ZSTREAM_AVAIL_OUT_STEP_MAX;
611
+ }
612
+
613
+ return dst;
614
+ }
615
+
616
+ static void
617
+ zstream_buffer_ungets(struct zstream *z, const Bytef *b, int len)
618
+ {
619
+ if (NIL_P(z->buf) || RSTRING_LEN(z->buf) - z->buf_filled == 0) {
620
+ zstream_expand_buffer_into(z, len);
621
+ }
622
+
623
+ memmove(RSTRING_PTR(z->buf) + len, RSTRING_PTR(z->buf), z->buf_filled);
624
+ memmove(RSTRING_PTR(z->buf), b, len);
625
+ z->buf_filled+=len;
626
+ if (z->stream.avail_out > 0) {
627
+ z->stream.next_out+=len;
628
+ z->stream.avail_out-=len;
629
+ }
630
+ }
631
+
632
+ static void
633
+ zstream_buffer_ungetbyte(struct zstream *z, int c)
634
+ {
635
+ if (NIL_P(z->buf) || RSTRING_LEN(z->buf) - z->buf_filled == 0) {
636
+ zstream_expand_buffer(z);
637
+ }
638
+
639
+ memmove(RSTRING_PTR(z->buf) + 1, RSTRING_PTR(z->buf), z->buf_filled);
640
+ RSTRING_PTR(z->buf)[0] = (char)c;
641
+ z->buf_filled++;
642
+ if (z->stream.avail_out > 0) {
643
+ z->stream.next_out++;
644
+ z->stream.avail_out--;
645
+ }
646
+ }
647
+
648
+ static void
649
+ zstream_append_input(struct zstream *z, const Bytef *src, unsigned int len)
650
+ {
651
+ if (len <= 0) return;
652
+
653
+ if (NIL_P(z->input)) {
654
+ z->input = rb_str_buf_new(len);
655
+ rb_str_buf_cat(z->input, (const char*)src, len);
656
+ RBASIC(z->input)->klass = 0;
657
+ }
658
+ else {
659
+ rb_str_buf_cat(z->input, (const char*)src, len);
660
+ }
661
+ }
662
+
663
+ #define zstream_append_input2(z,v)\
664
+ RB_GC_GUARD(v),\
665
+ zstream_append_input((z), (Bytef*)RSTRING_PTR(v), RSTRING_LEN(v))
666
+
667
+ static void
668
+ zstream_discard_input(struct zstream *z, unsigned int len)
669
+ {
670
+ if (NIL_P(z->input) || (unsigned int)RSTRING_LEN(z->input) <= len) {
671
+ z->input = Qnil;
672
+ }
673
+ else {
674
+ memmove(RSTRING_PTR(z->input), RSTRING_PTR(z->input) + len,
675
+ RSTRING_LEN(z->input) - len);
676
+ rb_str_resize(z->input, RSTRING_LEN(z->input) - len);
677
+ }
678
+ }
679
+
680
+ static void
681
+ zstream_reset_input(struct zstream *z)
682
+ {
683
+ z->input = Qnil;
684
+ }
685
+
686
+ static void
687
+ zstream_passthrough_input(struct zstream *z)
688
+ {
689
+ if (!NIL_P(z->input)) {
690
+ zstream_append_buffer2(z, z->input);
691
+ z->input = Qnil;
692
+ }
693
+ }
694
+
695
+ static VALUE
696
+ zstream_detach_input(struct zstream *z)
697
+ {
698
+ VALUE dst;
699
+
700
+ if (NIL_P(z->input)) {
701
+ dst = rb_str_new(0, 0);
702
+ }
703
+ else {
704
+ dst = z->input;
705
+ RBASIC(dst)->klass = rb_cString;
706
+ }
707
+ z->input = Qnil;
708
+ RBASIC(dst)->klass = rb_cString;
709
+ return dst;
710
+ }
711
+
712
+ static void
713
+ zstream_reset(struct zstream *z)
714
+ {
715
+ int err;
716
+
717
+ err = z->func->reset(&z->stream);
718
+ if (err != Z_OK) {
719
+ raise_zlib_error(err, z->stream.msg);
720
+ }
721
+ z->flags = ZSTREAM_FLAG_READY;
722
+ z->buf = Qnil;
723
+ z->buf_filled = 0;
724
+ z->stream.next_out = 0;
725
+ z->stream.avail_out = 0;
726
+ zstream_reset_input(z);
727
+ }
728
+
729
+ static VALUE
730
+ zstream_end(struct zstream *z)
731
+ {
732
+ int err;
733
+
734
+ if (!ZSTREAM_IS_READY(z)) {
735
+ rb_warning("attempt to close uninitialized zstream; ignored.");
736
+ return Qnil;
737
+ }
738
+ if (z->flags & ZSTREAM_FLAG_IN_STREAM) {
739
+ rb_warning("attempt to close unfinished zstream; reset forced.");
740
+ zstream_reset(z);
741
+ }
742
+
743
+ zstream_reset_input(z);
744
+ err = z->func->end(&z->stream);
745
+ if (err != Z_OK) {
746
+ raise_zlib_error(err, z->stream.msg);
747
+ }
748
+ z->flags = 0;
749
+ return Qnil;
750
+ }
751
+
752
+ static void
753
+ zstream_run(struct zstream *z, Bytef *src, uInt len, int flush)
754
+ {
755
+ uInt n;
756
+ int err;
757
+ volatile VALUE guard = Qnil;
758
+
759
+ if (NIL_P(z->input) && len == 0) {
760
+ z->stream.next_in = (Bytef*)"";
761
+ z->stream.avail_in = 0;
762
+ }
763
+ else {
764
+ zstream_append_input(z, src, len);
765
+ z->stream.next_in = (Bytef*)RSTRING_PTR(z->input);
766
+ z->stream.avail_in = RSTRING_LEN(z->input);
767
+ /* keep reference to `z->input' so as not to be garbage collected
768
+ after zstream_reset_input() and prevent `z->stream.next_in'
769
+ from dangling. */
770
+ guard = z->input;
771
+ }
772
+
773
+ if (z->stream.avail_out == 0) {
774
+ zstream_expand_buffer(z);
775
+ }
776
+
777
+ for (;;) {
778
+ /* VC allocates err and guard to same address. accessing err and guard
779
+ in same scope prevents it. */
780
+ RB_GC_GUARD(guard);
781
+ n = z->stream.avail_out;
782
+ err = z->func->run(&z->stream, flush);
783
+ z->buf_filled += n - z->stream.avail_out;
784
+ rb_thread_schedule();
785
+
786
+ if (err == Z_STREAM_END) {
787
+ z->flags &= ~ZSTREAM_FLAG_IN_STREAM;
788
+ z->flags |= ZSTREAM_FLAG_FINISHED;
789
+ break;
790
+ }
791
+ if (err != Z_OK) {
792
+ if (flush != Z_FINISH && err == Z_BUF_ERROR
793
+ && z->stream.avail_out > 0) {
794
+ z->flags |= ZSTREAM_FLAG_IN_STREAM;
795
+ break;
796
+ }
797
+ zstream_reset_input(z);
798
+ if (z->stream.avail_in > 0) {
799
+ zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
800
+ }
801
+ raise_zlib_error(err, z->stream.msg);
802
+ }
803
+ if (z->stream.avail_out > 0) {
804
+ z->flags |= ZSTREAM_FLAG_IN_STREAM;
805
+ break;
806
+ }
807
+ zstream_expand_buffer(z);
808
+ }
809
+
810
+ zstream_reset_input(z);
811
+ if (z->stream.avail_in > 0) {
812
+ zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
813
+ guard = Qnil; /* prevent tail call to make guard effective */
814
+ }
815
+ }
816
+
817
+ static VALUE
818
+ zstream_sync(struct zstream *z, Bytef *src, uInt len)
819
+ {
820
+ VALUE rest;
821
+ int err;
822
+
823
+ if (!NIL_P(z->input)) {
824
+ z->stream.next_in = (Bytef*)RSTRING_PTR(z->input);
825
+ z->stream.avail_in = RSTRING_LEN(z->input);
826
+ err = inflateSync(&z->stream);
827
+ if (err == Z_OK) {
828
+ zstream_discard_input(z,
829
+ RSTRING_LEN(z->input) - z->stream.avail_in);
830
+ zstream_append_input(z, src, len);
831
+ return Qtrue;
832
+ }
833
+ zstream_reset_input(z);
834
+ if (err != Z_DATA_ERROR) {
835
+ rest = rb_str_new((char*)z->stream.next_in, z->stream.avail_in);
836
+ raise_zlib_error(err, z->stream.msg);
837
+ }
838
+ }
839
+
840
+ if (len <= 0) return Qfalse;
841
+
842
+ z->stream.next_in = src;
843
+ z->stream.avail_in = len;
844
+ err = inflateSync(&z->stream);
845
+ if (err == Z_OK) {
846
+ zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
847
+ return Qtrue;
848
+ }
849
+ if (err != Z_DATA_ERROR) {
850
+ rest = rb_str_new((char*)z->stream.next_in, z->stream.avail_in);
851
+ raise_zlib_error(err, z->stream.msg);
852
+ }
853
+ return Qfalse;
854
+ }
855
+
856
+ static void
857
+ zstream_mark(struct zstream *z)
858
+ {
859
+ rb_gc_mark(z->buf);
860
+ rb_gc_mark(z->input);
861
+ }
862
+
863
+ static void
864
+ zstream_finalize(struct zstream *z)
865
+ {
866
+ int err = z->func->end(&z->stream);
867
+ if (err == Z_STREAM_ERROR)
868
+ finalizer_warn("the stream state was inconsistent.");
869
+ if (err == Z_DATA_ERROR)
870
+ finalizer_warn("the stream was freed prematurely.");
871
+ }
872
+
873
+ static void
874
+ zstream_free(struct zstream *z)
875
+ {
876
+ if (ZSTREAM_IS_READY(z)) {
877
+ zstream_finalize(z);
878
+ }
879
+ xfree(z);
880
+ }
881
+
882
+ static VALUE
883
+ zstream_new(VALUE klass, const struct zstream_funcs *funcs)
884
+ {
885
+ VALUE obj;
886
+ struct zstream *z;
887
+
888
+ obj = Data_Make_Struct(klass, struct zstream,
889
+ zstream_mark, zstream_free, z);
890
+ zstream_init(z, funcs);
891
+ return obj;
892
+ }
893
+
894
+ #define zstream_deflate_new(klass) zstream_new((klass), &deflate_funcs)
895
+ #define zstream_inflate_new(klass) zstream_new((klass), &inflate_funcs)
896
+
897
+ static struct zstream *
898
+ get_zstream(VALUE obj)
899
+ {
900
+ struct zstream *z;
901
+
902
+ Data_Get_Struct(obj, struct zstream, z);
903
+ if (!ZSTREAM_IS_READY(z)) {
904
+ rb_raise(cZError, "stream is not ready");
905
+ }
906
+ return z;
907
+ }
908
+
909
+
910
+ /* ------------------------------------------------------------------------- */
911
+
912
+ /*
913
+ * Document-class: Zlib::ZStream
914
+ *
915
+ * Zlib::ZStream is the abstract class for the stream which handles the
916
+ * compressed data. The operations are defined in the subclasses:
917
+ * Zlib::Deflate for compression, and Zlib::Inflate for decompression.
918
+ *
919
+ * An instance of Zlib::ZStream has one stream (struct zstream in the source)
920
+ * and two variable-length buffers which associated to the input (next_in) of
921
+ * the stream and the output (next_out) of the stream. In this document,
922
+ * "input buffer" means the buffer for input, and "output buffer" means the
923
+ * buffer for output.
924
+ *
925
+ * Data input into an instance of Zlib::ZStream are temporally stored into
926
+ * the end of input buffer, and then data in input buffer are processed from
927
+ * the beginning of the buffer until no more output from the stream is
928
+ * produced (i.e. until avail_out > 0 after processing). During processing,
929
+ * output buffer is allocated and expanded automatically to hold all output
930
+ * data.
931
+ *
932
+ * Some particular instance methods consume the data in output buffer and
933
+ * return them as a String.
934
+ *
935
+ * Here is an ascii art for describing above:
936
+ *
937
+ * +================ an instance of Zlib::ZStream ================+
938
+ * || ||
939
+ * || +--------+ +-------+ +--------+ ||
940
+ * || +--| output |<---------|zstream|<---------| input |<--+ ||
941
+ * || | | buffer | next_out+-------+next_in | buffer | | ||
942
+ * || | +--------+ +--------+ | ||
943
+ * || | | ||
944
+ * +===|======================================================|===+
945
+ * | |
946
+ * v |
947
+ * "output data" "input data"
948
+ *
949
+ * If an error occurs during processing input buffer, an exception which is a
950
+ * subclass of Zlib::Error is raised. At that time, both input and output
951
+ * buffer keep their conditions at the time when the error occurs.
952
+ *
953
+ * == Method Catalogue
954
+ *
955
+ * Many of the methods in this class are fairly low-level and unlikely to be
956
+ * of interest to users. In fact, users are unlikely to use this class
957
+ * directly; rather they will be interested in Zlib::Inflate and
958
+ * Zlib::Deflate.
959
+ *
960
+ * The higher level methods are listed below.
961
+ *
962
+ * - #total_in
963
+ * - #total_out
964
+ * - #data_type
965
+ * - #adler
966
+ * - #reset
967
+ * - #finish
968
+ * - #finished?
969
+ * - #close
970
+ * - #closed?
971
+ */
972
+
973
+ /*
974
+ * Closes the stream. All operations on the closed stream will raise an
975
+ * exception.
976
+ */
977
+ static VALUE
978
+ rb_zstream_end(VALUE obj)
979
+ {
980
+ zstream_end(get_zstream(obj));
981
+ return Qnil;
982
+ }
983
+
984
+ /*
985
+ * Resets and initializes the stream. All data in both input and output buffer
986
+ * are discarded.
987
+ */
988
+ static VALUE
989
+ rb_zstream_reset(VALUE obj)
990
+ {
991
+ zstream_reset(get_zstream(obj));
992
+ return Qnil;
993
+ }
994
+
995
+ /*
996
+ * Finishes the stream and flushes output buffer. See Zlib::Deflate#finish and
997
+ * Zlib::Inflate#finish for details of this behavior.
998
+ */
999
+ static VALUE
1000
+ rb_zstream_finish(VALUE obj)
1001
+ {
1002
+ struct zstream *z = get_zstream(obj);
1003
+ VALUE dst;
1004
+
1005
+ zstream_run(z, (Bytef*)"", 0, Z_FINISH);
1006
+ dst = zstream_detach_buffer(z);
1007
+
1008
+ OBJ_INFECT(dst, obj);
1009
+ return dst;
1010
+ }
1011
+
1012
+ /*
1013
+ * Flushes input buffer and returns all data in that buffer.
1014
+ */
1015
+ static VALUE
1016
+ rb_zstream_flush_next_in(VALUE obj)
1017
+ {
1018
+ struct zstream *z;
1019
+ VALUE dst;
1020
+
1021
+ Data_Get_Struct(obj, struct zstream, z);
1022
+ dst = zstream_detach_input(z);
1023
+ OBJ_INFECT(dst, obj);
1024
+ return dst;
1025
+ }
1026
+
1027
+ /*
1028
+ * Flushes output buffer and returns all data in that buffer.
1029
+ */
1030
+ static VALUE
1031
+ rb_zstream_flush_next_out(VALUE obj)
1032
+ {
1033
+ struct zstream *z;
1034
+ VALUE dst;
1035
+
1036
+ Data_Get_Struct(obj, struct zstream, z);
1037
+ dst = zstream_detach_buffer(z);
1038
+ OBJ_INFECT(dst, obj);
1039
+ return dst;
1040
+ }
1041
+
1042
+ /*
1043
+ * Returns number of bytes of free spaces in output buffer. Because the free
1044
+ * space is allocated automatically, this method returns 0 normally.
1045
+ */
1046
+ static VALUE
1047
+ rb_zstream_avail_out(VALUE obj)
1048
+ {
1049
+ struct zstream *z;
1050
+ Data_Get_Struct(obj, struct zstream, z);
1051
+ return rb_uint2inum(z->stream.avail_out);
1052
+ }
1053
+
1054
+ /*
1055
+ * Allocates +size+ bytes of free space in the output buffer. If there are more
1056
+ * than +size+ bytes already in the buffer, the buffer is truncated. Because
1057
+ * free space is allocated automatically, you usually don't need to use this
1058
+ * method.
1059
+ */
1060
+ static VALUE
1061
+ rb_zstream_set_avail_out(VALUE obj, VALUE size)
1062
+ {
1063
+ struct zstream *z = get_zstream(obj);
1064
+
1065
+ Check_Type(size, T_FIXNUM);
1066
+ zstream_expand_buffer_into(z, FIX2INT(size));
1067
+ return size;
1068
+ }
1069
+
1070
+ /*
1071
+ * Returns bytes of data in the input buffer. Normally, returns 0.
1072
+ */
1073
+ static VALUE
1074
+ rb_zstream_avail_in(VALUE obj)
1075
+ {
1076
+ struct zstream *z;
1077
+ Data_Get_Struct(obj, struct zstream, z);
1078
+ return INT2FIX(NIL_P(z->input) ? 0 : (int)(RSTRING_LEN(z->input)));
1079
+ }
1080
+
1081
+ /*
1082
+ * Returns the total bytes of the input data to the stream. FIXME
1083
+ */
1084
+ static VALUE
1085
+ rb_zstream_total_in(VALUE obj)
1086
+ {
1087
+ return rb_uint2inum(get_zstream(obj)->stream.total_in);
1088
+ }
1089
+
1090
+ /*
1091
+ * Returns the total bytes of the output data from the stream. FIXME
1092
+ */
1093
+ static VALUE
1094
+ rb_zstream_total_out(VALUE obj)
1095
+ {
1096
+ return rb_uint2inum(get_zstream(obj)->stream.total_out);
1097
+ }
1098
+
1099
+ /*
1100
+ * Guesses the type of the data which have been inputed into the stream. The
1101
+ * returned value is either <tt>Zlib::BINARY</tt>, <tt>Zlib::ASCII</tt>, or
1102
+ * <tt>Zlib::UNKNOWN</tt>.
1103
+ */
1104
+ static VALUE
1105
+ rb_zstream_data_type(VALUE obj)
1106
+ {
1107
+ return INT2FIX(get_zstream(obj)->stream.data_type);
1108
+ }
1109
+
1110
+ /*
1111
+ * Returns the adler-32 checksum.
1112
+ */
1113
+ static VALUE
1114
+ rb_zstream_adler(VALUE obj)
1115
+ {
1116
+ return rb_uint2inum(get_zstream(obj)->stream.adler);
1117
+ }
1118
+
1119
+ /*
1120
+ * Returns true if the stream is finished.
1121
+ */
1122
+ static VALUE
1123
+ rb_zstream_finished_p(VALUE obj)
1124
+ {
1125
+ return ZSTREAM_IS_FINISHED(get_zstream(obj)) ? Qtrue : Qfalse;
1126
+ }
1127
+
1128
+ /*
1129
+ * Returns true if the stream is closed.
1130
+ */
1131
+ static VALUE
1132
+ rb_zstream_closed_p(VALUE obj)
1133
+ {
1134
+ struct zstream *z;
1135
+ Data_Get_Struct(obj, struct zstream, z);
1136
+ return ZSTREAM_IS_READY(z) ? Qfalse : Qtrue;
1137
+ }
1138
+
1139
+
1140
+ /* ------------------------------------------------------------------------- */
1141
+
1142
+ /*
1143
+ * Document-class: Zlib::Deflate
1144
+ *
1145
+ * Zlib::Deflate is the class for compressing data. See Zlib::Stream for more
1146
+ * information.
1147
+ */
1148
+
1149
+ #define FIXNUMARG(val, ifnil) \
1150
+ (NIL_P((val)) ? (ifnil) \
1151
+ : ((void)Check_Type((val), T_FIXNUM), FIX2INT((val))))
1152
+
1153
+ #define ARG_LEVEL(val) FIXNUMARG((val), Z_DEFAULT_COMPRESSION)
1154
+ #define ARG_WBITS(val) FIXNUMARG((val), MAX_WBITS)
1155
+ #define ARG_MEMLEVEL(val) FIXNUMARG((val), DEF_MEM_LEVEL)
1156
+ #define ARG_STRATEGY(val) FIXNUMARG((val), Z_DEFAULT_STRATEGY)
1157
+ #define ARG_FLUSH(val) FIXNUMARG((val), Z_NO_FLUSH)
1158
+
1159
+
1160
+ static VALUE
1161
+ rb_deflate_s_allocate(VALUE klass)
1162
+ {
1163
+ return zstream_deflate_new(klass);
1164
+ }
1165
+
1166
+ /*
1167
+ * call-seq: Zlib::Deflate.new(level=nil, windowBits=nil, memlevel=nil, strategy=nil)
1168
+ *
1169
+ * Creates a new deflate stream for compression. See zlib.h for details of
1170
+ * each argument. If an argument is nil, the default value of that argument is
1171
+ * used.
1172
+ *
1173
+ * TODO: document better!
1174
+ */
1175
+ static VALUE
1176
+ rb_deflate_initialize(int argc, VALUE *argv, VALUE obj)
1177
+ {
1178
+ struct zstream *z;
1179
+ VALUE level, wbits, memlevel, strategy;
1180
+ int err;
1181
+
1182
+ rb_scan_args(argc, argv, "04", &level, &wbits, &memlevel, &strategy);
1183
+ Data_Get_Struct(obj, struct zstream, z);
1184
+
1185
+ err = deflateInit2(&z->stream, ARG_LEVEL(level), Z_DEFLATED,
1186
+ ARG_WBITS(wbits), ARG_MEMLEVEL(memlevel),
1187
+ ARG_STRATEGY(strategy));
1188
+ if (err != Z_OK) {
1189
+ raise_zlib_error(err, z->stream.msg);
1190
+ }
1191
+ ZSTREAM_READY(z);
1192
+
1193
+ return obj;
1194
+ }
1195
+
1196
+ /*
1197
+ * Duplicates the deflate stream.
1198
+ */
1199
+ static VALUE
1200
+ rb_deflate_init_copy(VALUE self, VALUE orig)
1201
+ {
1202
+ struct zstream *z1, *z2;
1203
+ int err;
1204
+
1205
+ Data_Get_Struct(self, struct zstream, z1);
1206
+ z2 = get_zstream(orig);
1207
+
1208
+ err = deflateCopy(&z1->stream, &z2->stream);
1209
+ if (err != Z_OK) {
1210
+ raise_zlib_error(err, 0);
1211
+ }
1212
+ z1->input = NIL_P(z2->input) ? Qnil : rb_str_dup(z2->input);
1213
+ z1->buf = NIL_P(z2->buf) ? Qnil : rb_str_dup(z2->buf);
1214
+ z1->buf_filled = z2->buf_filled;
1215
+ z1->flags = z2->flags;
1216
+
1217
+ return self;
1218
+ }
1219
+
1220
+ static VALUE
1221
+ deflate_run(VALUE args)
1222
+ {
1223
+ struct zstream *z = (struct zstream*)((VALUE*)args)[0];
1224
+ VALUE src = ((VALUE*)args)[1];
1225
+
1226
+ zstream_run(z, (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src), Z_FINISH);
1227
+ return zstream_detach_buffer(z);
1228
+ }
1229
+
1230
+ /*
1231
+ * call-seq: Zlib::Deflate.deflate(string[, level])
1232
+ *
1233
+ * Compresses the given +string+. Valid values of level are
1234
+ * <tt>Zlib::NO_COMPRESSION</tt>, <tt>Zlib::BEST_SPEED</tt>,
1235
+ * <tt>Zlib::BEST_COMPRESSION</tt>, <tt>Zlib::DEFAULT_COMPRESSION</tt>, and an
1236
+ * integer from 0 to 9.
1237
+ *
1238
+ * This method is almost equivalent to the following code:
1239
+ *
1240
+ * def deflate(string, level)
1241
+ * z = Zlib::Deflate.new(level)
1242
+ * dst = z.deflate(string, Zlib::FINISH)
1243
+ * z.close
1244
+ * dst
1245
+ * end
1246
+ *
1247
+ * TODO: what's default value of +level+?
1248
+ *
1249
+ */
1250
+ static VALUE
1251
+ rb_deflate_s_deflate(int argc, VALUE *argv, VALUE klass)
1252
+ {
1253
+ struct zstream z;
1254
+ VALUE src, level, dst, args[2];
1255
+ int err, lev;
1256
+
1257
+ rb_scan_args(argc, argv, "11", &src, &level);
1258
+
1259
+ lev = ARG_LEVEL(level);
1260
+ StringValue(src);
1261
+ zstream_init_deflate(&z);
1262
+ err = deflateInit(&z.stream, lev);
1263
+ if (err != Z_OK) {
1264
+ raise_zlib_error(err, z.stream.msg);
1265
+ }
1266
+ ZSTREAM_READY(&z);
1267
+
1268
+ args[0] = (VALUE)&z;
1269
+ args[1] = src;
1270
+ dst = rb_ensure(deflate_run, (VALUE)args, zstream_end, (VALUE)&z);
1271
+
1272
+ OBJ_INFECT(dst, src);
1273
+ return dst;
1274
+ }
1275
+
1276
+ static void
1277
+ do_deflate(struct zstream *z, VALUE src, int flush)
1278
+ {
1279
+ if (NIL_P(src)) {
1280
+ zstream_run(z, (Bytef*)"", 0, Z_FINISH);
1281
+ return;
1282
+ }
1283
+ StringValue(src);
1284
+ if (flush != Z_NO_FLUSH || RSTRING_LEN(src) > 0) { /* prevent BUF_ERROR */
1285
+ zstream_run(z, (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src), flush);
1286
+ }
1287
+ }
1288
+
1289
+ /*
1290
+ * call-seq: deflate(string[, flush])
1291
+ *
1292
+ * Inputs +string+ into the deflate stream and returns the output from the
1293
+ * stream. On calling this method, both the input and the output buffers of
1294
+ * the stream are flushed. If +string+ is nil, this method finishes the
1295
+ * stream, just like Zlib::ZStream#finish.
1296
+ *
1297
+ * The value of +flush+ should be either <tt>Zlib::NO_FLUSH</tt>,
1298
+ * <tt>Zlib::SYNC_FLUSH</tt>, <tt>Zlib::FULL_FLUSH</tt>, or
1299
+ * <tt>Zlib::FINISH</tt>. See zlib.h for details.
1300
+ *
1301
+ * TODO: document better!
1302
+ */
1303
+ static VALUE
1304
+ rb_deflate_deflate(int argc, VALUE *argv, VALUE obj)
1305
+ {
1306
+ struct zstream *z = get_zstream(obj);
1307
+ VALUE src, flush, dst;
1308
+
1309
+ rb_scan_args(argc, argv, "11", &src, &flush);
1310
+ OBJ_INFECT(obj, src);
1311
+ do_deflate(z, src, ARG_FLUSH(flush));
1312
+ dst = zstream_detach_buffer(z);
1313
+
1314
+ OBJ_INFECT(dst, obj);
1315
+ return dst;
1316
+ }
1317
+
1318
+ /*
1319
+ * call-seq: << string
1320
+ *
1321
+ * Inputs +string+ into the deflate stream just like Zlib::Deflate#deflate, but
1322
+ * returns the Zlib::Deflate object itself. The output from the stream is
1323
+ * preserved in output buffer.
1324
+ */
1325
+ static VALUE
1326
+ rb_deflate_addstr(VALUE obj, VALUE src)
1327
+ {
1328
+ OBJ_INFECT(obj, src);
1329
+ do_deflate(get_zstream(obj), src, Z_NO_FLUSH);
1330
+ return obj;
1331
+ }
1332
+
1333
+ /*
1334
+ * call-seq: flush(flush)
1335
+ *
1336
+ * This method is equivalent to <tt>deflate('', flush)</tt>. If flush is omitted,
1337
+ * <tt>Zlib::SYNC_FLUSH</tt> is used as flush. This method is just provided
1338
+ * to improve the readability of your Ruby program.
1339
+ *
1340
+ * TODO: document better!
1341
+ */
1342
+ static VALUE
1343
+ rb_deflate_flush(int argc, VALUE *argv, VALUE obj)
1344
+ {
1345
+ struct zstream *z = get_zstream(obj);
1346
+ VALUE v_flush, dst;
1347
+ int flush;
1348
+
1349
+ rb_scan_args(argc, argv, "01", &v_flush);
1350
+ flush = FIXNUMARG(v_flush, Z_SYNC_FLUSH);
1351
+ if (flush != Z_NO_FLUSH) { /* prevent Z_BUF_ERROR */
1352
+ zstream_run(z, (Bytef*)"", 0, flush);
1353
+ }
1354
+ dst = zstream_detach_buffer(z);
1355
+
1356
+ OBJ_INFECT(dst, obj);
1357
+ return dst;
1358
+ }
1359
+
1360
+ /*
1361
+ * call-seq: params(level, strategy)
1362
+ *
1363
+ * Changes the parameters of the deflate stream. See zlib.h for details. The
1364
+ * output from the stream by changing the params is preserved in output
1365
+ * buffer.
1366
+ *
1367
+ * TODO: document better!
1368
+ */
1369
+ static VALUE
1370
+ rb_deflate_params(VALUE obj, VALUE v_level, VALUE v_strategy)
1371
+ {
1372
+ struct zstream *z = get_zstream(obj);
1373
+ int level, strategy;
1374
+ int err;
1375
+ uInt n;
1376
+
1377
+ level = ARG_LEVEL(v_level);
1378
+ strategy = ARG_STRATEGY(v_strategy);
1379
+
1380
+ n = z->stream.avail_out;
1381
+ err = deflateParams(&z->stream, level, strategy);
1382
+ z->buf_filled += n - z->stream.avail_out;
1383
+ while (err == Z_BUF_ERROR) {
1384
+ rb_warning("deflateParams() returned Z_BUF_ERROR");
1385
+ zstream_expand_buffer(z);
1386
+ n = z->stream.avail_out;
1387
+ err = deflateParams(&z->stream, level, strategy);
1388
+ z->buf_filled += n - z->stream.avail_out;
1389
+ }
1390
+ if (err != Z_OK) {
1391
+ raise_zlib_error(err, z->stream.msg);
1392
+ }
1393
+
1394
+ return Qnil;
1395
+ }
1396
+
1397
+ /*
1398
+ * call-seq: set_dictionary(string)
1399
+ *
1400
+ * Sets the preset dictionary and returns +string+. This method is available
1401
+ * just only after Zlib::Deflate.new or Zlib::ZStream#reset method was called.
1402
+ * See zlib.h for details.
1403
+ *
1404
+ * TODO: document better!
1405
+ */
1406
+ static VALUE
1407
+ rb_deflate_set_dictionary(VALUE obj, VALUE dic)
1408
+ {
1409
+ struct zstream *z = get_zstream(obj);
1410
+ VALUE src = dic;
1411
+ int err;
1412
+
1413
+ OBJ_INFECT(obj, dic);
1414
+ StringValue(src);
1415
+ err = deflateSetDictionary(&z->stream,
1416
+ (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src));
1417
+ if (err != Z_OK) {
1418
+ raise_zlib_error(err, z->stream.msg);
1419
+ }
1420
+
1421
+ return dic;
1422
+ }
1423
+
1424
+
1425
+ /* ------------------------------------------------------------------------- */
1426
+
1427
+ /*
1428
+ * Document-class: Zlib::Inflate
1429
+ *
1430
+ * Zlib:Inflate is the class for decompressing compressed data. Unlike
1431
+ * Zlib::Deflate, an instance of this class is not able to duplicate (clone,
1432
+ * dup) itself.
1433
+ */
1434
+
1435
+
1436
+
1437
+ static VALUE
1438
+ rb_inflate_s_allocate(VALUE klass)
1439
+ {
1440
+ return zstream_inflate_new(klass);
1441
+ }
1442
+
1443
+ /*
1444
+ * call-seq: Zlib::Inflate.new(window_bits)
1445
+ *
1446
+ * Creates a new inflate stream for decompression. See zlib.h for details
1447
+ * of the argument. If +window_bits+ is +nil+, the default value is used.
1448
+ *
1449
+ * TODO: document better!
1450
+ */
1451
+ static VALUE
1452
+ rb_inflate_initialize(int argc, VALUE *argv, VALUE obj)
1453
+ {
1454
+ struct zstream *z;
1455
+ VALUE wbits;
1456
+ int err;
1457
+
1458
+ rb_scan_args(argc, argv, "01", &wbits);
1459
+ Data_Get_Struct(obj, struct zstream, z);
1460
+
1461
+ err = inflateInit2(&z->stream, ARG_WBITS(wbits));
1462
+ if (err != Z_OK) {
1463
+ raise_zlib_error(err, z->stream.msg);
1464
+ }
1465
+ ZSTREAM_READY(z);
1466
+
1467
+ return obj;
1468
+ }
1469
+
1470
+ static VALUE
1471
+ inflate_run(VALUE args)
1472
+ {
1473
+ struct zstream *z = (struct zstream*)((VALUE*)args)[0];
1474
+ VALUE src = ((VALUE*)args)[1];
1475
+
1476
+ zstream_run(z, (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src), Z_SYNC_FLUSH);
1477
+ zstream_run(z, (Bytef*)"", 0, Z_FINISH); /* for checking errors */
1478
+ return zstream_detach_buffer(z);
1479
+ }
1480
+
1481
+ /*
1482
+ * call-seq: Zlib::Inflate.inflate(string)
1483
+ *
1484
+ * Decompresses +string+. Raises a Zlib::NeedDict exception if a preset
1485
+ * dictionary is needed for decompression.
1486
+ *
1487
+ * This method is almost equivalent to the following code:
1488
+ *
1489
+ * def inflate(string)
1490
+ * zstream = Zlib::Inflate.new
1491
+ * buf = zstream.inflate(string)
1492
+ * zstream.finish
1493
+ * zstream.close
1494
+ * buf
1495
+ * end
1496
+ *
1497
+ */
1498
+ static VALUE
1499
+ rb_inflate_s_inflate(VALUE obj, VALUE src)
1500
+ {
1501
+ struct zstream z;
1502
+ VALUE dst, args[2];
1503
+ int err;
1504
+
1505
+ StringValue(src);
1506
+ zstream_init_inflate(&z);
1507
+ err = inflateInit(&z.stream);
1508
+ if (err != Z_OK) {
1509
+ raise_zlib_error(err, z.stream.msg);
1510
+ }
1511
+ ZSTREAM_READY(&z);
1512
+
1513
+ args[0] = (VALUE)&z;
1514
+ args[1] = src;
1515
+ dst = rb_ensure(inflate_run, (VALUE)args, zstream_end, (VALUE)&z);
1516
+
1517
+ OBJ_INFECT(dst, src);
1518
+ return dst;
1519
+ }
1520
+
1521
+ static void
1522
+ do_inflate(struct zstream *z, VALUE src)
1523
+ {
1524
+ if (NIL_P(src)) {
1525
+ zstream_run(z, (Bytef*)"", 0, Z_FINISH);
1526
+ return;
1527
+ }
1528
+ StringValue(src);
1529
+ if (RSTRING_LEN(src) > 0) { /* prevent Z_BUF_ERROR */
1530
+ zstream_run(z, (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src), Z_SYNC_FLUSH);
1531
+ }
1532
+ }
1533
+
1534
+ /*
1535
+ * call-seq: inflate(string)
1536
+ *
1537
+ * Inputs +string+ into the inflate stream and returns the output from the
1538
+ * stream. Calling this method, both the input and the output buffer of the
1539
+ * stream are flushed. If string is +nil+, this method finishes the stream,
1540
+ * just like Zlib::ZStream#finish.
1541
+ *
1542
+ * Raises a Zlib::NeedDict exception if a preset dictionary is needed to
1543
+ * decompress. Set the dictionary by Zlib::Inflate#set_dictionary and then
1544
+ * call this method again with an empty string. (<i>???</i>)
1545
+ *
1546
+ * TODO: document better!
1547
+ */
1548
+ static VALUE
1549
+ rb_inflate_inflate(VALUE obj, VALUE src)
1550
+ {
1551
+ struct zstream *z = get_zstream(obj);
1552
+ VALUE dst;
1553
+
1554
+ OBJ_INFECT(obj, src);
1555
+
1556
+ if (ZSTREAM_IS_FINISHED(z)) {
1557
+ if (NIL_P(src)) {
1558
+ dst = zstream_detach_buffer(z);
1559
+ }
1560
+ else {
1561
+ StringValue(src);
1562
+ zstream_append_buffer2(z, src);
1563
+ dst = rb_str_new(0, 0);
1564
+ }
1565
+ }
1566
+ else {
1567
+ do_inflate(z, src);
1568
+ dst = zstream_detach_buffer(z);
1569
+ if (ZSTREAM_IS_FINISHED(z)) {
1570
+ zstream_passthrough_input(z);
1571
+ }
1572
+ }
1573
+
1574
+ OBJ_INFECT(dst, obj);
1575
+ return dst;
1576
+ }
1577
+
1578
+ /*
1579
+ * call-seq: << string
1580
+ *
1581
+ * Inputs +string+ into the inflate stream just like Zlib::Inflate#inflate, but
1582
+ * returns the Zlib::Inflate object itself. The output from the stream is
1583
+ * preserved in output buffer.
1584
+ */
1585
+ static VALUE
1586
+ rb_inflate_addstr(VALUE obj, VALUE src)
1587
+ {
1588
+ struct zstream *z = get_zstream(obj);
1589
+
1590
+ OBJ_INFECT(obj, src);
1591
+
1592
+ if (ZSTREAM_IS_FINISHED(z)) {
1593
+ if (!NIL_P(src)) {
1594
+ StringValue(src);
1595
+ zstream_append_buffer2(z, src);
1596
+ }
1597
+ }
1598
+ else {
1599
+ do_inflate(z, src);
1600
+ if (ZSTREAM_IS_FINISHED(z)) {
1601
+ zstream_passthrough_input(z);
1602
+ }
1603
+ }
1604
+
1605
+ return obj;
1606
+ }
1607
+
1608
+ /*
1609
+ * call-seq: sync(string)
1610
+ *
1611
+ * Inputs +string+ into the end of input buffer and skips data until a full
1612
+ * flush point can be found. If the point is found in the buffer, this method
1613
+ * flushes the buffer and returns false. Otherwise it returns +true+ and the
1614
+ * following data of full flush point is preserved in the buffer.
1615
+ */
1616
+ static VALUE
1617
+ rb_inflate_sync(VALUE obj, VALUE src)
1618
+ {
1619
+ struct zstream *z = get_zstream(obj);
1620
+
1621
+ OBJ_INFECT(obj, src);
1622
+ StringValue(src);
1623
+ return zstream_sync(z, (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src));
1624
+ }
1625
+
1626
+ /*
1627
+ * Quoted verbatim from original documentation:
1628
+ *
1629
+ * What is this?
1630
+ *
1631
+ * <tt>:)</tt>
1632
+ */
1633
+ static VALUE
1634
+ rb_inflate_sync_point_p(VALUE obj)
1635
+ {
1636
+ struct zstream *z = get_zstream(obj);
1637
+ int err;
1638
+
1639
+ err = inflateSyncPoint(&z->stream);
1640
+ if (err == 1) {
1641
+ return Qtrue;
1642
+ }
1643
+ if (err != Z_OK) {
1644
+ raise_zlib_error(err, z->stream.msg);
1645
+ }
1646
+ return Qfalse;
1647
+ }
1648
+
1649
+ /*
1650
+ * Sets the preset dictionary and returns +string+. This method is available just
1651
+ * only after a Zlib::NeedDict exception was raised. See zlib.h for details.
1652
+ *
1653
+ * TODO: document better!
1654
+ */
1655
+ static VALUE
1656
+ rb_inflate_set_dictionary(VALUE obj, VALUE dic)
1657
+ {
1658
+ struct zstream *z = get_zstream(obj);
1659
+ VALUE src = dic;
1660
+ int err;
1661
+
1662
+ OBJ_INFECT(obj, dic);
1663
+ StringValue(src);
1664
+ err = inflateSetDictionary(&z->stream,
1665
+ (Bytef*)RSTRING_PTR(src), RSTRING_LEN(src));
1666
+ if (err != Z_OK) {
1667
+ raise_zlib_error(err, z->stream.msg);
1668
+ }
1669
+
1670
+ return dic;
1671
+ }
1672
+
1673
+
1674
+
1675
+ #if GZIP_SUPPORT
1676
+
1677
+ /* NOTE: Features for gzip files of Ruby/zlib are written from scratch
1678
+ * and using undocumented feature of zlib, negative wbits.
1679
+ * I don't think gzFile APIs of zlib are good for Ruby.
1680
+ */
1681
+
1682
+ /*------- .gz file header --------*/
1683
+
1684
+ #define GZ_MAGIC1 0x1f
1685
+ #define GZ_MAGIC2 0x8b
1686
+ #define GZ_METHOD_DEFLATE 8
1687
+ #define GZ_FLAG_MULTIPART 0x2
1688
+ #define GZ_FLAG_EXTRA 0x4
1689
+ #define GZ_FLAG_ORIG_NAME 0x8
1690
+ #define GZ_FLAG_COMMENT 0x10
1691
+ #define GZ_FLAG_ENCRYPT 0x20
1692
+ #define GZ_FLAG_UNKNOWN_MASK 0xc0
1693
+
1694
+ #define GZ_EXTRAFLAG_FAST 0x4
1695
+ #define GZ_EXTRAFLAG_SLOW 0x2
1696
+
1697
+ /* from zutil.h */
1698
+ #define OS_MSDOS 0x00
1699
+ #define OS_AMIGA 0x01
1700
+ #define OS_VMS 0x02
1701
+ #define OS_UNIX 0x03
1702
+ #define OS_ATARI 0x05
1703
+ #define OS_OS2 0x06
1704
+ #define OS_MACOS 0x07
1705
+ #define OS_TOPS20 0x0a
1706
+ #define OS_WIN32 0x0b
1707
+
1708
+ #define OS_VMCMS 0x04
1709
+ #define OS_ZSYSTEM 0x08
1710
+ #define OS_CPM 0x09
1711
+ #define OS_QDOS 0x0c
1712
+ #define OS_RISCOS 0x0d
1713
+ #define OS_UNKNOWN 0xff
1714
+
1715
+ #ifndef OS_CODE
1716
+ #define OS_CODE OS_UNIX
1717
+ #endif
1718
+
1719
+ static ID id_write, id_read, id_readpartial, id_flush, id_seek, id_close, id_path;
1720
+ static VALUE cGzError, cNoFooter, cCRCError, cLengthError;
1721
+
1722
+
1723
+
1724
+ /*-------- gzfile internal APIs --------*/
1725
+
1726
+ struct gzfile {
1727
+ struct zstream z;
1728
+ VALUE io;
1729
+ int level;
1730
+ time_t mtime; /* for header */
1731
+ int os_code; /* for header */
1732
+ VALUE orig_name; /* for header; must be a String */
1733
+ VALUE comment; /* for header; must be a String */
1734
+ unsigned long crc;
1735
+ int lineno;
1736
+ int ungetc;
1737
+ void (*end)(struct gzfile *);
1738
+ rb_encoding *enc;
1739
+ rb_encoding *enc2;
1740
+ rb_econv_t *ec;
1741
+ int ecflags;
1742
+ VALUE ecopts;
1743
+ char *cbuf;
1744
+ VALUE path;
1745
+ };
1746
+ #define GZFILE_CBUF_CAPA 10
1747
+
1748
+ #define GZFILE_FLAG_SYNC ZSTREAM_FLAG_UNUSED
1749
+ #define GZFILE_FLAG_HEADER_FINISHED (ZSTREAM_FLAG_UNUSED << 1)
1750
+ #define GZFILE_FLAG_FOOTER_FINISHED (ZSTREAM_FLAG_UNUSED << 2)
1751
+
1752
+ #define GZFILE_IS_FINISHED(gz) \
1753
+ (ZSTREAM_IS_FINISHED(&gz->z) && (gz)->z.buf_filled == 0)
1754
+
1755
+ #define GZFILE_READ_SIZE 2048
1756
+
1757
+
1758
+ static void
1759
+ gzfile_mark(struct gzfile *gz)
1760
+ {
1761
+ rb_gc_mark(gz->io);
1762
+ rb_gc_mark(gz->orig_name);
1763
+ rb_gc_mark(gz->comment);
1764
+ zstream_mark(&gz->z);
1765
+ rb_gc_mark(gz->ecopts);
1766
+ rb_gc_mark(gz->path);
1767
+ }
1768
+
1769
+ static void
1770
+ gzfile_free(struct gzfile *gz)
1771
+ {
1772
+ struct zstream *z = &gz->z;
1773
+
1774
+ if (ZSTREAM_IS_READY(z)) {
1775
+ if (z->func == &deflate_funcs) {
1776
+ finalizer_warn("Zlib::GzipWriter object must be closed explicitly.");
1777
+ }
1778
+ zstream_finalize(z);
1779
+ }
1780
+ if (gz->cbuf) {
1781
+ xfree(gz->cbuf);
1782
+ }
1783
+ xfree(gz);
1784
+ }
1785
+
1786
+ static VALUE
1787
+ gzfile_new(klass, funcs, endfunc)
1788
+ VALUE klass;
1789
+ const struct zstream_funcs *funcs;
1790
+ void (*endfunc)(struct gzfile *);
1791
+ {
1792
+ VALUE obj;
1793
+ struct gzfile *gz;
1794
+
1795
+ obj = Data_Make_Struct(klass, struct gzfile, gzfile_mark, gzfile_free, gz);
1796
+ zstream_init(&gz->z, funcs);
1797
+ gz->io = Qnil;
1798
+ gz->level = 0;
1799
+ gz->mtime = 0;
1800
+ gz->os_code = OS_CODE;
1801
+ gz->orig_name = Qnil;
1802
+ gz->comment = Qnil;
1803
+ gz->crc = crc32(0, Z_NULL, 0);
1804
+ gz->lineno = 0;
1805
+ gz->ungetc = 0;
1806
+ gz->end = endfunc;
1807
+ gz->enc = rb_default_external_encoding();
1808
+ gz->enc2 = 0;
1809
+ gz->ec = NULL;
1810
+ gz->ecflags = 0;
1811
+ gz->ecopts = Qnil;
1812
+ gz->cbuf = 0;
1813
+ gz->path = Qnil;
1814
+
1815
+ return obj;
1816
+ }
1817
+
1818
+ #define gzfile_writer_new(gz) gzfile_new((gz),&deflate_funcs,gzfile_writer_end)
1819
+ #define gzfile_reader_new(gz) gzfile_new((gz),&inflate_funcs,gzfile_reader_end)
1820
+
1821
+ static void
1822
+ gzfile_reset(struct gzfile *gz)
1823
+ {
1824
+ zstream_reset(&gz->z);
1825
+ gz->crc = crc32(0, Z_NULL, 0);
1826
+ gz->lineno = 0;
1827
+ gz->ungetc = 0;
1828
+ if (gz->ec) {
1829
+ rb_econv_close(gz->ec);
1830
+ gz->ec = rb_econv_open_opts(gz->enc2->name, gz->enc->name,
1831
+ gz->ecflags, gz->ecopts);
1832
+ }
1833
+ }
1834
+
1835
+ static void
1836
+ gzfile_close(struct gzfile *gz, int closeflag)
1837
+ {
1838
+ VALUE io = gz->io;
1839
+
1840
+ gz->end(gz);
1841
+ gz->io = Qnil;
1842
+ gz->orig_name = Qnil;
1843
+ gz->comment = Qnil;
1844
+ if (closeflag && rb_respond_to(io, id_close)) {
1845
+ rb_funcall(io, id_close, 0);
1846
+ }
1847
+ }
1848
+
1849
+ static void
1850
+ gzfile_write_raw(struct gzfile *gz)
1851
+ {
1852
+ VALUE str;
1853
+
1854
+ if (gz->z.buf_filled > 0) {
1855
+ str = zstream_detach_buffer(&gz->z);
1856
+ OBJ_TAINT(str); /* for safe */
1857
+ rb_funcall(gz->io, id_write, 1, str);
1858
+ if ((gz->z.flags & GZFILE_FLAG_SYNC)
1859
+ && rb_respond_to(gz->io, id_flush))
1860
+ rb_funcall(gz->io, id_flush, 0);
1861
+ }
1862
+ }
1863
+
1864
+ static VALUE
1865
+ gzfile_read_raw_partial(VALUE arg)
1866
+ {
1867
+ struct gzfile *gz = (struct gzfile*)arg;
1868
+ VALUE str;
1869
+
1870
+ str = rb_funcall(gz->io, id_readpartial, 1, INT2FIX(GZFILE_READ_SIZE));
1871
+ Check_Type(str, T_STRING);
1872
+ return str;
1873
+ }
1874
+
1875
+ static VALUE
1876
+ gzfile_read_raw_rescue(VALUE arg)
1877
+ {
1878
+ struct gzfile *gz = (struct gzfile*)arg;
1879
+ VALUE str = Qnil;
1880
+ if (rb_obj_is_kind_of(rb_errinfo(), rb_eNoMethodError)) {
1881
+ str = rb_funcall(gz->io, id_read, 1, INT2FIX(GZFILE_READ_SIZE));
1882
+ if (!NIL_P(str)) {
1883
+ Check_Type(str, T_STRING);
1884
+ }
1885
+ }
1886
+ return str; /* return nil when EOFError */
1887
+ }
1888
+
1889
+ static VALUE
1890
+ gzfile_read_raw(struct gzfile *gz)
1891
+ {
1892
+ return rb_rescue2(gzfile_read_raw_partial, (VALUE)gz,
1893
+ gzfile_read_raw_rescue, (VALUE)gz,
1894
+ rb_eEOFError, rb_eNoMethodError, (VALUE)0);
1895
+ }
1896
+
1897
+ static int
1898
+ gzfile_read_raw_ensure(struct gzfile *gz, int size)
1899
+ {
1900
+ VALUE str;
1901
+
1902
+ while (NIL_P(gz->z.input) || RSTRING_LEN(gz->z.input) < size) {
1903
+ str = gzfile_read_raw(gz);
1904
+ if (NIL_P(str)) return Qfalse;
1905
+ zstream_append_input2(&gz->z, str);
1906
+ }
1907
+ return Qtrue;
1908
+ }
1909
+
1910
+ static char *
1911
+ gzfile_read_raw_until_zero(struct gzfile *gz, long offset)
1912
+ {
1913
+ VALUE str;
1914
+ char *p;
1915
+
1916
+ for (;;) {
1917
+ p = memchr(RSTRING_PTR(gz->z.input) + offset, '\0',
1918
+ RSTRING_LEN(gz->z.input) - offset);
1919
+ if (p) break;
1920
+ str = gzfile_read_raw(gz);
1921
+ if (NIL_P(str)) {
1922
+ rb_raise(cGzError, "unexpected end of file");
1923
+ }
1924
+ offset = RSTRING_LEN(gz->z.input);
1925
+ zstream_append_input2(&gz->z, str);
1926
+ }
1927
+ return p;
1928
+ }
1929
+
1930
+ static unsigned int
1931
+ gzfile_get16(const unsigned char *src)
1932
+ {
1933
+ unsigned int n;
1934
+ n = *(src++) & 0xff;
1935
+ n |= (*(src++) & 0xff) << 8;
1936
+ return n;
1937
+ }
1938
+
1939
+ static unsigned long
1940
+ gzfile_get32(const unsigned char *src)
1941
+ {
1942
+ unsigned long n;
1943
+ n = *(src++) & 0xff;
1944
+ n |= (*(src++) & 0xff) << 8;
1945
+ n |= (*(src++) & 0xff) << 16;
1946
+ n |= (*(src++) & 0xffU) << 24;
1947
+ return n;
1948
+ }
1949
+
1950
+ static void
1951
+ gzfile_set32(unsigned long n, unsigned char *dst)
1952
+ {
1953
+ *(dst++) = n & 0xff;
1954
+ *(dst++) = (n >> 8) & 0xff;
1955
+ *(dst++) = (n >> 16) & 0xff;
1956
+ *dst = (n >> 24) & 0xff;
1957
+ }
1958
+
1959
+ static void
1960
+ gzfile_make_header(struct gzfile *gz)
1961
+ {
1962
+ Bytef buf[10]; /* the size of gzip header */
1963
+ unsigned char flags = 0, extraflags = 0;
1964
+
1965
+ if (!NIL_P(gz->orig_name)) {
1966
+ flags |= GZ_FLAG_ORIG_NAME;
1967
+ }
1968
+ if (!NIL_P(gz->comment)) {
1969
+ flags |= GZ_FLAG_COMMENT;
1970
+ }
1971
+ if (gz->mtime == 0) {
1972
+ gz->mtime = time(0);
1973
+ }
1974
+
1975
+ if (gz->level == Z_BEST_SPEED) {
1976
+ extraflags |= GZ_EXTRAFLAG_FAST;
1977
+ }
1978
+ else if (gz->level == Z_BEST_COMPRESSION) {
1979
+ extraflags |= GZ_EXTRAFLAG_SLOW;
1980
+ }
1981
+
1982
+ buf[0] = GZ_MAGIC1;
1983
+ buf[1] = GZ_MAGIC2;
1984
+ buf[2] = GZ_METHOD_DEFLATE;
1985
+ buf[3] = flags;
1986
+ gzfile_set32((unsigned long)gz->mtime, &buf[4]);
1987
+ buf[8] = extraflags;
1988
+ buf[9] = gz->os_code;
1989
+ zstream_append_buffer(&gz->z, buf, sizeof(buf));
1990
+
1991
+ if (!NIL_P(gz->orig_name)) {
1992
+ zstream_append_buffer2(&gz->z, gz->orig_name);
1993
+ zstream_append_buffer(&gz->z, (Bytef*)"\0", 1);
1994
+ }
1995
+ if (!NIL_P(gz->comment)) {
1996
+ zstream_append_buffer2(&gz->z, gz->comment);
1997
+ zstream_append_buffer(&gz->z, (Bytef*)"\0", 1);
1998
+ }
1999
+
2000
+ gz->z.flags |= GZFILE_FLAG_HEADER_FINISHED;
2001
+ }
2002
+
2003
+ static void
2004
+ gzfile_make_footer(struct gzfile *gz)
2005
+ {
2006
+ Bytef buf[8]; /* 8 is the size of gzip footer */
2007
+
2008
+ gzfile_set32(gz->crc, buf);
2009
+ gzfile_set32(gz->z.stream.total_in, &buf[4]);
2010
+ zstream_append_buffer(&gz->z, buf, sizeof(buf));
2011
+ gz->z.flags |= GZFILE_FLAG_FOOTER_FINISHED;
2012
+ }
2013
+
2014
+ static void
2015
+ gzfile_read_header(struct gzfile *gz)
2016
+ {
2017
+ const unsigned char *head;
2018
+ long len;
2019
+ char flags, *p;
2020
+
2021
+ if (!gzfile_read_raw_ensure(gz, 10)) { /* 10 is the size of gzip header */
2022
+ rb_raise(cGzError, "not in gzip format");
2023
+ }
2024
+
2025
+ head = (unsigned char*)RSTRING_PTR(gz->z.input);
2026
+
2027
+ if (head[0] != GZ_MAGIC1 || head[1] != GZ_MAGIC2) {
2028
+ rb_raise(cGzError, "not in gzip format");
2029
+ }
2030
+ if (head[2] != GZ_METHOD_DEFLATE) {
2031
+ rb_raise(cGzError, "unsupported compression method %d", head[2]);
2032
+ }
2033
+
2034
+ flags = head[3];
2035
+ if (flags & GZ_FLAG_MULTIPART) {
2036
+ rb_raise(cGzError, "multi-part gzip file is not supported");
2037
+ }
2038
+ else if (flags & GZ_FLAG_ENCRYPT) {
2039
+ rb_raise(cGzError, "encrypted gzip file is not supported");
2040
+ }
2041
+ else if (flags & GZ_FLAG_UNKNOWN_MASK) {
2042
+ rb_raise(cGzError, "unknown flags 0x%02x", flags);
2043
+ }
2044
+
2045
+ if (head[8] & GZ_EXTRAFLAG_FAST) {
2046
+ gz->level = Z_BEST_SPEED;
2047
+ }
2048
+ else if (head[8] & GZ_EXTRAFLAG_SLOW) {
2049
+ gz->level = Z_BEST_COMPRESSION;
2050
+ }
2051
+ else {
2052
+ gz->level = Z_DEFAULT_COMPRESSION;
2053
+ }
2054
+
2055
+ gz->mtime = gzfile_get32(&head[4]);
2056
+ gz->os_code = head[9];
2057
+ zstream_discard_input(&gz->z, 10);
2058
+
2059
+ if (flags & GZ_FLAG_EXTRA) {
2060
+ if (!gzfile_read_raw_ensure(gz, 2)) {
2061
+ rb_raise(cGzError, "unexpected end of file");
2062
+ }
2063
+ len = gzfile_get16((Bytef*)RSTRING_PTR(gz->z.input));
2064
+ if (!gzfile_read_raw_ensure(gz, 2 + len)) {
2065
+ rb_raise(cGzError, "unexpected end of file");
2066
+ }
2067
+ zstream_discard_input(&gz->z, 2 + len);
2068
+ }
2069
+ if (flags & GZ_FLAG_ORIG_NAME) {
2070
+ p = gzfile_read_raw_until_zero(gz, 0);
2071
+ len = p - RSTRING_PTR(gz->z.input);
2072
+ gz->orig_name = rb_str_new(RSTRING_PTR(gz->z.input), len);
2073
+ OBJ_TAINT(gz->orig_name); /* for safe */
2074
+ zstream_discard_input(&gz->z, len + 1);
2075
+ }
2076
+ if (flags & GZ_FLAG_COMMENT) {
2077
+ p = gzfile_read_raw_until_zero(gz, 0);
2078
+ len = p - RSTRING_PTR(gz->z.input);
2079
+ gz->comment = rb_str_new(RSTRING_PTR(gz->z.input), len);
2080
+ OBJ_TAINT(gz->comment); /* for safe */
2081
+ zstream_discard_input(&gz->z, len + 1);
2082
+ }
2083
+
2084
+ if (gz->z.input != Qnil && RSTRING_LEN(gz->z.input) > 0) {
2085
+ zstream_run(&gz->z, 0, 0, Z_SYNC_FLUSH);
2086
+ }
2087
+ }
2088
+
2089
+ static void
2090
+ gzfile_check_footer(struct gzfile *gz)
2091
+ {
2092
+ unsigned long crc, length;
2093
+
2094
+ gz->z.flags |= GZFILE_FLAG_FOOTER_FINISHED;
2095
+
2096
+ if (!gzfile_read_raw_ensure(gz, 8)) { /* 8 is the size of gzip footer */
2097
+ rb_raise(cNoFooter, "footer is not found");
2098
+ }
2099
+
2100
+ crc = gzfile_get32((Bytef*)RSTRING_PTR(gz->z.input));
2101
+ length = gzfile_get32((Bytef*)RSTRING_PTR(gz->z.input) + 4);
2102
+
2103
+ gz->z.stream.total_in += 8; /* to rewind correctly */
2104
+ zstream_discard_input(&gz->z, 8);
2105
+
2106
+ if (gz->crc != crc) {
2107
+ rb_raise(cCRCError, "invalid compressed data -- crc error");
2108
+ }
2109
+ if ((uint32_t)gz->z.stream.total_out != length) {
2110
+ rb_raise(cLengthError, "invalid compressed data -- length error");
2111
+ }
2112
+ }
2113
+
2114
+ static void
2115
+ gzfile_write(struct gzfile *gz, Bytef *str, uInt len)
2116
+ {
2117
+ if (!(gz->z.flags & GZFILE_FLAG_HEADER_FINISHED)) {
2118
+ gzfile_make_header(gz);
2119
+ }
2120
+
2121
+ if (len > 0 || (gz->z.flags & GZFILE_FLAG_SYNC)) {
2122
+ gz->crc = crc32(gz->crc, str, len);
2123
+ zstream_run(&gz->z, str, len, (gz->z.flags & GZFILE_FLAG_SYNC)
2124
+ ? Z_SYNC_FLUSH : Z_NO_FLUSH);
2125
+ }
2126
+ gzfile_write_raw(gz);
2127
+ }
2128
+
2129
+ static long
2130
+ gzfile_read_more(struct gzfile *gz)
2131
+ {
2132
+ volatile VALUE str;
2133
+
2134
+ while (!ZSTREAM_IS_FINISHED(&gz->z)) {
2135
+ str = gzfile_read_raw(gz);
2136
+ if (NIL_P(str)) {
2137
+ if (!ZSTREAM_IS_FINISHED(&gz->z)) {
2138
+ rb_raise(cGzError, "unexpected end of file");
2139
+ }
2140
+ break;
2141
+ }
2142
+ if (RSTRING_LEN(str) > 0) { /* prevent Z_BUF_ERROR */
2143
+ zstream_run(&gz->z, (Bytef*)RSTRING_PTR(str), RSTRING_LEN(str),
2144
+ Z_SYNC_FLUSH);
2145
+ }
2146
+ if (gz->z.buf_filled > 0) break;
2147
+ }
2148
+ return gz->z.buf_filled;
2149
+ }
2150
+
2151
+ static void
2152
+ gzfile_calc_crc(struct gzfile *gz, VALUE str)
2153
+ {
2154
+ if (RSTRING_LEN(str) <= gz->ungetc) {
2155
+ gz->ungetc -= RSTRING_LEN(str);
2156
+ }
2157
+ else {
2158
+ gz->crc = crc32(gz->crc, (Bytef*)RSTRING_PTR(str) + gz->ungetc,
2159
+ RSTRING_LEN(str) - gz->ungetc);
2160
+ gz->ungetc = 0;
2161
+ }
2162
+ }
2163
+
2164
+ static VALUE
2165
+ gzfile_newstr(struct gzfile *gz, VALUE str)
2166
+ {
2167
+ if (!gz->enc2) {
2168
+ rb_enc_associate(str, gz->enc);
2169
+ OBJ_TAINT(str); /* for safe */
2170
+ return str;
2171
+ }
2172
+ if (gz->ec && rb_enc_dummy_p(gz->enc2)) {
2173
+ str = rb_econv_str_convert(gz->ec, str, ECONV_PARTIAL_INPUT);
2174
+ rb_enc_associate(str, gz->enc);
2175
+ OBJ_TAINT(str);
2176
+ return str;
2177
+ }
2178
+ return rb_str_conv_enc_opts(str, gz->enc2, gz->enc,
2179
+ gz->ecflags, gz->ecopts);
2180
+ }
2181
+
2182
+ static VALUE
2183
+ gzfile_read(struct gzfile *gz, int len)
2184
+ {
2185
+ VALUE dst;
2186
+
2187
+ if (len < 0)
2188
+ rb_raise(rb_eArgError, "negative length %d given", len);
2189
+ if (len == 0)
2190
+ return rb_str_new(0, 0);
2191
+ while (!ZSTREAM_IS_FINISHED(&gz->z) && gz->z.buf_filled < len) {
2192
+ gzfile_read_more(gz);
2193
+ }
2194
+ if (GZFILE_IS_FINISHED(gz)) {
2195
+ if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
2196
+ gzfile_check_footer(gz);
2197
+ }
2198
+ return Qnil;
2199
+ }
2200
+
2201
+ dst = zstream_shift_buffer(&gz->z, len);
2202
+ gzfile_calc_crc(gz, dst);
2203
+ return dst;
2204
+ }
2205
+
2206
+ static VALUE
2207
+ gzfile_readpartial(struct gzfile *gz, int len, VALUE outbuf)
2208
+ {
2209
+ VALUE dst;
2210
+
2211
+ if (len < 0)
2212
+ rb_raise(rb_eArgError, "negative length %d given", len);
2213
+
2214
+ if (!NIL_P(outbuf))
2215
+ OBJ_TAINT(outbuf);
2216
+
2217
+ if (len == 0) {
2218
+ if (NIL_P(outbuf))
2219
+ return rb_str_new(0, 0);
2220
+ else {
2221
+ rb_str_resize(outbuf, 0);
2222
+ return outbuf;
2223
+ }
2224
+ }
2225
+ while (!ZSTREAM_IS_FINISHED(&gz->z) && gz->z.buf_filled == 0) {
2226
+ gzfile_read_more(gz);
2227
+ }
2228
+ if (GZFILE_IS_FINISHED(gz)) {
2229
+ if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
2230
+ gzfile_check_footer(gz);
2231
+ }
2232
+ if (!NIL_P(outbuf))
2233
+ rb_str_resize(outbuf, 0);
2234
+ rb_raise(rb_eEOFError, "end of file reached");
2235
+ }
2236
+
2237
+ dst = zstream_shift_buffer(&gz->z, len);
2238
+ gzfile_calc_crc(gz, dst);
2239
+
2240
+ if (!NIL_P(outbuf)) {
2241
+ rb_str_resize(outbuf, RSTRING_LEN(dst));
2242
+ memcpy(RSTRING_PTR(outbuf), RSTRING_PTR(dst), RSTRING_LEN(dst));
2243
+ dst = outbuf;
2244
+ }
2245
+ OBJ_TAINT(dst); /* for safe */
2246
+ return dst;
2247
+ }
2248
+
2249
+ static VALUE
2250
+ gzfile_read_all(struct gzfile *gz)
2251
+ {
2252
+ VALUE dst;
2253
+
2254
+ while (!ZSTREAM_IS_FINISHED(&gz->z)) {
2255
+ gzfile_read_more(gz);
2256
+ }
2257
+ if (GZFILE_IS_FINISHED(gz)) {
2258
+ if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
2259
+ gzfile_check_footer(gz);
2260
+ }
2261
+ return rb_str_new(0, 0);
2262
+ }
2263
+
2264
+ dst = zstream_detach_buffer(&gz->z);
2265
+ gzfile_calc_crc(gz, dst);
2266
+ OBJ_TAINT(dst);
2267
+ return gzfile_newstr(gz, dst);
2268
+ }
2269
+
2270
+ static VALUE
2271
+ gzfile_getc(struct gzfile *gz)
2272
+ {
2273
+ VALUE buf, dst = 0;
2274
+ int len;
2275
+
2276
+ len = rb_enc_mbmaxlen(gz->enc);
2277
+ while (!ZSTREAM_IS_FINISHED(&gz->z) && gz->z.buf_filled < len) {
2278
+ gzfile_read_more(gz);
2279
+ }
2280
+ if (GZFILE_IS_FINISHED(gz)) {
2281
+ if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
2282
+ gzfile_check_footer(gz);
2283
+ }
2284
+ return Qnil;
2285
+ }
2286
+
2287
+ if (gz->ec && rb_enc_dummy_p(gz->enc2)) {
2288
+ const unsigned char *ss, *sp, *se;
2289
+ unsigned char *ds, *dp, *de;
2290
+ rb_econv_result_t res;
2291
+
2292
+ if (!gz->cbuf) {
2293
+ gz->cbuf = ALLOC_N(char, GZFILE_CBUF_CAPA);
2294
+ }
2295
+ ss = sp = (const unsigned char*)RSTRING_PTR(gz->z.buf);
2296
+ se = sp + gz->z.buf_filled;
2297
+ ds = dp = (unsigned char *)gz->cbuf;
2298
+ de = (unsigned char *)ds + GZFILE_CBUF_CAPA;
2299
+ res = rb_econv_convert(gz->ec, &sp, se, &dp, de, ECONV_PARTIAL_INPUT|ECONV_AFTER_OUTPUT);
2300
+ rb_econv_check_error(gz->ec);
2301
+ dst = zstream_shift_buffer(&gz->z, sp - ss);
2302
+ gzfile_calc_crc(gz, dst);
2303
+ dst = rb_str_new(gz->cbuf, dp - ds);
2304
+ rb_enc_associate(dst, gz->enc);
2305
+ OBJ_TAINT(dst);
2306
+ return dst;
2307
+ }
2308
+ else {
2309
+ buf = gz->z.buf;
2310
+ len = rb_enc_mbclen(RSTRING_PTR(buf), RSTRING_END(buf), gz->enc);
2311
+ dst = gzfile_read(gz, len);
2312
+ return gzfile_newstr(gz, dst);
2313
+ }
2314
+ }
2315
+
2316
+ static void
2317
+ gzfile_ungets(struct gzfile *gz, const Bytef *b, int len)
2318
+ {
2319
+ zstream_buffer_ungets(&gz->z, b, len);
2320
+ gz->ungetc+=len;
2321
+ }
2322
+
2323
+ static void
2324
+ gzfile_ungetbyte(struct gzfile *gz, int c)
2325
+ {
2326
+ zstream_buffer_ungetbyte(&gz->z, c);
2327
+ gz->ungetc++;
2328
+ }
2329
+
2330
+ static VALUE
2331
+ gzfile_writer_end_run(VALUE arg)
2332
+ {
2333
+ struct gzfile *gz = (struct gzfile *)arg;
2334
+
2335
+ if (!(gz->z.flags & GZFILE_FLAG_HEADER_FINISHED)) {
2336
+ gzfile_make_header(gz);
2337
+ }
2338
+
2339
+ zstream_run(&gz->z, (Bytef*)"", 0, Z_FINISH);
2340
+ gzfile_make_footer(gz);
2341
+ gzfile_write_raw(gz);
2342
+
2343
+ return Qnil;
2344
+ }
2345
+
2346
+ static void
2347
+ gzfile_writer_end(struct gzfile *gz)
2348
+ {
2349
+ if (ZSTREAM_IS_CLOSING(&gz->z)) return;
2350
+ gz->z.flags |= ZSTREAM_FLAG_CLOSING;
2351
+
2352
+ rb_ensure(gzfile_writer_end_run, (VALUE)gz, zstream_end, (VALUE)&gz->z);
2353
+ }
2354
+
2355
+ static VALUE
2356
+ gzfile_reader_end_run(VALUE arg)
2357
+ {
2358
+ struct gzfile *gz = (struct gzfile *)arg;
2359
+
2360
+ if (GZFILE_IS_FINISHED(gz)
2361
+ && !(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
2362
+ gzfile_check_footer(gz);
2363
+ }
2364
+
2365
+ return Qnil;
2366
+ }
2367
+
2368
+ static void
2369
+ gzfile_reader_end(struct gzfile *gz)
2370
+ {
2371
+ if (ZSTREAM_IS_CLOSING(&gz->z)) return;
2372
+ gz->z.flags |= ZSTREAM_FLAG_CLOSING;
2373
+
2374
+ rb_ensure(gzfile_reader_end_run, (VALUE)gz, zstream_end, (VALUE)&gz->z);
2375
+ }
2376
+
2377
+ static void
2378
+ gzfile_reader_rewind(struct gzfile *gz)
2379
+ {
2380
+ long n;
2381
+
2382
+ n = gz->z.stream.total_in;
2383
+ if (!NIL_P(gz->z.input)) {
2384
+ n += RSTRING_LEN(gz->z.input);
2385
+ }
2386
+
2387
+ rb_funcall(gz->io, id_seek, 2, rb_int2inum(-n), INT2FIX(1));
2388
+ gzfile_reset(gz);
2389
+ }
2390
+
2391
+ extern VALUE rb_str_resurrect(VALUE str);
2392
+
2393
+ static VALUE
2394
+ gzfile_reader_get_unused(struct gzfile *gz)
2395
+ {
2396
+ VALUE str;
2397
+
2398
+ if (!ZSTREAM_IS_READY(&gz->z)) return Qnil;
2399
+ if (!GZFILE_IS_FINISHED(gz)) return Qnil;
2400
+ if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
2401
+ gzfile_check_footer(gz);
2402
+ }
2403
+ if (NIL_P(gz->z.input)) return Qnil;
2404
+
2405
+ str = rb_str_resurrect(gz->z.input);
2406
+ OBJ_TAINT(str); /* for safe */
2407
+ return str;
2408
+ }
2409
+
2410
+ static struct gzfile *
2411
+ get_gzfile(VALUE obj)
2412
+ {
2413
+ struct gzfile *gz;
2414
+
2415
+ Data_Get_Struct(obj, struct gzfile, gz);
2416
+ if (!ZSTREAM_IS_READY(&gz->z)) {
2417
+ rb_raise(cGzError, "closed gzip stream");
2418
+ }
2419
+ return gz;
2420
+ }
2421
+
2422
+
2423
+ /* ------------------------------------------------------------------------- */
2424
+
2425
+ /*
2426
+ * Document-class: Zlib::GzipFile
2427
+ *
2428
+ * Zlib::GzipFile is an abstract class for handling a gzip formatted
2429
+ * compressed file. The operations are defined in the subclasses,
2430
+ * Zlib::GzipReader for reading, and Zlib::GzipWriter for writing.
2431
+ *
2432
+ * GzipReader should be used by associating an IO, or IO-like, object.
2433
+ */
2434
+
2435
+
2436
+ static VALUE
2437
+ gzfile_ensure_close(VALUE obj)
2438
+ {
2439
+ struct gzfile *gz;
2440
+
2441
+ Data_Get_Struct(obj, struct gzfile, gz);
2442
+ if (ZSTREAM_IS_READY(&gz->z)) {
2443
+ gzfile_close(gz, 1);
2444
+ }
2445
+ return Qnil;
2446
+ }
2447
+
2448
+ /*
2449
+ * call-seq: Zlib::GzipFile.wrap(io) { |gz| ... }
2450
+ *
2451
+ * Creates a GzipFile object associated with +io+, and
2452
+ * executes the block with the newly created GzipFile object,
2453
+ * just like File.open. The GzipFile object will be closed
2454
+ * automatically after executing the block. If you want to keep
2455
+ * the associated IO object opening, you may call
2456
+ * +Zlib::GzipFile#finish+ method in the block.
2457
+ */
2458
+ static VALUE
2459
+ rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
2460
+ {
2461
+ VALUE obj = rb_class_new_instance(argc, argv, klass);
2462
+
2463
+ if (rb_block_given_p()) {
2464
+ return rb_ensure(rb_yield, obj, gzfile_ensure_close, obj);
2465
+ }
2466
+ else {
2467
+ return obj;
2468
+ }
2469
+ }
2470
+
2471
+ /*
2472
+ * See Zlib::GzipReader#open and Zlib::GzipWriter#open.
2473
+ */
2474
+ static VALUE
2475
+ gzfile_s_open(int argc, VALUE *argv, VALUE klass, const char *mode)
2476
+ {
2477
+ VALUE io, filename;
2478
+
2479
+ if (argc < 1) {
2480
+ rb_raise(rb_eArgError, "wrong number of arguments (0 for 1)");
2481
+ }
2482
+ filename = argv[0];
2483
+ io = rb_file_open_str(filename, mode);
2484
+ argv[0] = io;
2485
+ return rb_gzfile_s_wrap(argc, argv, klass);
2486
+ }
2487
+
2488
+ /*
2489
+ * Same as IO.
2490
+ */
2491
+ static VALUE
2492
+ rb_gzfile_to_io(VALUE obj)
2493
+ {
2494
+ return get_gzfile(obj)->io;
2495
+ }
2496
+
2497
+ /*
2498
+ * Returns CRC value of the uncompressed data.
2499
+ */
2500
+ static VALUE
2501
+ rb_gzfile_crc(VALUE obj)
2502
+ {
2503
+ return rb_uint2inum(get_gzfile(obj)->crc);
2504
+ }
2505
+
2506
+ /*
2507
+ * Returns last modification time recorded in the gzip file header.
2508
+ */
2509
+ static VALUE
2510
+ rb_gzfile_mtime(VALUE obj)
2511
+ {
2512
+ return rb_time_new(get_gzfile(obj)->mtime, (time_t)0);
2513
+ }
2514
+
2515
+ /*
2516
+ * Returns compression level.
2517
+ */
2518
+ static VALUE
2519
+ rb_gzfile_level(VALUE obj)
2520
+ {
2521
+ return INT2FIX(get_gzfile(obj)->level);
2522
+ }
2523
+
2524
+ /*
2525
+ * Returns OS code number recorded in the gzip file header.
2526
+ */
2527
+ static VALUE
2528
+ rb_gzfile_os_code(VALUE obj)
2529
+ {
2530
+ return INT2FIX(get_gzfile(obj)->os_code);
2531
+ }
2532
+
2533
+ /*
2534
+ * Returns original filename recorded in the gzip file header, or +nil+ if
2535
+ * original filename is not present.
2536
+ */
2537
+ static VALUE
2538
+ rb_gzfile_orig_name(VALUE obj)
2539
+ {
2540
+ VALUE str = get_gzfile(obj)->orig_name;
2541
+ if (!NIL_P(str)) {
2542
+ str = rb_str_dup(str);
2543
+ }
2544
+ OBJ_TAINT(str); /* for safe */
2545
+ return str;
2546
+ }
2547
+
2548
+ /*
2549
+ * Returns comments recorded in the gzip file header, or nil if the comments
2550
+ * is not present.
2551
+ */
2552
+ static VALUE
2553
+ rb_gzfile_comment(VALUE obj)
2554
+ {
2555
+ VALUE str = get_gzfile(obj)->comment;
2556
+ if (!NIL_P(str)) {
2557
+ str = rb_str_dup(str);
2558
+ }
2559
+ OBJ_TAINT(str); /* for safe */
2560
+ return str;
2561
+ }
2562
+
2563
+ /*
2564
+ * ???
2565
+ */
2566
+ static VALUE
2567
+ rb_gzfile_lineno(VALUE obj)
2568
+ {
2569
+ return INT2NUM(get_gzfile(obj)->lineno);
2570
+ }
2571
+
2572
+ /*
2573
+ * ???
2574
+ */
2575
+ static VALUE
2576
+ rb_gzfile_set_lineno(VALUE obj, VALUE lineno)
2577
+ {
2578
+ struct gzfile *gz = get_gzfile(obj);
2579
+ gz->lineno = NUM2INT(lineno);
2580
+ return lineno;
2581
+ }
2582
+
2583
+ /*
2584
+ * ???
2585
+ */
2586
+ static VALUE
2587
+ rb_gzfile_set_mtime(VALUE obj, VALUE mtime)
2588
+ {
2589
+ struct gzfile *gz = get_gzfile(obj);
2590
+ VALUE val;
2591
+
2592
+ if (gz->z.flags & GZFILE_FLAG_HEADER_FINISHED) {
2593
+ rb_raise(cGzError, "header is already written");
2594
+ }
2595
+
2596
+ if (FIXNUM_P(mtime)) {
2597
+ gz->mtime = FIX2INT(mtime);
2598
+ }
2599
+ else {
2600
+ val = rb_Integer(mtime);
2601
+ gz->mtime = FIXNUM_P(val) ? FIX2UINT(val) : rb_big2ulong(val);
2602
+ }
2603
+ return mtime;
2604
+ }
2605
+
2606
+ /*
2607
+ * ???
2608
+ */
2609
+ static VALUE
2610
+ rb_gzfile_set_orig_name(VALUE obj, VALUE str)
2611
+ {
2612
+ struct gzfile *gz = get_gzfile(obj);
2613
+ VALUE s;
2614
+ char *p;
2615
+
2616
+ if (gz->z.flags & GZFILE_FLAG_HEADER_FINISHED) {
2617
+ rb_raise(cGzError, "header is already written");
2618
+ }
2619
+ s = rb_str_dup(rb_str_to_str(str));
2620
+ p = memchr(RSTRING_PTR(s), '\0', RSTRING_LEN(s));
2621
+ if (p) {
2622
+ rb_str_resize(s, p - RSTRING_PTR(s));
2623
+ }
2624
+ gz->orig_name = s;
2625
+ return str;
2626
+ }
2627
+
2628
+ /*
2629
+ * ???
2630
+ */
2631
+ static VALUE
2632
+ rb_gzfile_set_comment(VALUE obj, VALUE str)
2633
+ {
2634
+ struct gzfile *gz = get_gzfile(obj);
2635
+ VALUE s;
2636
+ char *p;
2637
+
2638
+ if (gz->z.flags & GZFILE_FLAG_HEADER_FINISHED) {
2639
+ rb_raise(cGzError, "header is already written");
2640
+ }
2641
+ s = rb_str_dup(rb_str_to_str(str));
2642
+ p = memchr(RSTRING_PTR(s), '\0', RSTRING_LEN(s));
2643
+ if (p) {
2644
+ rb_str_resize(s, p - RSTRING_PTR(s));
2645
+ }
2646
+ gz->comment = s;
2647
+ return str;
2648
+ }
2649
+
2650
+ /*
2651
+ * Closes the GzipFile object. This method calls close method of the
2652
+ * associated IO object. Returns the associated IO object.
2653
+ */
2654
+ static VALUE
2655
+ rb_gzfile_close(VALUE obj)
2656
+ {
2657
+ struct gzfile *gz = get_gzfile(obj);
2658
+ VALUE io;
2659
+
2660
+ io = gz->io;
2661
+ gzfile_close(gz, 1);
2662
+ return io;
2663
+ }
2664
+
2665
+ /*
2666
+ * Closes the GzipFile object. Unlike Zlib::GzipFile#close, this method never
2667
+ * calls the close method of the associated IO object. Returns the associated IO
2668
+ * object.
2669
+ */
2670
+ static VALUE
2671
+ rb_gzfile_finish(VALUE obj)
2672
+ {
2673
+ struct gzfile *gz = get_gzfile(obj);
2674
+ VALUE io;
2675
+
2676
+ io = gz->io;
2677
+ gzfile_close(gz, 0);
2678
+ return io;
2679
+ }
2680
+
2681
+ /*
2682
+ * Same as IO.
2683
+ */
2684
+ static VALUE
2685
+ rb_gzfile_closed_p(VALUE obj)
2686
+ {
2687
+ struct gzfile *gz;
2688
+ Data_Get_Struct(obj, struct gzfile, gz);
2689
+ return NIL_P(gz->io) ? Qtrue : Qfalse;
2690
+ }
2691
+
2692
+ /*
2693
+ * ???
2694
+ */
2695
+ static VALUE
2696
+ rb_gzfile_eof_p(VALUE obj)
2697
+ {
2698
+ struct gzfile *gz = get_gzfile(obj);
2699
+ return GZFILE_IS_FINISHED(gz) ? Qtrue : Qfalse;
2700
+ }
2701
+
2702
+ /*
2703
+ * Same as IO.
2704
+ */
2705
+ static VALUE
2706
+ rb_gzfile_sync(VALUE obj)
2707
+ {
2708
+ return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse;
2709
+ }
2710
+
2711
+ /*
2712
+ * call-seq: sync = flag
2713
+ *
2714
+ * Same as IO. If flag is +true+, the associated IO object must respond to the
2715
+ * +flush+ method. While +sync+ mode is +true+, the compression ratio
2716
+ * decreases sharply.
2717
+ */
2718
+ static VALUE
2719
+ rb_gzfile_set_sync(VALUE obj, VALUE mode)
2720
+ {
2721
+ struct gzfile *gz = get_gzfile(obj);
2722
+
2723
+ if (RTEST(mode)) {
2724
+ gz->z.flags |= GZFILE_FLAG_SYNC;
2725
+ }
2726
+ else {
2727
+ gz->z.flags &= ~GZFILE_FLAG_SYNC;
2728
+ }
2729
+ return mode;
2730
+ }
2731
+
2732
+ /*
2733
+ * ???
2734
+ */
2735
+ static VALUE
2736
+ rb_gzfile_total_in(VALUE obj)
2737
+ {
2738
+ return rb_uint2inum(get_gzfile(obj)->z.stream.total_in);
2739
+ }
2740
+
2741
+ /*
2742
+ * ???
2743
+ */
2744
+ static VALUE
2745
+ rb_gzfile_total_out(VALUE obj)
2746
+ {
2747
+ struct gzfile *gz = get_gzfile(obj);
2748
+ return rb_uint2inum(gz->z.stream.total_out - gz->z.buf_filled);
2749
+ }
2750
+
2751
+ /*
2752
+ * Document-method: path
2753
+ *
2754
+ * call-seq: path
2755
+ *
2756
+ * Returns the path string of the associated IO-like object. This
2757
+ * method is only defined when the IO-like object responds to #path().
2758
+ */
2759
+ static VALUE
2760
+ rb_gzfile_path(VALUE obj)
2761
+ {
2762
+ struct gzfile *gz;
2763
+ Data_Get_Struct(obj, struct gzfile, gz);
2764
+ return gz->path;
2765
+ }
2766
+
2767
+ static void
2768
+ rb_gzfile_ecopts(struct gzfile *gz, VALUE opts)
2769
+ {
2770
+ if (!NIL_P(opts)) {
2771
+ rb_io_extract_encoding_option(opts, &gz->enc, &gz->enc2);
2772
+ }
2773
+ if (gz->enc2) {
2774
+ gz->ecflags = rb_econv_prepare_opts(opts, &opts);
2775
+ gz->ec = rb_econv_open_opts(gz->enc2->name, gz->enc->name,
2776
+ gz->ecflags, opts);
2777
+ gz->ecopts = opts;
2778
+ }
2779
+ }
2780
+
2781
+ /* ------------------------------------------------------------------------- */
2782
+
2783
+ /*
2784
+ * Document-class: Zlib::GzipWriter
2785
+ *
2786
+ * Zlib::GzipWriter is a class for writing gzipped files. GzipWriter should
2787
+ * be used with an instance of IO, or IO-like, object.
2788
+ *
2789
+ * For example:
2790
+ *
2791
+ * Zlib::GzipWriter.open('hoge.gz') do |gz|
2792
+ * gz.write 'jugemu jugemu gokou no surikire...'
2793
+ * end
2794
+ *
2795
+ * File.open('hoge.gz', 'w') do |f|
2796
+ * gz = Zlib::GzipWriter.new(f)
2797
+ * gz.write 'jugemu jugemu gokou no surikire...'
2798
+ * gz.close
2799
+ * end
2800
+ *
2801
+ * # TODO: test these. Are they equivalent? Can GzipWriter.new take a
2802
+ * # block?
2803
+ *
2804
+ * NOTE: Due to the limitation of Ruby's finalizer, you must explicitly close
2805
+ * GzipWriter objects by Zlib::GzipWriter#close etc. Otherwise, GzipWriter
2806
+ * will be not able to write the gzip footer and will generate a broken gzip
2807
+ * file.
2808
+ */
2809
+
2810
+ static VALUE
2811
+ rb_gzwriter_s_allocate(VALUE klass)
2812
+ {
2813
+ return gzfile_writer_new(klass);
2814
+ }
2815
+
2816
+ /*
2817
+ * call-seq: Zlib::GzipWriter.open(filename, level=nil, strategy=nil) { |gz| ... }
2818
+ *
2819
+ * Opens a file specified by +filename+ for writing gzip compressed data, and
2820
+ * returns a GzipWriter object associated with that file. Further details of
2821
+ * this method are found in Zlib::GzipWriter.new and Zlib::GzipFile.wrap.
2822
+ */
2823
+ static VALUE
2824
+ rb_gzwriter_s_open(int argc, VALUE *argv, VALUE klass)
2825
+ {
2826
+ return gzfile_s_open(argc, argv, klass, "wb");
2827
+ }
2828
+
2829
+ /*
2830
+ * call-seq: Zlib::GzipWriter.new(io, level, strategy)
2831
+ *
2832
+ * Creates a GzipWriter object associated with +io+. +level+ and +strategy+
2833
+ * should be the same as the arguments of Zlib::Deflate.new. The GzipWriter
2834
+ * object writes gzipped data to +io+. At least, +io+ must respond to the
2835
+ * +write+ method that behaves same as write method in IO class.
2836
+ */
2837
+ static VALUE
2838
+ rb_gzwriter_initialize(int argc, VALUE *argv, VALUE obj)
2839
+ {
2840
+ struct gzfile *gz;
2841
+ VALUE io, level, strategy, opt = Qnil;
2842
+ int err;
2843
+
2844
+ if (argc > 1) {
2845
+ opt = rb_check_convert_type(argv[argc-1], T_HASH, "Hash", "to_hash");
2846
+ if (!NIL_P(opt)) argc--;
2847
+ }
2848
+
2849
+ rb_scan_args(argc, argv, "12", &io, &level, &strategy);
2850
+ Data_Get_Struct(obj, struct gzfile, gz);
2851
+
2852
+ /* this is undocumented feature of zlib */
2853
+ gz->level = ARG_LEVEL(level);
2854
+ err = deflateInit2(&gz->z.stream, gz->level, Z_DEFLATED,
2855
+ -MAX_WBITS, DEF_MEM_LEVEL, ARG_STRATEGY(strategy));
2856
+ if (err != Z_OK) {
2857
+ raise_zlib_error(err, gz->z.stream.msg);
2858
+ }
2859
+ gz->io = io;
2860
+ ZSTREAM_READY(&gz->z);
2861
+ rb_gzfile_ecopts(gz, opt);
2862
+
2863
+ if (rb_respond_to(io, id_path)) {
2864
+ gz->path = rb_funcall(gz->io, id_path, 0);
2865
+ rb_define_singleton_method(obj, "path", rb_gzfile_path, 0);
2866
+ }
2867
+
2868
+ return obj;
2869
+ }
2870
+
2871
+ /*
2872
+ * call-seq: flush(flush=nil)
2873
+ *
2874
+ * Flushes all the internal buffers of the GzipWriter object. The meaning of
2875
+ * +flush+ is same as in Zlib::Deflate#deflate. <tt>Zlib::SYNC_FLUSH</tt> is used if
2876
+ * +flush+ is omitted. It is no use giving flush <tt>Zlib::NO_FLUSH</tt>.
2877
+ */
2878
+ static VALUE
2879
+ rb_gzwriter_flush(int argc, VALUE *argv, VALUE obj)
2880
+ {
2881
+ struct gzfile *gz = get_gzfile(obj);
2882
+ VALUE v_flush;
2883
+ int flush;
2884
+
2885
+ rb_scan_args(argc, argv, "01", &v_flush);
2886
+
2887
+ flush = FIXNUMARG(v_flush, Z_SYNC_FLUSH);
2888
+ if (flush != Z_NO_FLUSH) { /* prevent Z_BUF_ERROR */
2889
+ zstream_run(&gz->z, (Bytef*)"", 0, flush);
2890
+ }
2891
+
2892
+ gzfile_write_raw(gz);
2893
+ if (rb_respond_to(gz->io, id_flush)) {
2894
+ rb_funcall(gz->io, id_flush, 0);
2895
+ }
2896
+ return obj;
2897
+ }
2898
+
2899
+ /*
2900
+ * Same as IO.
2901
+ */
2902
+ static VALUE
2903
+ rb_gzwriter_write(VALUE obj, VALUE str)
2904
+ {
2905
+ struct gzfile *gz = get_gzfile(obj);
2906
+
2907
+ if (TYPE(str) != T_STRING)
2908
+ str = rb_obj_as_string(str);
2909
+ if (gz->enc2 && gz->enc2 != rb_ascii8bit_encoding()) {
2910
+ str = rb_str_conv_enc(str, rb_enc_get(str), gz->enc2);
2911
+ }
2912
+ gzfile_write(gz, (Bytef*)RSTRING_PTR(str), RSTRING_LEN(str));
2913
+ return INT2FIX(RSTRING_LEN(str));
2914
+ }
2915
+
2916
+ /*
2917
+ * Same as IO.
2918
+ */
2919
+ static VALUE
2920
+ rb_gzwriter_putc(VALUE obj, VALUE ch)
2921
+ {
2922
+ struct gzfile *gz = get_gzfile(obj);
2923
+ char c = NUM2CHR(ch);
2924
+
2925
+ gzfile_write(gz, (Bytef*)&c, 1);
2926
+ return ch;
2927
+ }
2928
+
2929
+
2930
+
2931
+ /*
2932
+ * Document-method: <<
2933
+ * Same as IO.
2934
+ */
2935
+ #define rb_gzwriter_addstr rb_io_addstr
2936
+ /*
2937
+ * Document-method: printf
2938
+ * Same as IO.
2939
+ */
2940
+ #define rb_gzwriter_printf rb_io_printf
2941
+ /*
2942
+ * Document-method: print
2943
+ * Same as IO.
2944
+ */
2945
+ #define rb_gzwriter_print rb_io_print
2946
+ /*
2947
+ * Document-method: puts
2948
+ * Same as IO.
2949
+ */
2950
+ #define rb_gzwriter_puts rb_io_puts
2951
+
2952
+
2953
+ /* ------------------------------------------------------------------------- */
2954
+
2955
+ /*
2956
+ * Document-class: Zlib::GzipReader
2957
+ *
2958
+ * Zlib::GzipReader is the class for reading a gzipped file. GzipReader should
2959
+ * be used an IO, or -IO-lie, object.
2960
+ *
2961
+ * Zlib::GzipReader.open('hoge.gz') {|gz|
2962
+ * print gz.read
2963
+ * }
2964
+ *
2965
+ * File.open('hoge.gz') do |f|
2966
+ * gz = Zlib::GzipReader.new(f)
2967
+ * print gz.read
2968
+ * gz.close
2969
+ * end
2970
+ *
2971
+ * # TODO: test these. Are they equivalent? Can GzipReader.new take a
2972
+ * # block?
2973
+ *
2974
+ * == Method Catalogue
2975
+ *
2976
+ * The following methods in Zlib::GzipReader are just like their counterparts
2977
+ * in IO, but they raise Zlib::Error or Zlib::GzipFile::Error exception if an
2978
+ * error was found in the gzip file.
2979
+ * - #each
2980
+ * - #each_line
2981
+ * - #each_byte
2982
+ * - #gets
2983
+ * - #getc
2984
+ * - #lineno
2985
+ * - #lineno=
2986
+ * - #read
2987
+ * - #readchar
2988
+ * - #readline
2989
+ * - #readlines
2990
+ * - #ungetc
2991
+ *
2992
+ * Be careful of the footer of the gzip file. A gzip file has the checksum of
2993
+ * pre-compressed data in its footer. GzipReader checks all uncompressed data
2994
+ * against that checksum at the following cases, and if it fails, raises
2995
+ * <tt>Zlib::GzipFile::NoFooter</tt>, <tt>Zlib::GzipFile::CRCError</tt>, or
2996
+ * <tt>Zlib::GzipFile::LengthError</tt> exception.
2997
+ *
2998
+ * - When an reading request is received beyond the end of file (the end of
2999
+ * compressed data). That is, when Zlib::GzipReader#read,
3000
+ * Zlib::GzipReader#gets, or some other methods for reading returns nil.
3001
+ * - When Zlib::GzipFile#close method is called after the object reaches the
3002
+ * end of file.
3003
+ * - When Zlib::GzipReader#unused method is called after the object reaches
3004
+ * the end of file.
3005
+ *
3006
+ * The rest of the methods are adequately described in their own
3007
+ * documentation.
3008
+ */
3009
+
3010
+ static VALUE
3011
+ rb_gzreader_s_allocate(VALUE klass)
3012
+ {
3013
+ return gzfile_reader_new(klass);
3014
+ }
3015
+
3016
+ /*
3017
+ * call-seq: Zlib::GzipReader.open(filename) {|gz| ... }
3018
+ *
3019
+ * Opens a file specified by +filename+ as a gzipped file, and returns a
3020
+ * GzipReader object associated with that file. Further details of this method
3021
+ * are in Zlib::GzipReader.new and ZLib::GzipFile.wrap.
3022
+ */
3023
+ static VALUE
3024
+ rb_gzreader_s_open(int argc, VALUE *argv, VALUE klass)
3025
+ {
3026
+ return gzfile_s_open(argc, argv, klass, "rb");
3027
+ }
3028
+
3029
+ /*
3030
+ * call-seq: Zlib::GzipReader.new(io)
3031
+ *
3032
+ * Creates a GzipReader object associated with +io+. The GzipReader object reads
3033
+ * gzipped data from +io+, and parses/decompresses them. At least, +io+ must have
3034
+ * a +read+ method that behaves same as the +read+ method in IO class.
3035
+ *
3036
+ * If the gzip file header is incorrect, raises an Zlib::GzipFile::Error
3037
+ * exception.
3038
+ */
3039
+ static VALUE
3040
+ rb_gzreader_initialize(int argc, VALUE *argv, VALUE obj)
3041
+ {
3042
+ VALUE io, opt = Qnil;
3043
+ struct gzfile *gz;
3044
+ int err;
3045
+
3046
+ Data_Get_Struct(obj, struct gzfile, gz);
3047
+ if (argc > 1) {
3048
+ opt = rb_check_convert_type(argv[argc-1], T_HASH, "Hash", "to_hash");
3049
+ if (!NIL_P(opt)) argc--;
3050
+ }
3051
+ rb_scan_args(argc, argv, "1", &io);
3052
+
3053
+ /* this is undocumented feature of zlib */
3054
+ err = inflateInit2(&gz->z.stream, -MAX_WBITS);
3055
+ if (err != Z_OK) {
3056
+ raise_zlib_error(err, gz->z.stream.msg);
3057
+ }
3058
+ gz->io = io;
3059
+ ZSTREAM_READY(&gz->z);
3060
+ gzfile_read_header(gz);
3061
+ rb_gzfile_ecopts(gz, opt);
3062
+
3063
+ if (rb_respond_to(io, id_path)) {
3064
+ gz->path = rb_funcall(gz->io, id_path, 0);
3065
+ rb_define_singleton_method(obj, "path", rb_gzfile_path, 0);
3066
+ }
3067
+
3068
+ return obj;
3069
+ }
3070
+
3071
+ /*
3072
+ * Resets the position of the file pointer to the point created the GzipReader
3073
+ * object. The associated IO object needs to respond to the +seek+ method.
3074
+ */
3075
+ static VALUE
3076
+ rb_gzreader_rewind(VALUE obj)
3077
+ {
3078
+ struct gzfile *gz = get_gzfile(obj);
3079
+ gzfile_reader_rewind(gz);
3080
+ return INT2FIX(0);
3081
+ }
3082
+
3083
+ /*
3084
+ * Returns the rest of the data which had read for parsing gzip format, or
3085
+ * +nil+ if the whole gzip file is not parsed yet.
3086
+ */
3087
+ static VALUE
3088
+ rb_gzreader_unused(VALUE obj)
3089
+ {
3090
+ struct gzfile *gz;
3091
+ Data_Get_Struct(obj, struct gzfile, gz);
3092
+ return gzfile_reader_get_unused(gz);
3093
+ }
3094
+
3095
+ /*
3096
+ * See Zlib::GzipReader documentation for a description.
3097
+ */
3098
+ static VALUE
3099
+ rb_gzreader_read(int argc, VALUE *argv, VALUE obj)
3100
+ {
3101
+ struct gzfile *gz = get_gzfile(obj);
3102
+ VALUE vlen;
3103
+ int len;
3104
+
3105
+ rb_scan_args(argc, argv, "01", &vlen);
3106
+ if (NIL_P(vlen)) {
3107
+ return gzfile_read_all(gz);
3108
+ }
3109
+
3110
+ len = NUM2INT(vlen);
3111
+ if (len < 0) {
3112
+ rb_raise(rb_eArgError, "negative length %d given", len);
3113
+ }
3114
+ return gzfile_read(gz, len);
3115
+ }
3116
+
3117
+ /*
3118
+ * call-seq:
3119
+ * gzipreader.readpartial(maxlen [, outbuf]) => string, outbuf
3120
+ *
3121
+ * Reads at most <i>maxlen</i> bytes from the gziped stream but
3122
+ * it blocks only if <em>gzipreader</em> has no data immediately available.
3123
+ * If the optional <i>outbuf</i> argument is present,
3124
+ * it must reference a String, which will receive the data.
3125
+ * It raises <code>EOFError</code> on end of file.
3126
+ */
3127
+ static VALUE
3128
+ rb_gzreader_readpartial(int argc, VALUE *argv, VALUE obj)
3129
+ {
3130
+ struct gzfile *gz = get_gzfile(obj);
3131
+ VALUE vlen, outbuf;
3132
+ int len;
3133
+
3134
+ rb_scan_args(argc, argv, "11", &vlen, &outbuf);
3135
+
3136
+ len = NUM2INT(vlen);
3137
+ if (len < 0) {
3138
+ rb_raise(rb_eArgError, "negative length %d given", len);
3139
+ }
3140
+ if (!NIL_P(outbuf))
3141
+ Check_Type(outbuf, T_STRING);
3142
+ return gzfile_readpartial(gz, len, outbuf);
3143
+ }
3144
+
3145
+ /*
3146
+ * See Zlib::GzipReader documentation for a description.
3147
+ */
3148
+ static VALUE
3149
+ rb_gzreader_getc(VALUE obj)
3150
+ {
3151
+ struct gzfile *gz = get_gzfile(obj);
3152
+
3153
+ return gzfile_getc(gz);
3154
+ }
3155
+
3156
+ /*
3157
+ * See Zlib::GzipReader documentation for a description.
3158
+ */
3159
+ static VALUE
3160
+ rb_gzreader_readchar(VALUE obj)
3161
+ {
3162
+ VALUE dst;
3163
+ dst = rb_gzreader_getc(obj);
3164
+ if (NIL_P(dst)) {
3165
+ rb_raise(rb_eEOFError, "end of file reached");
3166
+ }
3167
+ return dst;
3168
+ }
3169
+
3170
+ /*
3171
+ * See Zlib::GzipReader documentation for a description.
3172
+ */
3173
+ static VALUE
3174
+ rb_gzreader_getbyte(VALUE obj)
3175
+ {
3176
+ struct gzfile *gz = get_gzfile(obj);
3177
+ VALUE dst;
3178
+
3179
+ dst = gzfile_read(gz, 1);
3180
+ if (!NIL_P(dst)) {
3181
+ dst = INT2FIX((unsigned int)(RSTRING_PTR(dst)[0]) & 0xff);
3182
+ }
3183
+ return dst;
3184
+ }
3185
+
3186
+ /*
3187
+ * See Zlib::GzipReader documentation for a description.
3188
+ */
3189
+ static VALUE
3190
+ rb_gzreader_readbyte(VALUE obj)
3191
+ {
3192
+ VALUE dst;
3193
+ dst = rb_gzreader_getbyte(obj);
3194
+ if (NIL_P(dst)) {
3195
+ rb_raise(rb_eEOFError, "end of file reached");
3196
+ }
3197
+ return dst;
3198
+ }
3199
+
3200
+ /*
3201
+ * See Zlib::GzipReader documentation for a description.
3202
+ */
3203
+ static VALUE
3204
+ rb_gzreader_each_char(VALUE obj)
3205
+ {
3206
+ VALUE c;
3207
+
3208
+ RETURN_ENUMERATOR(obj, 0, 0);
3209
+
3210
+ while (!NIL_P(c = rb_gzreader_getc(obj))) {
3211
+ rb_yield(c);
3212
+ }
3213
+ return Qnil;
3214
+ }
3215
+
3216
+ /*
3217
+ * See Zlib::GzipReader documentation for a description.
3218
+ */
3219
+ static VALUE
3220
+ rb_gzreader_each_byte(VALUE obj)
3221
+ {
3222
+ VALUE c;
3223
+
3224
+ RETURN_ENUMERATOR(obj, 0, 0);
3225
+
3226
+ while (!NIL_P(c = rb_gzreader_getbyte(obj))) {
3227
+ rb_yield(c);
3228
+ }
3229
+ return Qnil;
3230
+ }
3231
+
3232
+ /*
3233
+ * See Zlib::GzipReader documentation for a description.
3234
+ */
3235
+ static VALUE
3236
+ rb_gzreader_ungetc(VALUE obj, VALUE s)
3237
+ {
3238
+ struct gzfile *gz;
3239
+
3240
+ if (FIXNUM_P(s))
3241
+ return rb_gzreader_ungetbyte(obj, s);
3242
+ gz = get_gzfile(obj);
3243
+ StringValue(s);
3244
+ if (gz->enc2 && gz->enc2 != rb_ascii8bit_encoding()) {
3245
+ s = rb_str_conv_enc(s, rb_enc_get(s), gz->enc2);
3246
+ }
3247
+ gzfile_ungets(gz, (const Bytef*)RSTRING_PTR(s), RSTRING_LEN(s));
3248
+ return Qnil;
3249
+ }
3250
+
3251
+ /*
3252
+ * See Zlib::GzipReader documentation for a description.
3253
+ */
3254
+ static VALUE
3255
+ rb_gzreader_ungetbyte(VALUE obj, VALUE ch)
3256
+ {
3257
+ struct gzfile *gz = get_gzfile(obj);
3258
+ gzfile_ungetbyte(gz, NUM2CHR(ch));
3259
+ return Qnil;
3260
+ }
3261
+
3262
+ static void
3263
+ gzreader_skip_linebreaks(struct gzfile *gz)
3264
+ {
3265
+ VALUE str;
3266
+ char *p;
3267
+ int n;
3268
+
3269
+ while (gz->z.buf_filled == 0) {
3270
+ if (GZFILE_IS_FINISHED(gz)) return;
3271
+ gzfile_read_more(gz);
3272
+ }
3273
+ n = 0;
3274
+ p = RSTRING_PTR(gz->z.buf);
3275
+
3276
+ while (n++, *(p++) == '\n') {
3277
+ if (n >= gz->z.buf_filled) {
3278
+ str = zstream_detach_buffer(&gz->z);
3279
+ gzfile_calc_crc(gz, str);
3280
+ while (gz->z.buf_filled == 0) {
3281
+ if (GZFILE_IS_FINISHED(gz)) return;
3282
+ gzfile_read_more(gz);
3283
+ }
3284
+ n = 0;
3285
+ p = RSTRING_PTR(gz->z.buf);
3286
+ }
3287
+ }
3288
+
3289
+ str = zstream_shift_buffer(&gz->z, n - 1);
3290
+ gzfile_calc_crc(gz, str);
3291
+ }
3292
+
3293
+ static void
3294
+ rscheck(const char *rsptr, long rslen, VALUE rs)
3295
+ {
3296
+ if (RSTRING_PTR(rs) != rsptr && RSTRING_LEN(rs) != rslen)
3297
+ rb_raise(rb_eRuntimeError, "rs modified");
3298
+ }
3299
+
3300
+ static VALUE
3301
+ gzreader_gets(int argc, VALUE *argv, VALUE obj)
3302
+ {
3303
+ struct gzfile *gz = get_gzfile(obj);
3304
+ volatile VALUE rs;
3305
+ VALUE dst;
3306
+ const char *rsptr;
3307
+ char *p, *res;
3308
+ long rslen, n;
3309
+ int rspara;
3310
+
3311
+ if (argc == 0) {
3312
+ rs = rb_rs;
3313
+ }
3314
+ else {
3315
+ rb_scan_args(argc, argv, "1", &rs);
3316
+ if (!NIL_P(rs)) {
3317
+ Check_Type(rs, T_STRING);
3318
+ }
3319
+ }
3320
+
3321
+ if (NIL_P(rs)) {
3322
+ dst = gzfile_read_all(gz);
3323
+ if (RSTRING_LEN(dst) != 0) gz->lineno++;
3324
+ else
3325
+ return Qnil;
3326
+ return dst;
3327
+ }
3328
+
3329
+ if (RSTRING_LEN(rs) == 0) {
3330
+ rsptr = "\n\n";
3331
+ rslen = 2;
3332
+ rspara = 1;
3333
+ } else {
3334
+ rsptr = RSTRING_PTR(rs);
3335
+ rslen = RSTRING_LEN(rs);
3336
+ rspara = 0;
3337
+ }
3338
+
3339
+ if (rspara) {
3340
+ gzreader_skip_linebreaks(gz);
3341
+ }
3342
+
3343
+ while (gz->z.buf_filled < rslen) {
3344
+ if (ZSTREAM_IS_FINISHED(&gz->z)) {
3345
+ if (gz->z.buf_filled > 0) gz->lineno++;
3346
+ return gzfile_read(gz, rslen);
3347
+ }
3348
+ gzfile_read_more(gz);
3349
+ }
3350
+
3351
+ p = RSTRING_PTR(gz->z.buf);
3352
+ n = rslen;
3353
+ for (;;) {
3354
+ if (n > gz->z.buf_filled) {
3355
+ if (ZSTREAM_IS_FINISHED(&gz->z)) break;
3356
+ gzfile_read_more(gz);
3357
+ p = RSTRING_PTR(gz->z.buf) + n - rslen;
3358
+ }
3359
+ if (!rspara) rscheck(rsptr, rslen, rs);
3360
+ res = memchr(p, rsptr[0], (gz->z.buf_filled - n + 1));
3361
+ if (!res) {
3362
+ n = gz->z.buf_filled + 1;
3363
+ } else {
3364
+ n += (long)(res - p);
3365
+ p = res;
3366
+ if (rslen == 1 || memcmp(p, rsptr, rslen) == 0) break;
3367
+ p++, n++;
3368
+ }
3369
+ }
3370
+
3371
+ gz->lineno++;
3372
+ dst = gzfile_read(gz, n);
3373
+ if (rspara) {
3374
+ gzreader_skip_linebreaks(gz);
3375
+ }
3376
+
3377
+ return gzfile_newstr(gz, dst);
3378
+ }
3379
+
3380
+ /*
3381
+ * See Zlib::GzipReader documentation for a description.
3382
+ */
3383
+ static VALUE
3384
+ rb_gzreader_gets(int argc, VALUE *argv, VALUE obj)
3385
+ {
3386
+ VALUE dst;
3387
+ dst = gzreader_gets(argc, argv, obj);
3388
+ if (!NIL_P(dst)) {
3389
+ rb_lastline_set(dst);
3390
+ }
3391
+ return dst;
3392
+ }
3393
+
3394
+ /*
3395
+ * See Zlib::GzipReader documentation for a description.
3396
+ */
3397
+ static VALUE
3398
+ rb_gzreader_readline(int argc, VALUE *argv, VALUE obj)
3399
+ {
3400
+ VALUE dst;
3401
+ dst = rb_gzreader_gets(argc, argv, obj);
3402
+ if (NIL_P(dst)) {
3403
+ rb_raise(rb_eEOFError, "end of file reached");
3404
+ }
3405
+ return dst;
3406
+ }
3407
+
3408
+ /*
3409
+ * See Zlib::GzipReader documentation for a description.
3410
+ */
3411
+ static VALUE
3412
+ rb_gzreader_each(int argc, VALUE *argv, VALUE obj)
3413
+ {
3414
+ VALUE str;
3415
+
3416
+ RETURN_ENUMERATOR(obj, 0, 0);
3417
+
3418
+ while (!NIL_P(str = gzreader_gets(argc, argv, obj))) {
3419
+ rb_yield(str);
3420
+ }
3421
+ return obj;
3422
+ }
3423
+
3424
+ /*
3425
+ * See Zlib::GzipReader documentation for a description.
3426
+ */
3427
+ static VALUE
3428
+ rb_gzreader_readlines(int argc, VALUE *argv, VALUE obj)
3429
+ {
3430
+ VALUE str, dst;
3431
+ dst = rb_ary_new();
3432
+ while (!NIL_P(str = gzreader_gets(argc, argv, obj))) {
3433
+ rb_ary_push(dst, str);
3434
+ }
3435
+ return dst;
3436
+ }
3437
+
3438
+ #endif /* GZIP_SUPPORT */
3439
+
3440
+
3441
+
3442
+ /*
3443
+ * The Zlib module contains several classes for compressing and decompressing
3444
+ * streams, and for working with "gzip" files.
3445
+ *
3446
+ * == Classes
3447
+ *
3448
+ * Following are the classes that are most likely to be of interest to the
3449
+ * user:
3450
+ * Zlib::Inflate
3451
+ * Zlib::Deflate
3452
+ * Zlib::GzipReader
3453
+ * Zlib::GzipWriter
3454
+ *
3455
+ * There are two important base classes for the classes above: Zlib::ZStream
3456
+ * and Zlib::GzipFile. Everything else is an error class.
3457
+ *
3458
+ * == Constants
3459
+ *
3460
+ * Here's a list.
3461
+ *
3462
+ * Zlib::VERSION
3463
+ * The Ruby/zlib version string.
3464
+ *
3465
+ * Zlib::ZLIB_VERSION
3466
+ * The string which represents the version of zlib.h.
3467
+ *
3468
+ * Zlib::BINARY
3469
+ * Zlib::ASCII
3470
+ * Zlib::UNKNOWN
3471
+ * The integers representing data types which Zlib::ZStream#data_type
3472
+ * method returns.
3473
+ *
3474
+ * Zlib::NO_COMPRESSION
3475
+ * Zlib::BEST_SPEED
3476
+ * Zlib::BEST_COMPRESSION
3477
+ * Zlib::DEFAULT_COMPRESSION
3478
+ * The integers representing compression levels which are an argument
3479
+ * for Zlib::Deflate.new, Zlib::Deflate#deflate, and so on.
3480
+ *
3481
+ * Zlib::FILTERED
3482
+ * Zlib::HUFFMAN_ONLY
3483
+ * Zlib::DEFAULT_STRATEGY
3484
+ * The integers representing compression methods which are an argument
3485
+ * for Zlib::Deflate.new and Zlib::Deflate#params.
3486
+ *
3487
+ * Zlib::DEF_MEM_LEVEL
3488
+ * Zlib::MAX_MEM_LEVEL
3489
+ * The integers representing memory levels which are an argument for
3490
+ * Zlib::Deflate.new, Zlib::Deflate#params, and so on.
3491
+ *
3492
+ * Zlib::MAX_WBITS
3493
+ * The default value of windowBits which is an argument for
3494
+ * Zlib::Deflate.new and Zlib::Inflate.new.
3495
+ *
3496
+ * Zlib::NO_FLUSH
3497
+ * Zlib::SYNC_FLUSH
3498
+ * Zlib::FULL_FLUSH
3499
+ * Zlib::FINISH
3500
+ * The integers to control the output of the deflate stream, which are
3501
+ * an argument for Zlib::Deflate#deflate and so on.
3502
+ *
3503
+ * Zlib::OS_CODE
3504
+ * Zlib::OS_MSDOS
3505
+ * Zlib::OS_AMIGA
3506
+ * Zlib::OS_VMS
3507
+ * Zlib::OS_UNIX
3508
+ * Zlib::OS_VMCMS
3509
+ * Zlib::OS_ATARI
3510
+ * Zlib::OS_OS2
3511
+ * Zlib::OS_MACOS
3512
+ * Zlib::OS_ZSYSTEM
3513
+ * Zlib::OS_CPM
3514
+ * Zlib::OS_TOPS20
3515
+ * Zlib::OS_WIN32
3516
+ * Zlib::OS_QDOS
3517
+ * Zlib::OS_RISCOS
3518
+ * Zlib::OS_UNKNOWN
3519
+ * The return values of Zlib::GzipFile#os_code method.
3520
+ */
3521
+ void
3522
+ Init_zlib()
3523
+ {
3524
+ VALUE mZlib, cZStream, cDeflate, cInflate;
3525
+ #if GZIP_SUPPORT
3526
+ VALUE cGzipFile, cGzipWriter, cGzipReader;
3527
+ #endif
3528
+
3529
+ mZlib = rb_define_module("Zlib");
3530
+
3531
+ cZError = rb_define_class_under(mZlib, "Error", rb_eStandardError);
3532
+ cStreamEnd = rb_define_class_under(mZlib, "StreamEnd", cZError);
3533
+ cNeedDict = rb_define_class_under(mZlib, "NeedDict", cZError);
3534
+ cDataError = rb_define_class_under(mZlib, "DataError", cZError);
3535
+ cStreamError = rb_define_class_under(mZlib, "StreamError", cZError);
3536
+ cMemError = rb_define_class_under(mZlib, "MemError", cZError);
3537
+ cBufError = rb_define_class_under(mZlib, "BufError", cZError);
3538
+ cVersionError = rb_define_class_under(mZlib, "VersionError", cZError);
3539
+
3540
+ rb_define_module_function(mZlib, "zlib_version", rb_zlib_version, 0);
3541
+ rb_define_module_function(mZlib, "adler32", rb_zlib_adler32, -1);
3542
+ rb_define_module_function(mZlib, "adler32_combine", rb_zlib_adler32_combine, 3);
3543
+ rb_define_module_function(mZlib, "crc32", rb_zlib_crc32, -1);
3544
+ rb_define_module_function(mZlib, "crc32_combine", rb_zlib_crc32_combine, 3);
3545
+ rb_define_module_function(mZlib, "crc_table", rb_zlib_crc_table, 0);
3546
+
3547
+ rb_define_const(mZlib, "VERSION", rb_str_new2(RUBY_ZLIB_VERSION));
3548
+ rb_define_const(mZlib, "ZLIB_VERSION", rb_str_new2(ZLIB_VERSION));
3549
+
3550
+ cZStream = rb_define_class_under(mZlib, "ZStream", rb_cObject);
3551
+ rb_undef_alloc_func(cZStream);
3552
+ rb_define_method(cZStream, "avail_out", rb_zstream_avail_out, 0);
3553
+ rb_define_method(cZStream, "avail_out=", rb_zstream_set_avail_out, 1);
3554
+ rb_define_method(cZStream, "avail_in", rb_zstream_avail_in, 0);
3555
+ rb_define_method(cZStream, "total_in", rb_zstream_total_in, 0);
3556
+ rb_define_method(cZStream, "total_out", rb_zstream_total_out, 0);
3557
+ rb_define_method(cZStream, "data_type", rb_zstream_data_type, 0);
3558
+ rb_define_method(cZStream, "adler", rb_zstream_adler, 0);
3559
+ rb_define_method(cZStream, "finished?", rb_zstream_finished_p, 0);
3560
+ rb_define_method(cZStream, "stream_end?", rb_zstream_finished_p, 0);
3561
+ rb_define_method(cZStream, "closed?", rb_zstream_closed_p, 0);
3562
+ rb_define_method(cZStream, "ended?", rb_zstream_closed_p, 0);
3563
+ rb_define_method(cZStream, "close", rb_zstream_end, 0);
3564
+ rb_define_method(cZStream, "end", rb_zstream_end, 0);
3565
+ rb_define_method(cZStream, "reset", rb_zstream_reset, 0);
3566
+ rb_define_method(cZStream, "finish", rb_zstream_finish, 0);
3567
+ rb_define_method(cZStream, "flush_next_in", rb_zstream_flush_next_in, 0);
3568
+ rb_define_method(cZStream, "flush_next_out", rb_zstream_flush_next_out, 0);
3569
+
3570
+ rb_define_const(mZlib, "BINARY", INT2FIX(Z_BINARY));
3571
+ rb_define_const(mZlib, "ASCII", INT2FIX(Z_ASCII));
3572
+ rb_define_const(mZlib, "UNKNOWN", INT2FIX(Z_UNKNOWN));
3573
+
3574
+ cDeflate = rb_define_class_under(mZlib, "Deflate", cZStream);
3575
+ rb_define_singleton_method(cDeflate, "deflate", rb_deflate_s_deflate, -1);
3576
+ rb_define_alloc_func(cDeflate, rb_deflate_s_allocate);
3577
+ rb_define_method(cDeflate, "initialize", rb_deflate_initialize, -1);
3578
+ rb_define_method(cDeflate, "initialize_copy", rb_deflate_init_copy, 1);
3579
+ rb_define_method(cDeflate, "deflate", rb_deflate_deflate, -1);
3580
+ rb_define_method(cDeflate, "<<", rb_deflate_addstr, 1);
3581
+ rb_define_method(cDeflate, "flush", rb_deflate_flush, -1);
3582
+ rb_define_method(cDeflate, "params", rb_deflate_params, 2);
3583
+ rb_define_method(cDeflate, "set_dictionary", rb_deflate_set_dictionary, 1);
3584
+
3585
+ cInflate = rb_define_class_under(mZlib, "Inflate", cZStream);
3586
+ rb_define_singleton_method(cInflate, "inflate", rb_inflate_s_inflate, 1);
3587
+ rb_define_alloc_func(cInflate, rb_inflate_s_allocate);
3588
+ rb_define_method(cInflate, "initialize", rb_inflate_initialize, -1);
3589
+ rb_define_method(cInflate, "inflate", rb_inflate_inflate, 1);
3590
+ rb_define_method(cInflate, "<<", rb_inflate_addstr, 1);
3591
+ rb_define_method(cInflate, "sync", rb_inflate_sync, 1);
3592
+ rb_define_method(cInflate, "sync_point?", rb_inflate_sync_point_p, 0);
3593
+ rb_define_method(cInflate, "set_dictionary", rb_inflate_set_dictionary, 1);
3594
+
3595
+ rb_define_const(mZlib, "NO_COMPRESSION", INT2FIX(Z_NO_COMPRESSION));
3596
+ rb_define_const(mZlib, "BEST_SPEED", INT2FIX(Z_BEST_SPEED));
3597
+ rb_define_const(mZlib, "BEST_COMPRESSION", INT2FIX(Z_BEST_COMPRESSION));
3598
+ rb_define_const(mZlib, "DEFAULT_COMPRESSION",
3599
+ INT2FIX(Z_DEFAULT_COMPRESSION));
3600
+
3601
+ rb_define_const(mZlib, "FILTERED", INT2FIX(Z_FILTERED));
3602
+ rb_define_const(mZlib, "HUFFMAN_ONLY", INT2FIX(Z_HUFFMAN_ONLY));
3603
+ rb_define_const(mZlib, "DEFAULT_STRATEGY", INT2FIX(Z_DEFAULT_STRATEGY));
3604
+
3605
+ rb_define_const(mZlib, "MAX_WBITS", INT2FIX(MAX_WBITS));
3606
+ rb_define_const(mZlib, "DEF_MEM_LEVEL", INT2FIX(DEF_MEM_LEVEL));
3607
+ rb_define_const(mZlib, "MAX_MEM_LEVEL", INT2FIX(MAX_MEM_LEVEL));
3608
+
3609
+ rb_define_const(mZlib, "NO_FLUSH", INT2FIX(Z_NO_FLUSH));
3610
+ rb_define_const(mZlib, "SYNC_FLUSH", INT2FIX(Z_SYNC_FLUSH));
3611
+ rb_define_const(mZlib, "FULL_FLUSH", INT2FIX(Z_FULL_FLUSH));
3612
+ rb_define_const(mZlib, "FINISH", INT2FIX(Z_FINISH));
3613
+
3614
+ #if GZIP_SUPPORT
3615
+ id_write = rb_intern("write");
3616
+ id_read = rb_intern("read");
3617
+ id_readpartial = rb_intern("readpartial");
3618
+ id_flush = rb_intern("flush");
3619
+ id_seek = rb_intern("seek");
3620
+ id_close = rb_intern("close");
3621
+ id_path = rb_intern("path");
3622
+
3623
+ cGzipFile = rb_define_class_under(mZlib, "GzipFile", rb_cObject);
3624
+ cGzError = rb_define_class_under(cGzipFile, "Error", cZError);
3625
+
3626
+ cNoFooter = rb_define_class_under(cGzipFile, "NoFooter", cGzError);
3627
+ cCRCError = rb_define_class_under(cGzipFile, "CRCError", cGzError);
3628
+ cLengthError = rb_define_class_under(cGzipFile,"LengthError",cGzError);
3629
+
3630
+ cGzipWriter = rb_define_class_under(mZlib, "GzipWriter", cGzipFile);
3631
+ cGzipReader = rb_define_class_under(mZlib, "GzipReader", cGzipFile);
3632
+ rb_include_module(cGzipReader, rb_mEnumerable);
3633
+
3634
+ rb_define_singleton_method(cGzipFile, "wrap", rb_gzfile_s_wrap, -1);
3635
+ rb_undef_alloc_func(cGzipFile);
3636
+ rb_define_method(cGzipFile, "to_io", rb_gzfile_to_io, 0);
3637
+ rb_define_method(cGzipFile, "crc", rb_gzfile_crc, 0);
3638
+ rb_define_method(cGzipFile, "mtime", rb_gzfile_mtime, 0);
3639
+ rb_define_method(cGzipFile, "level", rb_gzfile_level, 0);
3640
+ rb_define_method(cGzipFile, "os_code", rb_gzfile_os_code, 0);
3641
+ rb_define_method(cGzipFile, "orig_name", rb_gzfile_orig_name, 0);
3642
+ rb_define_method(cGzipFile, "comment", rb_gzfile_comment, 0);
3643
+ rb_define_method(cGzipReader, "lineno", rb_gzfile_lineno, 0);
3644
+ rb_define_method(cGzipReader, "lineno=", rb_gzfile_set_lineno, 1);
3645
+ rb_define_method(cGzipWriter, "mtime=", rb_gzfile_set_mtime, 1);
3646
+ rb_define_method(cGzipWriter, "orig_name=", rb_gzfile_set_orig_name,1);
3647
+ rb_define_method(cGzipWriter, "comment=", rb_gzfile_set_comment, 1);
3648
+ rb_define_method(cGzipFile, "close", rb_gzfile_close, 0);
3649
+ rb_define_method(cGzipFile, "finish", rb_gzfile_finish, 0);
3650
+ rb_define_method(cGzipFile, "closed?", rb_gzfile_closed_p, 0);
3651
+ rb_define_method(cGzipReader, "eof", rb_gzfile_eof_p, 0);
3652
+ rb_define_method(cGzipReader, "eof?", rb_gzfile_eof_p, 0);
3653
+ rb_define_method(cGzipFile, "sync", rb_gzfile_sync, 0);
3654
+ rb_define_method(cGzipFile, "sync=", rb_gzfile_set_sync, 1);
3655
+ rb_define_method(cGzipReader, "pos", rb_gzfile_total_out, 0);
3656
+ rb_define_method(cGzipWriter, "pos", rb_gzfile_total_in, 0);
3657
+ rb_define_method(cGzipReader, "tell", rb_gzfile_total_out, 0);
3658
+ rb_define_method(cGzipWriter, "tell", rb_gzfile_total_in, 0);
3659
+
3660
+ rb_define_singleton_method(cGzipWriter, "open", rb_gzwriter_s_open,-1);
3661
+ rb_define_alloc_func(cGzipWriter, rb_gzwriter_s_allocate);
3662
+ rb_define_method(cGzipWriter, "initialize", rb_gzwriter_initialize,-1);
3663
+ rb_define_method(cGzipWriter, "flush", rb_gzwriter_flush, -1);
3664
+ rb_define_method(cGzipWriter, "write", rb_gzwriter_write, 1);
3665
+ rb_define_method(cGzipWriter, "putc", rb_gzwriter_putc, 1);
3666
+ rb_define_method(cGzipWriter, "<<", rb_gzwriter_addstr, 1);
3667
+ rb_define_method(cGzipWriter, "printf", rb_gzwriter_printf, -1);
3668
+ rb_define_method(cGzipWriter, "print", rb_gzwriter_print, -1);
3669
+ rb_define_method(cGzipWriter, "puts", rb_gzwriter_puts, -1);
3670
+
3671
+ rb_define_singleton_method(cGzipReader, "open", rb_gzreader_s_open,-1);
3672
+ rb_define_alloc_func(cGzipReader, rb_gzreader_s_allocate);
3673
+ rb_define_method(cGzipReader, "initialize", rb_gzreader_initialize, -1);
3674
+ rb_define_method(cGzipReader, "rewind", rb_gzreader_rewind, 0);
3675
+ rb_define_method(cGzipReader, "unused", rb_gzreader_unused, 0);
3676
+ rb_define_method(cGzipReader, "read", rb_gzreader_read, -1);
3677
+ rb_define_method(cGzipReader, "readpartial", rb_gzreader_readpartial, -1);
3678
+ rb_define_method(cGzipReader, "getc", rb_gzreader_getc, 0);
3679
+ rb_define_method(cGzipReader, "getbyte", rb_gzreader_getbyte, 0);
3680
+ rb_define_method(cGzipReader, "readchar", rb_gzreader_readchar, 0);
3681
+ rb_define_method(cGzipReader, "readbyte", rb_gzreader_readbyte, 0);
3682
+ rb_define_method(cGzipReader, "each_byte", rb_gzreader_each_byte, 0);
3683
+ rb_define_method(cGzipReader, "each_char", rb_gzreader_each_char, 0);
3684
+ rb_define_method(cGzipReader, "bytes", rb_gzreader_each_byte, 0);
3685
+ rb_define_method(cGzipReader, "ungetc", rb_gzreader_ungetc, 1);
3686
+ rb_define_method(cGzipReader, "ungetbyte", rb_gzreader_ungetbyte, 1);
3687
+ rb_define_method(cGzipReader, "gets", rb_gzreader_gets, -1);
3688
+ rb_define_method(cGzipReader, "readline", rb_gzreader_readline, -1);
3689
+ rb_define_method(cGzipReader, "each", rb_gzreader_each, -1);
3690
+ rb_define_method(cGzipReader, "each_line", rb_gzreader_each, -1);
3691
+ rb_define_method(cGzipReader, "lines", rb_gzreader_each, -1);
3692
+ rb_define_method(cGzipReader, "readlines", rb_gzreader_readlines, -1);
3693
+
3694
+ rb_define_const(mZlib, "OS_CODE", INT2FIX(OS_CODE));
3695
+ rb_define_const(mZlib, "OS_MSDOS", INT2FIX(OS_MSDOS));
3696
+ rb_define_const(mZlib, "OS_AMIGA", INT2FIX(OS_AMIGA));
3697
+ rb_define_const(mZlib, "OS_VMS", INT2FIX(OS_VMS));
3698
+ rb_define_const(mZlib, "OS_UNIX", INT2FIX(OS_UNIX));
3699
+ rb_define_const(mZlib, "OS_ATARI", INT2FIX(OS_ATARI));
3700
+ rb_define_const(mZlib, "OS_OS2", INT2FIX(OS_OS2));
3701
+ rb_define_const(mZlib, "OS_MACOS", INT2FIX(OS_MACOS));
3702
+ rb_define_const(mZlib, "OS_TOPS20", INT2FIX(OS_TOPS20));
3703
+ rb_define_const(mZlib, "OS_WIN32", INT2FIX(OS_WIN32));
3704
+
3705
+ rb_define_const(mZlib, "OS_VMCMS", INT2FIX(OS_VMCMS));
3706
+ rb_define_const(mZlib, "OS_ZSYSTEM", INT2FIX(OS_ZSYSTEM));
3707
+ rb_define_const(mZlib, "OS_CPM", INT2FIX(OS_CPM));
3708
+ rb_define_const(mZlib, "OS_QDOS", INT2FIX(OS_QDOS));
3709
+ rb_define_const(mZlib, "OS_RISCOS", INT2FIX(OS_RISCOS));
3710
+ rb_define_const(mZlib, "OS_UNKNOWN", INT2FIX(OS_UNKNOWN));
3711
+
3712
+ #endif /* GZIP_SUPPORT */
3713
+ }
3714
+
3715
+ /* Document error classes. */
3716
+
3717
+ /*
3718
+ * Document-class: Zlib::Error
3719
+ *
3720
+ * The superclass for all exceptions raised by Ruby/zlib.
3721
+ *
3722
+ * The following exceptions are defined as subclasses of Zlib::Error. These
3723
+ * exceptions are raised when zlib library functions return with an error
3724
+ * status.
3725
+ *
3726
+ * - Zlib::StreamEnd
3727
+ * - Zlib::NeedDict
3728
+ * - Zlib::DataError
3729
+ * - Zlib::StreamError
3730
+ * - Zlib::MemError
3731
+ * - Zlib::BufError
3732
+ * - Zlib::VersionError
3733
+ *
3734
+ */
3735
+
3736
+ /*
3737
+ * Document-class: Zlib::GzipFile::Error
3738
+ *
3739
+ * Base class of errors that occur when processing GZIP files.
3740
+ */
3741
+
3742
+ /*
3743
+ * Document-class: Zlib::GzipFile::NoFooter
3744
+ *
3745
+ * Raised when gzip file footer is not found.
3746
+ */
3747
+
3748
+ /*
3749
+ * Document-class: Zlib::GzipFile::CRCError
3750
+ *
3751
+ * Raised when the CRC checksum recorded in gzip file footer is not equivalent
3752
+ * to the CRC checksum of the actual uncompressed data.
3753
+ */
3754
+
3755
+ /*
3756
+ * Document-class: Zlib::GzipFile::LengthError
3757
+ *
3758
+ * Raised when the data length recorded in the gzip file footer is not equivalent
3759
+ * to the length of the actual uncompressed data.
3760
+ */
3761
+
3762
+