rhodes 3.3.5 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
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
+