koffi 2.3.6 → 2.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +2 -2
  3. package/src/cnoke/cnoke.js +3 -7
  4. package/src/cnoke/src/builder.js +7 -4
  5. package/src/cnoke/src/index.js +2 -2
  6. package/src/koffi/build/2.3.7/koffi_darwin_arm64/koffi.node +0 -0
  7. package/src/koffi/build/2.3.7/koffi_darwin_x64/koffi.node +0 -0
  8. package/src/koffi/build/2.3.7/koffi_freebsd_arm64/koffi.node +0 -0
  9. package/src/koffi/build/2.3.7/koffi_freebsd_ia32/koffi.node +0 -0
  10. package/src/koffi/build/2.3.7/koffi_freebsd_x64/koffi.node +0 -0
  11. package/src/koffi/build/2.3.7/koffi_linux_arm32hf/koffi.node +0 -0
  12. package/src/koffi/build/2.3.7/koffi_linux_arm64/koffi.node +0 -0
  13. package/src/koffi/build/2.3.7/koffi_linux_ia32/koffi.node +0 -0
  14. package/src/koffi/build/2.3.7/koffi_linux_riscv64hf64/koffi.node +0 -0
  15. package/src/koffi/build/2.3.7/koffi_linux_x64/koffi.node +0 -0
  16. package/src/koffi/build/2.3.7/koffi_openbsd_ia32/koffi.node +0 -0
  17. package/src/koffi/build/2.3.7/koffi_openbsd_x64/koffi.node +0 -0
  18. package/src/koffi/build/2.3.7/koffi_win32_arm64/koffi.node +0 -0
  19. package/src/koffi/build/2.3.7/koffi_win32_ia32/koffi.node +0 -0
  20. package/src/koffi/build/2.3.7/koffi_win32_x64/koffi.node +0 -0
  21. package/src/koffi/src/ffi.cc +2 -2
  22. package/src/koffi/src/index.d.ts +2 -2
  23. package/src/koffi/src/index.js +1 -0
  24. package/src/koffi/build/2.3.6/koffi_darwin_arm64/koffi.node +0 -0
  25. package/src/koffi/build/2.3.6/koffi_darwin_x64/koffi.node +0 -0
  26. package/src/koffi/build/2.3.6/koffi_freebsd_arm64/koffi.node +0 -0
  27. package/src/koffi/build/2.3.6/koffi_freebsd_ia32/koffi.node +0 -0
  28. package/src/koffi/build/2.3.6/koffi_freebsd_x64/koffi.node +0 -0
  29. package/src/koffi/build/2.3.6/koffi_linux_arm32hf/koffi.node +0 -0
  30. package/src/koffi/build/2.3.6/koffi_linux_arm64/koffi.node +0 -0
  31. package/src/koffi/build/2.3.6/koffi_linux_ia32/koffi.node +0 -0
  32. package/src/koffi/build/2.3.6/koffi_linux_riscv64hf64/koffi.node +0 -0
  33. package/src/koffi/build/2.3.6/koffi_linux_x64/koffi.node +0 -0
  34. package/src/koffi/build/2.3.6/koffi_openbsd_ia32/koffi.node +0 -0
  35. package/src/koffi/build/2.3.6/koffi_openbsd_x64/koffi.node +0 -0
  36. package/src/koffi/build/2.3.6/koffi_win32_arm64/koffi.node +0 -0
  37. package/src/koffi/build/2.3.6/koffi_win32_arm64/koffi.pdb +0 -0
  38. package/src/koffi/build/2.3.6/koffi_win32_ia32/koffi.node +0 -0
  39. package/src/koffi/build/2.3.6/koffi_win32_ia32/koffi.pdb +0 -0
  40. package/src/koffi/build/2.3.6/koffi_win32_x64/koffi.node +0 -0
  41. package/src/koffi/build/2.3.6/koffi_win32_x64/koffi.pdb +0 -0
  42. package/vendor/brotli/BUILD +0 -144
  43. package/vendor/brotli/CMakeLists.txt +0 -421
  44. package/vendor/brotli/CONTRIBUTING.md +0 -27
  45. package/vendor/brotli/LICENSE +0 -19
  46. package/vendor/brotli/MANIFEST.in +0 -17
  47. package/vendor/brotli/Makefile +0 -55
  48. package/vendor/brotli/Makefile.am +0 -38
  49. package/vendor/brotli/README +0 -15
  50. package/vendor/brotli/README.md +0 -104
  51. package/vendor/brotli/WORKSPACE +0 -21
  52. package/vendor/brotli/bootstrap +0 -35
  53. package/vendor/brotli/c/common/constants.c +0 -15
  54. package/vendor/brotli/c/common/constants.h +0 -200
  55. package/vendor/brotli/c/common/context.c +0 -156
  56. package/vendor/brotli/c/common/context.h +0 -113
  57. package/vendor/brotli/c/common/dictionary.c +0 -5914
  58. package/vendor/brotli/c/common/dictionary.h +0 -64
  59. package/vendor/brotli/c/common/platform.c +0 -22
  60. package/vendor/brotli/c/common/platform.h +0 -596
  61. package/vendor/brotli/c/common/transform.c +0 -291
  62. package/vendor/brotli/c/common/transform.h +0 -85
  63. package/vendor/brotli/c/common/version.h +0 -26
  64. package/vendor/brotli/c/dec/bit_reader.c +0 -76
  65. package/vendor/brotli/c/dec/bit_reader.h +0 -351
  66. package/vendor/brotli/c/dec/decode.c +0 -2608
  67. package/vendor/brotli/c/dec/huffman.c +0 -339
  68. package/vendor/brotli/c/dec/huffman.h +0 -121
  69. package/vendor/brotli/c/dec/prefix.h +0 -732
  70. package/vendor/brotli/c/dec/state.c +0 -159
  71. package/vendor/brotli/c/dec/state.h +0 -365
  72. package/vendor/brotli/c/enc/backward_references.c +0 -145
  73. package/vendor/brotli/c/enc/backward_references.h +0 -39
  74. package/vendor/brotli/c/enc/backward_references_hq.c +0 -843
  75. package/vendor/brotli/c/enc/backward_references_hq.h +0 -95
  76. package/vendor/brotli/c/enc/backward_references_inc.h +0 -163
  77. package/vendor/brotli/c/enc/bit_cost.c +0 -35
  78. package/vendor/brotli/c/enc/bit_cost.h +0 -63
  79. package/vendor/brotli/c/enc/bit_cost_inc.h +0 -127
  80. package/vendor/brotli/c/enc/block_encoder_inc.h +0 -34
  81. package/vendor/brotli/c/enc/block_splitter.c +0 -194
  82. package/vendor/brotli/c/enc/block_splitter.h +0 -51
  83. package/vendor/brotli/c/enc/block_splitter_inc.h +0 -440
  84. package/vendor/brotli/c/enc/brotli_bit_stream.c +0 -1314
  85. package/vendor/brotli/c/enc/brotli_bit_stream.h +0 -84
  86. package/vendor/brotli/c/enc/cluster.c +0 -56
  87. package/vendor/brotli/c/enc/cluster.h +0 -48
  88. package/vendor/brotli/c/enc/cluster_inc.h +0 -320
  89. package/vendor/brotli/c/enc/command.c +0 -28
  90. package/vendor/brotli/c/enc/command.h +0 -190
  91. package/vendor/brotli/c/enc/compress_fragment.c +0 -790
  92. package/vendor/brotli/c/enc/compress_fragment.h +0 -61
  93. package/vendor/brotli/c/enc/compress_fragment_two_pass.c +0 -645
  94. package/vendor/brotli/c/enc/compress_fragment_two_pass.h +0 -54
  95. package/vendor/brotli/c/enc/dictionary_hash.c +0 -1846
  96. package/vendor/brotli/c/enc/dictionary_hash.h +0 -25
  97. package/vendor/brotli/c/enc/encode.c +0 -1927
  98. package/vendor/brotli/c/enc/encoder_dict.c +0 -33
  99. package/vendor/brotli/c/enc/encoder_dict.h +0 -43
  100. package/vendor/brotli/c/enc/entropy_encode.c +0 -503
  101. package/vendor/brotli/c/enc/entropy_encode.h +0 -122
  102. package/vendor/brotli/c/enc/entropy_encode_static.h +0 -539
  103. package/vendor/brotli/c/enc/fast_log.c +0 -105
  104. package/vendor/brotli/c/enc/fast_log.h +0 -66
  105. package/vendor/brotli/c/enc/find_match_length.h +0 -79
  106. package/vendor/brotli/c/enc/hash.h +0 -488
  107. package/vendor/brotli/c/enc/hash_composite_inc.h +0 -125
  108. package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +0 -293
  109. package/vendor/brotli/c/enc/hash_longest_match64_inc.h +0 -267
  110. package/vendor/brotli/c/enc/hash_longest_match_inc.h +0 -262
  111. package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +0 -266
  112. package/vendor/brotli/c/enc/hash_rolling_inc.h +0 -212
  113. package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +0 -329
  114. package/vendor/brotli/c/enc/histogram.c +0 -100
  115. package/vendor/brotli/c/enc/histogram.h +0 -63
  116. package/vendor/brotli/c/enc/histogram_inc.h +0 -51
  117. package/vendor/brotli/c/enc/literal_cost.c +0 -175
  118. package/vendor/brotli/c/enc/literal_cost.h +0 -30
  119. package/vendor/brotli/c/enc/memory.c +0 -170
  120. package/vendor/brotli/c/enc/memory.h +0 -114
  121. package/vendor/brotli/c/enc/metablock.c +0 -663
  122. package/vendor/brotli/c/enc/metablock.h +0 -105
  123. package/vendor/brotli/c/enc/metablock_inc.h +0 -183
  124. package/vendor/brotli/c/enc/params.h +0 -46
  125. package/vendor/brotli/c/enc/prefix.h +0 -53
  126. package/vendor/brotli/c/enc/quality.h +0 -165
  127. package/vendor/brotli/c/enc/ringbuffer.h +0 -167
  128. package/vendor/brotli/c/enc/static_dict.c +0 -486
  129. package/vendor/brotli/c/enc/static_dict.h +0 -40
  130. package/vendor/brotli/c/enc/static_dict_lut.h +0 -5864
  131. package/vendor/brotli/c/enc/utf8_util.c +0 -85
  132. package/vendor/brotli/c/enc/utf8_util.h +0 -32
  133. package/vendor/brotli/c/enc/write_bits.h +0 -87
  134. package/vendor/brotli/c/include/brotli/decode.h +0 -344
  135. package/vendor/brotli/c/include/brotli/encode.h +0 -448
  136. package/vendor/brotli/c/include/brotli/port.h +0 -288
  137. package/vendor/brotli/c/include/brotli/types.h +0 -83
  138. package/vendor/brotli/c/tools/brotli.c +0 -1116
  139. package/vendor/brotli/c/tools/brotli.md +0 -107
  140. package/vendor/brotli/compiler_config_setting.bzl +0 -28
  141. package/vendor/brotli/configure +0 -8
  142. package/vendor/brotli/configure-cmake +0 -318
  143. package/vendor/brotli/configure.ac +0 -14
  144. package/vendor/brotli/docs/brotli.1 +0 -132
  145. package/vendor/brotli/docs/constants.h.3 +0 -47
  146. package/vendor/brotli/docs/decode.h.3 +0 -415
  147. package/vendor/brotli/docs/encode.h.3 +0 -586
  148. package/vendor/brotli/docs/types.h.3 +0 -117
  149. package/vendor/brotli/premake5.lua +0 -78
  150. package/vendor/brotli/python/Makefile +0 -57
  151. package/vendor/brotli/python/README.md +0 -54
  152. package/vendor/brotli/python/_brotli.cc +0 -753
  153. package/vendor/brotli/python/bro.py +0 -160
  154. package/vendor/brotli/python/brotli.py +0 -56
  155. package/vendor/brotli/python/tests/__init__.py +0 -0
  156. package/vendor/brotli/python/tests/_test_utils.py +0 -112
  157. package/vendor/brotli/python/tests/bro_test.py +0 -102
  158. package/vendor/brotli/python/tests/compress_test.py +0 -41
  159. package/vendor/brotli/python/tests/compressor_test.py +0 -94
  160. package/vendor/brotli/python/tests/decompress_test.py +0 -42
  161. package/vendor/brotli/python/tests/decompressor_test.py +0 -59
  162. package/vendor/brotli/scripts/libbrotlicommon.pc.in +0 -11
  163. package/vendor/brotli/scripts/libbrotlidec.pc.in +0 -12
  164. package/vendor/brotli/scripts/libbrotlienc.pc.in +0 -12
  165. package/vendor/brotli/scripts/sources.lst +0 -104
  166. package/vendor/brotli/setup.cfg +0 -5
  167. package/vendor/brotli/setup.py +0 -293
  168. package/vendor/brotli/tests/Makefile +0 -17
  169. package/vendor/brotli/tests/compatibility_test.sh +0 -25
  170. package/vendor/brotli/tests/roundtrip_test.sh +0 -36
  171. package/vendor/brotli/tests/run-compatibility-test.cmake +0 -31
  172. package/vendor/brotli/tests/run-roundtrip-test.cmake +0 -36
  173. package/vendor/brotli/tests/testdata/empty +0 -0
  174. package/vendor/brotli/tests/testdata/empty.compressed +0 -1
  175. package/vendor/brotli/tests/testdata/ukkonooa +0 -1
  176. package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
  177. package/vendor/dragonbox/CMakeLists.txt +0 -123
  178. package/vendor/dragonbox/LICENSE-Apache2-LLVM +0 -218
  179. package/vendor/dragonbox/LICENSE-Boost +0 -23
  180. package/vendor/dragonbox/README.md +0 -277
  181. package/vendor/dragonbox/cmake/dragonboxConfig.cmake +0 -1
  182. package/vendor/dragonbox/include/dragonbox/dragonbox.h +0 -2674
  183. package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +0 -108
  184. package/vendor/dragonbox/other_files/Dragonbox.pdf +0 -0
  185. package/vendor/dragonbox/other_files/Dragonbox_old.pdf +0 -0
  186. package/vendor/dragonbox/other_files/milo_benchmark.png +0 -0
  187. package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +0 -540
  188. package/vendor/dragonbox/other_files/unknown_win64_vc2019_randomdigit_time.png +0 -0
  189. package/vendor/dragonbox/source/dragonbox_to_chars.cpp +0 -303
  190. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +0 -24
  191. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +0 -238
  192. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +0 -95
  193. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +0 -2666
  194. package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +0 -16
  195. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +0 -114
  196. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +0 -509
  197. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +0 -367
  198. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +0 -357
  199. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +0 -35
  200. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +0 -345
  201. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +0 -55
  202. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +0 -128
  203. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +0 -46
  204. package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +0 -22
  205. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +0 -699
  206. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +0 -31
  207. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +0 -1354
  208. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +0 -31
  209. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +0 -68
  210. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +0 -25
  211. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +0 -92
  212. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +0 -121
  213. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +0 -99
  214. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +0 -93
  215. package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +0 -65
  216. package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +0 -40
  217. package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +0 -22
  218. package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +0 -78
  219. package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +0 -95
  220. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary32_clang.png +0 -0
  221. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary32_msvc.png +0 -0
  222. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary64_clang.png +0 -0
  223. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary64_msvc.png +0 -0
  224. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary32_clang.png +0 -0
  225. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary32_msvc.png +0 -0
  226. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary64_clang.png +0 -0
  227. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary64_msvc.png +0 -0
  228. package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +0 -238
  229. package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +0 -30
  230. package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +0 -36
  231. package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +0 -27
  232. package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +0 -31
  233. package/vendor/dragonbox/subproject/common/CMakeLists.txt +0 -42
  234. package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +0 -97
  235. package/vendor/dragonbox/subproject/common/include/big_uint.h +0 -218
  236. package/vendor/dragonbox/subproject/common/include/continued_fractions.h +0 -174
  237. package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +0 -267
  238. package/vendor/dragonbox/subproject/common/include/random_float.h +0 -182
  239. package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +0 -57
  240. package/vendor/dragonbox/subproject/common/source/big_uint.cpp +0 -602
  241. package/vendor/dragonbox/subproject/meta/CMakeLists.txt +0 -41
  242. package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +0 -82
  243. package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +0 -10
  244. package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +0 -623
  245. package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +0 -126
  246. package/vendor/dragonbox/subproject/meta/source/live_test.cpp +0 -81
  247. package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +0 -104
  248. package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +0 -20
  249. package/vendor/dragonbox/subproject/test/CMakeLists.txt +0 -70
  250. package/vendor/dragonbox/subproject/test/results/binary32.csv +0 -255
  251. package/vendor/dragonbox/subproject/test/results/binary64.csv +0 -2047
  252. package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +0 -18
  253. package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +0 -88
  254. package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +0 -95
  255. package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +0 -338
  256. package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +0 -154
  257. package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +0 -168
  258. package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +0 -251
  259. package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +0 -113
  260. package/vendor/miniz/ChangeLog.md +0 -239
  261. package/vendor/miniz/LICENSE +0 -22
  262. package/vendor/miniz/examples/example1.c +0 -105
  263. package/vendor/miniz/examples/example2.c +0 -164
  264. package/vendor/miniz/examples/example3.c +0 -269
  265. package/vendor/miniz/examples/example4.c +0 -102
  266. package/vendor/miniz/examples/example5.c +0 -327
  267. package/vendor/miniz/examples/example6.c +0 -166
  268. package/vendor/miniz/miniz.c +0 -7835
  269. package/vendor/miniz/miniz.h +0 -1422
  270. package/vendor/miniz/readme.md +0 -46
  271. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_arm64/koffi.exp +0 -0
  272. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_arm64/koffi.lib +0 -0
  273. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_ia32/koffi.exp +0 -0
  274. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_ia32/koffi.lib +0 -0
  275. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_x64/koffi.exp +0 -0
  276. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_x64/koffi.lib +0 -0
@@ -1,160 +0,0 @@
1
- #! /usr/bin/env python
2
- """Compression/decompression utility using the Brotli algorithm."""
3
-
4
- from __future__ import print_function
5
- import argparse
6
- import sys
7
- import os
8
- import platform
9
-
10
- import brotli
11
-
12
- # default values of encoder parameters
13
- DEFAULT_PARAMS = {
14
- 'mode': brotli.MODE_GENERIC,
15
- 'quality': 11,
16
- 'lgwin': 22,
17
- 'lgblock': 0,
18
- }
19
-
20
-
21
- def get_binary_stdio(stream):
22
- """ Return the specified standard input, output or errors stream as a
23
- 'raw' buffer object suitable for reading/writing binary data from/to it.
24
- """
25
- assert stream in ['stdin', 'stdout', 'stderr'], 'invalid stream name'
26
- stdio = getattr(sys, stream)
27
- if sys.version_info[0] < 3:
28
- if sys.platform == 'win32':
29
- # set I/O stream binary flag on python2.x (Windows)
30
- runtime = platform.python_implementation()
31
- if runtime == 'PyPy':
32
- # the msvcrt trick doesn't work in pypy, so I use fdopen
33
- mode = 'rb' if stream == 'stdin' else 'wb'
34
- stdio = os.fdopen(stdio.fileno(), mode, 0)
35
- else:
36
- # this works with CPython -- untested on other implementations
37
- import msvcrt
38
- msvcrt.setmode(stdio.fileno(), os.O_BINARY)
39
- return stdio
40
- else:
41
- # get 'buffer' attribute to read/write binary data on python3.x
42
- if hasattr(stdio, 'buffer'):
43
- return stdio.buffer
44
- else:
45
- orig_stdio = getattr(sys, '__%s__' % stream)
46
- return orig_stdio.buffer
47
-
48
-
49
- def main(args=None):
50
-
51
- parser = argparse.ArgumentParser(
52
- prog=os.path.basename(__file__), description=__doc__)
53
- parser.add_argument(
54
- '--version', action='version', version=brotli.__version__)
55
- parser.add_argument(
56
- '-i',
57
- '--input',
58
- metavar='FILE',
59
- type=str,
60
- dest='infile',
61
- help='Input file',
62
- default=None)
63
- parser.add_argument(
64
- '-o',
65
- '--output',
66
- metavar='FILE',
67
- type=str,
68
- dest='outfile',
69
- help='Output file',
70
- default=None)
71
- parser.add_argument(
72
- '-f',
73
- '--force',
74
- action='store_true',
75
- help='Overwrite existing output file',
76
- default=False)
77
- parser.add_argument(
78
- '-d',
79
- '--decompress',
80
- action='store_true',
81
- help='Decompress input file',
82
- default=False)
83
- params = parser.add_argument_group('optional encoder parameters')
84
- params.add_argument(
85
- '-m',
86
- '--mode',
87
- metavar='MODE',
88
- type=int,
89
- choices=[0, 1, 2],
90
- help='The compression mode can be 0 for generic input, '
91
- '1 for UTF-8 encoded text, or 2 for WOFF 2.0 font data. '
92
- 'Defaults to 0.')
93
- params.add_argument(
94
- '-q',
95
- '--quality',
96
- metavar='QUALITY',
97
- type=int,
98
- choices=list(range(0, 12)),
99
- help='Controls the compression-speed vs compression-density '
100
- 'tradeoff. The higher the quality, the slower the '
101
- 'compression. Range is 0 to 11. Defaults to 11.')
102
- params.add_argument(
103
- '--lgwin',
104
- metavar='LGWIN',
105
- type=int,
106
- choices=list(range(10, 25)),
107
- help='Base 2 logarithm of the sliding window size. Range is '
108
- '10 to 24. Defaults to 22.')
109
- params.add_argument(
110
- '--lgblock',
111
- metavar='LGBLOCK',
112
- type=int,
113
- choices=[0] + list(range(16, 25)),
114
- help='Base 2 logarithm of the maximum input block size. '
115
- 'Range is 16 to 24. If set to 0, the value will be set based '
116
- 'on the quality. Defaults to 0.')
117
- # set default values using global DEFAULT_PARAMS dictionary
118
- parser.set_defaults(**DEFAULT_PARAMS)
119
-
120
- options = parser.parse_args(args=args)
121
-
122
- if options.infile:
123
- if not os.path.isfile(options.infile):
124
- parser.error('file "%s" not found' % options.infile)
125
- with open(options.infile, 'rb') as infile:
126
- data = infile.read()
127
- else:
128
- if sys.stdin.isatty():
129
- # interactive console, just quit
130
- parser.error('no input')
131
- infile = get_binary_stdio('stdin')
132
- data = infile.read()
133
-
134
- if options.outfile:
135
- if os.path.isfile(options.outfile) and not options.force:
136
- parser.error('output file exists')
137
- outfile = open(options.outfile, 'wb')
138
- else:
139
- outfile = get_binary_stdio('stdout')
140
-
141
- try:
142
- if options.decompress:
143
- data = brotli.decompress(data)
144
- else:
145
- data = brotli.compress(
146
- data,
147
- mode=options.mode,
148
- quality=options.quality,
149
- lgwin=options.lgwin,
150
- lgblock=options.lgblock)
151
- except brotli.error as e:
152
- parser.exit(1,
153
- 'bro: error: %s: %s' % (e, options.infile or 'sys.stdin'))
154
-
155
- outfile.write(data)
156
- outfile.close()
157
-
158
-
159
- if __name__ == '__main__':
160
- main()
@@ -1,56 +0,0 @@
1
- # Copyright 2016 The Brotli Authors. All rights reserved.
2
- #
3
- # Distributed under MIT license.
4
- # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
-
6
- """Functions to compress and decompress data using the Brotli library."""
7
-
8
- import _brotli
9
-
10
-
11
- # The library version.
12
- __version__ = _brotli.__version__
13
-
14
- # The compression mode.
15
- MODE_GENERIC = _brotli.MODE_GENERIC
16
- MODE_TEXT = _brotli.MODE_TEXT
17
- MODE_FONT = _brotli.MODE_FONT
18
-
19
- # The Compressor object.
20
- Compressor = _brotli.Compressor
21
-
22
- # The Decompressor object.
23
- Decompressor = _brotli.Decompressor
24
-
25
- # Compress a byte string.
26
- def compress(string, mode=MODE_GENERIC, quality=11, lgwin=22, lgblock=0):
27
- """Compress a byte string.
28
-
29
- Args:
30
- string (bytes): The input data.
31
- mode (int, optional): The compression mode can be MODE_GENERIC (default),
32
- MODE_TEXT (for UTF-8 format text input) or MODE_FONT (for WOFF 2.0).
33
- quality (int, optional): Controls the compression-speed vs compression-
34
- density tradeoff. The higher the quality, the slower the compression.
35
- Range is 0 to 11. Defaults to 11.
36
- lgwin (int, optional): Base 2 logarithm of the sliding window size. Range
37
- is 10 to 24. Defaults to 22.
38
- lgblock (int, optional): Base 2 logarithm of the maximum input block size.
39
- Range is 16 to 24. If set to 0, the value will be set based on the
40
- quality. Defaults to 0.
41
-
42
- Returns:
43
- The compressed byte string.
44
-
45
- Raises:
46
- brotli.error: If arguments are invalid, or compressor fails.
47
- """
48
- compressor = Compressor(mode=mode, quality=quality, lgwin=lgwin,
49
- lgblock=lgblock)
50
- return compressor.process(string) + compressor.finish()
51
-
52
- # Decompress a compressed byte string.
53
- decompress = _brotli.decompress
54
-
55
- # Raised if compression or decompression fails.
56
- error = _brotli.error
File without changes
@@ -1,112 +0,0 @@
1
- from __future__ import print_function
2
- import filecmp
3
- import glob
4
- import itertools
5
- import os
6
- import sys
7
- import sysconfig
8
- import tempfile
9
- import unittest
10
-
11
-
12
- project_dir = os.path.abspath(os.path.join(__file__, '..', '..', '..'))
13
- src_dir = os.path.join(project_dir, 'python')
14
- test_dir = os.path.join(project_dir, 'tests')
15
-
16
- python_exe = sys.executable or 'python'
17
- bro_path = os.path.join(src_dir, 'bro.py')
18
- BRO_ARGS = [python_exe, bro_path]
19
-
20
- # Get the platform/version-specific build folder.
21
- # By default, the distutils build base is in the same location as setup.py.
22
- platform_lib_name = 'lib.{platform}-{version[0]}.{version[1]}'.format(
23
- platform=sysconfig.get_platform(), version=sys.version_info)
24
- build_dir = os.path.join(project_dir, 'bin', platform_lib_name)
25
-
26
- # Prepend the build folder to sys.path and the PYTHONPATH environment variable.
27
- if build_dir not in sys.path:
28
- sys.path.insert(0, build_dir)
29
- TEST_ENV = os.environ.copy()
30
- if 'PYTHONPATH' not in TEST_ENV:
31
- TEST_ENV['PYTHONPATH'] = build_dir
32
- else:
33
- TEST_ENV['PYTHONPATH'] = build_dir + os.pathsep + TEST_ENV['PYTHONPATH']
34
-
35
- TESTDATA_DIR = os.path.join(test_dir, 'testdata')
36
-
37
- TESTDATA_FILES = [
38
- 'empty', # Empty file
39
- '10x10y', # Small text
40
- 'alice29.txt', # Large text
41
- 'random_org_10k.bin', # Small data
42
- 'mapsdatazrh', # Large data
43
- ]
44
-
45
- TESTDATA_PATHS = [os.path.join(TESTDATA_DIR, f) for f in TESTDATA_FILES]
46
-
47
- TESTDATA_PATHS_FOR_DECOMPRESSION = glob.glob(
48
- os.path.join(TESTDATA_DIR, '*.compressed'))
49
-
50
- TEMP_DIR = tempfile.mkdtemp()
51
-
52
-
53
- def get_temp_compressed_name(filename):
54
- return os.path.join(TEMP_DIR, os.path.basename(filename + '.bro'))
55
-
56
-
57
- def get_temp_uncompressed_name(filename):
58
- return os.path.join(TEMP_DIR, os.path.basename(filename + '.unbro'))
59
-
60
-
61
- def bind_method_args(method, *args, **kwargs):
62
- return lambda self: method(self, *args, **kwargs)
63
-
64
-
65
- def generate_test_methods(test_case_class,
66
- for_decompression=False,
67
- variants=None):
68
- # Add test methods for each test data file. This makes identifying problems
69
- # with specific compression scenarios easier.
70
- if for_decompression:
71
- paths = TESTDATA_PATHS_FOR_DECOMPRESSION
72
- else:
73
- paths = TESTDATA_PATHS
74
- opts = []
75
- if variants:
76
- opts_list = []
77
- for k, v in variants.items():
78
- opts_list.append([r for r in itertools.product([k], v)])
79
- for o in itertools.product(*opts_list):
80
- opts_name = '_'.join([str(i) for i in itertools.chain(*o)])
81
- opts_dict = dict(o)
82
- opts.append([opts_name, opts_dict])
83
- else:
84
- opts.append(['', {}])
85
- for method in [m for m in dir(test_case_class) if m.startswith('_test')]:
86
- for testdata in paths:
87
- for (opts_name, opts_dict) in opts:
88
- f = os.path.splitext(os.path.basename(testdata))[0]
89
- name = 'test_{method}_{options}_{file}'.format(
90
- method=method, options=opts_name, file=f)
91
- func = bind_method_args(
92
- getattr(test_case_class, method), testdata, **opts_dict)
93
- setattr(test_case_class, name, func)
94
-
95
-
96
- class TestCase(unittest.TestCase):
97
-
98
- def tearDown(self):
99
- for f in TESTDATA_PATHS:
100
- try:
101
- os.unlink(get_temp_compressed_name(f))
102
- except OSError:
103
- pass
104
- try:
105
- os.unlink(get_temp_uncompressed_name(f))
106
- except OSError:
107
- pass
108
-
109
- def assertFilesMatch(self, first, second):
110
- self.assertTrue(
111
- filecmp.cmp(first, second, shallow=False),
112
- 'File {} differs from {}'.format(first, second))
@@ -1,102 +0,0 @@
1
- # Copyright 2016 The Brotli Authors. All rights reserved.
2
- #
3
- # Distributed under MIT license.
4
- # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
-
6
- import subprocess
7
- import unittest
8
-
9
- from . import _test_utils
10
- import brotli
11
-
12
- BRO_ARGS = _test_utils.BRO_ARGS
13
- TEST_ENV = _test_utils.TEST_ENV
14
-
15
-
16
- def _get_original_name(test_data):
17
- return test_data.split('.compressed')[0]
18
-
19
-
20
- class TestBroDecompress(_test_utils.TestCase):
21
-
22
- def _check_decompression(self, test_data):
23
- # Verify decompression matches the original.
24
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
25
- original = _get_original_name(test_data)
26
- self.assertFilesMatch(temp_uncompressed, original)
27
-
28
- def _decompress_file(self, test_data):
29
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
30
- args = BRO_ARGS + ['-f', '-d', '-i', test_data, '-o', temp_uncompressed]
31
- subprocess.check_call(args, env=TEST_ENV)
32
-
33
- def _decompress_pipe(self, test_data):
34
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
35
- args = BRO_ARGS + ['-d']
36
- with open(temp_uncompressed, 'wb') as out_file:
37
- with open(test_data, 'rb') as in_file:
38
- subprocess.check_call(
39
- args, stdin=in_file, stdout=out_file, env=TEST_ENV)
40
-
41
- def _test_decompress_file(self, test_data):
42
- self._decompress_file(test_data)
43
- self._check_decompression(test_data)
44
-
45
- def _test_decompress_pipe(self, test_data):
46
- self._decompress_pipe(test_data)
47
- self._check_decompression(test_data)
48
-
49
-
50
- _test_utils.generate_test_methods(TestBroDecompress, for_decompression=True)
51
-
52
-
53
- class TestBroCompress(_test_utils.TestCase):
54
-
55
- VARIANTS = {'quality': (1, 6, 9, 11), 'lgwin': (10, 15, 20, 24)}
56
-
57
- def _check_decompression(self, test_data, **kwargs):
58
- # Write decompression to temp file and verify it matches the original.
59
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
60
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
61
- original = test_data
62
- args = BRO_ARGS + ['-f', '-d']
63
- args.extend(['-i', temp_compressed, '-o', temp_uncompressed])
64
- subprocess.check_call(args, env=TEST_ENV)
65
- self.assertFilesMatch(temp_uncompressed, original)
66
-
67
- def _compress_file(self, test_data, **kwargs):
68
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
69
- args = BRO_ARGS + ['-f']
70
- if 'quality' in kwargs:
71
- args.extend(['-q', str(kwargs['quality'])])
72
- if 'lgwin' in kwargs:
73
- args.extend(['--lgwin', str(kwargs['lgwin'])])
74
- args.extend(['-i', test_data, '-o', temp_compressed])
75
- subprocess.check_call(args, env=TEST_ENV)
76
-
77
- def _compress_pipe(self, test_data, **kwargs):
78
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
79
- args = BRO_ARGS
80
- if 'quality' in kwargs:
81
- args.extend(['-q', str(kwargs['quality'])])
82
- if 'lgwin' in kwargs:
83
- args.extend(['--lgwin', str(kwargs['lgwin'])])
84
- with open(temp_compressed, 'wb') as out_file:
85
- with open(test_data, 'rb') as in_file:
86
- subprocess.check_call(
87
- args, stdin=in_file, stdout=out_file, env=TEST_ENV)
88
-
89
- def _test_compress_file(self, test_data, **kwargs):
90
- self._compress_file(test_data, **kwargs)
91
- self._check_decompression(test_data)
92
-
93
- def _test_compress_pipe(self, test_data, **kwargs):
94
- self._compress_pipe(test_data, **kwargs)
95
- self._check_decompression(test_data)
96
-
97
-
98
- _test_utils.generate_test_methods(
99
- TestBroCompress, variants=TestBroCompress.VARIANTS)
100
-
101
- if __name__ == '__main__':
102
- unittest.main()
@@ -1,41 +0,0 @@
1
- # Copyright 2016 The Brotli Authors. All rights reserved.
2
- #
3
- # Distributed under MIT license.
4
- # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
-
6
- import unittest
7
-
8
- from . import _test_utils
9
- import brotli
10
-
11
-
12
- class TestCompress(_test_utils.TestCase):
13
-
14
- VARIANTS = {'quality': (1, 6, 9, 11), 'lgwin': (10, 15, 20, 24)}
15
-
16
- def _check_decompression(self, test_data, **kwargs):
17
- kwargs = {}
18
- # Write decompression to temp file and verify it matches the original.
19
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
20
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
21
- original = test_data
22
- with open(temp_uncompressed, 'wb') as out_file:
23
- with open(temp_compressed, 'rb') as in_file:
24
- out_file.write(brotli.decompress(in_file.read(), **kwargs))
25
- self.assertFilesMatch(temp_uncompressed, original)
26
-
27
- def _compress(self, test_data, **kwargs):
28
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
29
- with open(temp_compressed, 'wb') as out_file:
30
- with open(test_data, 'rb') as in_file:
31
- out_file.write(brotli.compress(in_file.read(), **kwargs))
32
-
33
- def _test_compress(self, test_data, **kwargs):
34
- self._compress(test_data, **kwargs)
35
- self._check_decompression(test_data, **kwargs)
36
-
37
-
38
- _test_utils.generate_test_methods(TestCompress, variants=TestCompress.VARIANTS)
39
-
40
- if __name__ == '__main__':
41
- unittest.main()
@@ -1,94 +0,0 @@
1
- # Copyright 2016 The Brotli Authors. All rights reserved.
2
- #
3
- # Distributed under MIT license.
4
- # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
-
6
- import functools
7
- import unittest
8
-
9
- from . import _test_utils
10
- import brotli
11
-
12
-
13
- # Do not inherit from TestCase here to ensure that test methods
14
- # are not run automatically and instead are run as part of a specific
15
- # configuration below.
16
- class _TestCompressor(object):
17
-
18
- CHUNK_SIZE = 2048
19
-
20
- def tearDown(self):
21
- self.compressor = None
22
-
23
- def _check_decompression(self, test_data):
24
- # Write decompression to temp file and verify it matches the original.
25
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
26
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
27
- original = test_data
28
- with open(temp_uncompressed, 'wb') as out_file:
29
- with open(temp_compressed, 'rb') as in_file:
30
- out_file.write(brotli.decompress(in_file.read()))
31
- self.assertFilesMatch(temp_uncompressed, original)
32
-
33
- def _test_single_process(self, test_data):
34
- # Write single-shot compression to temp file.
35
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
36
- with open(temp_compressed, 'wb') as out_file:
37
- with open(test_data, 'rb') as in_file:
38
- out_file.write(self.compressor.process(in_file.read()))
39
- out_file.write(self.compressor.finish())
40
- self._check_decompression(test_data)
41
-
42
- def _test_multiple_process(self, test_data):
43
- # Write chunked compression to temp file.
44
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
45
- with open(temp_compressed, 'wb') as out_file:
46
- with open(test_data, 'rb') as in_file:
47
- read_chunk = functools.partial(in_file.read, self.CHUNK_SIZE)
48
- for data in iter(read_chunk, b''):
49
- out_file.write(self.compressor.process(data))
50
- out_file.write(self.compressor.finish())
51
- self._check_decompression(test_data)
52
-
53
- def _test_multiple_process_and_flush(self, test_data):
54
- # Write chunked and flushed compression to temp file.
55
- temp_compressed = _test_utils.get_temp_compressed_name(test_data)
56
- with open(temp_compressed, 'wb') as out_file:
57
- with open(test_data, 'rb') as in_file:
58
- read_chunk = functools.partial(in_file.read, self.CHUNK_SIZE)
59
- for data in iter(read_chunk, b''):
60
- out_file.write(self.compressor.process(data))
61
- out_file.write(self.compressor.flush())
62
- out_file.write(self.compressor.finish())
63
- self._check_decompression(test_data)
64
-
65
-
66
- _test_utils.generate_test_methods(_TestCompressor)
67
-
68
-
69
- class TestCompressorQuality1(_TestCompressor, _test_utils.TestCase):
70
-
71
- def setUp(self):
72
- self.compressor = brotli.Compressor(quality=1)
73
-
74
-
75
- class TestCompressorQuality6(_TestCompressor, _test_utils.TestCase):
76
-
77
- def setUp(self):
78
- self.compressor = brotli.Compressor(quality=6)
79
-
80
-
81
- class TestCompressorQuality9(_TestCompressor, _test_utils.TestCase):
82
-
83
- def setUp(self):
84
- self.compressor = brotli.Compressor(quality=9)
85
-
86
-
87
- class TestCompressorQuality11(_TestCompressor, _test_utils.TestCase):
88
-
89
- def setUp(self):
90
- self.compressor = brotli.Compressor(quality=11)
91
-
92
-
93
- if __name__ == '__main__':
94
- unittest.main()
@@ -1,42 +0,0 @@
1
- # Copyright 2016 The Brotli Authors. All rights reserved.
2
- #
3
- # Distributed under MIT license.
4
- # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
-
6
- import unittest
7
-
8
- from . import _test_utils
9
- import brotli
10
-
11
-
12
- def _get_original_name(test_data):
13
- return test_data.split('.compressed')[0]
14
-
15
-
16
- class TestDecompress(_test_utils.TestCase):
17
-
18
- def _check_decompression(self, test_data):
19
- # Verify decompression matches the original.
20
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
21
- original = _get_original_name(test_data)
22
- self.assertFilesMatch(temp_uncompressed, original)
23
-
24
- def _decompress(self, test_data):
25
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
26
- with open(temp_uncompressed, 'wb') as out_file:
27
- with open(test_data, 'rb') as in_file:
28
- out_file.write(brotli.decompress(in_file.read()))
29
-
30
- def _test_decompress(self, test_data):
31
- self._decompress(test_data)
32
- self._check_decompression(test_data)
33
-
34
- def test_garbage_appended(self):
35
- with self.assertRaises(brotli.error):
36
- brotli.decompress(brotli.compress(b'a') + b'a')
37
-
38
-
39
- _test_utils.generate_test_methods(TestDecompress, for_decompression=True)
40
-
41
- if __name__ == '__main__':
42
- unittest.main()
@@ -1,59 +0,0 @@
1
- # Copyright 2016 The Brotli Authors. All rights reserved.
2
- #
3
- # Distributed under MIT license.
4
- # See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
-
6
- import functools
7
- import unittest
8
-
9
- from . import _test_utils
10
- import brotli
11
-
12
-
13
- def _get_original_name(test_data):
14
- return test_data.split('.compressed')[0]
15
-
16
-
17
- class TestDecompressor(_test_utils.TestCase):
18
-
19
- CHUNK_SIZE = 1
20
-
21
- def setUp(self):
22
- self.decompressor = brotli.Decompressor()
23
-
24
- def tearDown(self):
25
- self.decompressor = None
26
-
27
- def _check_decompression(self, test_data):
28
- # Verify decompression matches the original.
29
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
30
- original = _get_original_name(test_data)
31
- self.assertFilesMatch(temp_uncompressed, original)
32
-
33
- def _decompress(self, test_data):
34
- temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
35
- with open(temp_uncompressed, 'wb') as out_file:
36
- with open(test_data, 'rb') as in_file:
37
- read_chunk = functools.partial(in_file.read, self.CHUNK_SIZE)
38
- for data in iter(read_chunk, b''):
39
- out_file.write(self.decompressor.process(data))
40
- self.assertTrue(self.decompressor.is_finished())
41
-
42
- def _test_decompress(self, test_data):
43
- self._decompress(test_data)
44
- self._check_decompression(test_data)
45
-
46
- def test_garbage_appended(self):
47
- with self.assertRaises(brotli.error):
48
- self.decompressor.process(brotli.compress(b'a') + b'a')
49
-
50
- def test_already_finished(self):
51
- self.decompressor.process(brotli.compress(b'a'))
52
- with self.assertRaises(brotli.error):
53
- self.decompressor.process(b'a')
54
-
55
-
56
- _test_utils.generate_test_methods(TestDecompressor, for_decompression=True)
57
-
58
- if __name__ == '__main__':
59
- unittest.main()
@@ -1,11 +0,0 @@
1
- prefix=@prefix@
2
- exec_prefix=@exec_prefix@
3
- libdir=@libdir@
4
- includedir=@includedir@
5
-
6
- Name: libbrotlicommon
7
- URL: https://github.com/google/brotli
8
- Description: Brotli common dictionary library
9
- Version: @PACKAGE_VERSION@
10
- Libs: -L${libdir} -R${libdir} -lbrotlicommon
11
- Cflags: -I${includedir}