brotli 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/.gitmodules +1 -1
- data/.travis.yml +2 -1
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/ext/brotli/brotli.cc +1 -1
- data/ext/brotli/extconf.rb +72 -14
- data/lib/brotli/version.rb +1 -1
- data/vendor/brotli/LICENSE +19 -202
- data/vendor/brotli/dec/Makefile +1 -1
- data/vendor/brotli/dec/bit_reader.c +23 -30
- data/vendor/brotli/dec/bit_reader.h +270 -141
- data/vendor/brotli/dec/context.h +3 -12
- data/vendor/brotli/dec/decode.c +1813 -1048
- data/vendor/brotli/dec/decode.h +22 -16
- data/vendor/brotli/dec/dictionary.c +9466 -0
- data/vendor/brotli/dec/dictionary.h +6 -9461
- data/vendor/brotli/dec/huffman.c +104 -71
- data/vendor/brotli/dec/huffman.h +19 -28
- data/vendor/brotli/dec/port.h +124 -32
- data/vendor/brotli/dec/prefix.h +4 -13
- data/vendor/brotli/dec/state.c +93 -56
- data/vendor/brotli/dec/state.h +124 -53
- data/vendor/brotli/dec/streams.c +14 -11
- data/vendor/brotli/dec/streams.h +6 -11
- data/vendor/brotli/dec/transform.h +2 -11
- data/vendor/brotli/dec/types.h +21 -19
- data/vendor/brotli/enc/Makefile +4 -1
- data/vendor/brotli/enc/backward_references.cc +87 -94
- data/vendor/brotli/enc/backward_references.h +8 -18
- data/vendor/brotli/enc/bit_cost.h +11 -19
- data/vendor/brotli/enc/block_splitter.cc +43 -48
- data/vendor/brotli/enc/block_splitter.h +7 -16
- data/vendor/brotli/enc/brotli_bit_stream.cc +48 -50
- data/vendor/brotli/enc/brotli_bit_stream.h +7 -16
- data/vendor/brotli/enc/cluster.h +24 -25
- data/vendor/brotli/enc/command.h +34 -41
- data/vendor/brotli/enc/context.h +11 -18
- data/vendor/brotli/enc/dictionary.cc +9466 -0
- data/vendor/brotli/enc/dictionary.h +20 -9464
- data/vendor/brotli/enc/dictionary_hash.h +7 -15
- data/vendor/brotli/enc/encode.cc +80 -148
- data/vendor/brotli/enc/encode.h +19 -29
- data/vendor/brotli/enc/encode_parallel.cc +35 -108
- data/vendor/brotli/enc/encode_parallel.h +7 -16
- data/vendor/brotli/enc/entropy_encode.cc +33 -42
- data/vendor/brotli/enc/entropy_encode.h +8 -16
- data/vendor/brotli/enc/fast_log.h +8 -15
- data/vendor/brotli/enc/find_match_length.h +7 -17
- data/vendor/brotli/enc/hash.h +130 -150
- data/vendor/brotli/enc/histogram.cc +7 -16
- data/vendor/brotli/enc/histogram.h +11 -17
- data/vendor/brotli/enc/literal_cost.cc +28 -35
- data/vendor/brotli/enc/literal_cost.h +9 -23
- data/vendor/brotli/enc/metablock.cc +18 -26
- data/vendor/brotli/enc/metablock.h +6 -14
- data/vendor/brotli/enc/port.h +14 -14
- data/vendor/brotli/enc/prefix.h +11 -18
- data/vendor/brotli/enc/ringbuffer.h +18 -27
- data/vendor/brotli/enc/static_dict.cc +7 -1
- data/vendor/brotli/enc/static_dict.h +7 -15
- data/vendor/brotli/enc/static_dict_lut.h +7 -15
- data/vendor/brotli/enc/streams.cc +15 -28
- data/vendor/brotli/enc/streams.h +27 -35
- data/vendor/brotli/enc/transform.h +9 -16
- data/vendor/brotli/enc/types.h +27 -0
- data/vendor/brotli/enc/utf8_util.cc +82 -0
- data/vendor/brotli/enc/utf8_util.h +25 -0
- data/vendor/brotli/enc/write_bits.h +11 -18
- metadata +7 -2
    
        data/vendor/brotli/dec/state.c
    CHANGED
    
    | @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            /* Copyright 2015 Google Inc. All Rights Reserved.
         | 
| 2 2 |  | 
| 3 | 
            -
                | 
| 4 | 
            -
                | 
| 5 | 
            -
               You may obtain a copy of the License at
         | 
| 6 | 
            -
             | 
| 7 | 
            -
               http://www.apache.org/licenses/LICENSE-2.0
         | 
| 8 | 
            -
             | 
| 9 | 
            -
               Unless required by applicable law or agreed to in writing, software
         | 
| 10 | 
            -
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 | 
            -
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 | 
            -
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 3 | 
            +
               Distributed under MIT license.
         | 
| 4 | 
            +
               See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
         | 
| 14 5 | 
             
            */
         | 
| 15 6 |  | 
| 16 7 | 
             
            #include "./huffman.h"
         | 
| @@ -23,10 +14,47 @@ | |
| 23 14 | 
             
            extern "C" {
         | 
| 24 15 | 
             
            #endif
         | 
| 25 16 |  | 
| 17 | 
            +
            static void* DefaultAllocFunc(void* opaque, size_t size) {
         | 
| 18 | 
            +
              BROTLI_UNUSED(opaque);
         | 
| 19 | 
            +
              return malloc(size);
         | 
| 20 | 
            +
            }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            static void DefaultFreeFunc(void* opaque, void* address) {
         | 
| 23 | 
            +
              BROTLI_UNUSED(opaque);
         | 
| 24 | 
            +
              free(address);
         | 
| 25 | 
            +
            }
         | 
| 26 | 
            +
             | 
| 26 27 | 
             
            void BrotliStateInit(BrotliState* s) {
         | 
| 28 | 
            +
              BrotliStateInitWithCustomAllocators(s, 0, 0, 0);
         | 
| 29 | 
            +
            }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            void BrotliStateInitWithCustomAllocators(BrotliState* s,
         | 
| 32 | 
            +
                brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {
         | 
| 33 | 
            +
              if (!alloc_func) {
         | 
| 34 | 
            +
                s->alloc_func = DefaultAllocFunc;
         | 
| 35 | 
            +
                s->free_func = DefaultFreeFunc;
         | 
| 36 | 
            +
                s->memory_manager_opaque = 0;
         | 
| 37 | 
            +
              } else {
         | 
| 38 | 
            +
                s->alloc_func = alloc_func;
         | 
| 39 | 
            +
                s->free_func = free_func;
         | 
| 40 | 
            +
                s->memory_manager_opaque = opaque;
         | 
| 41 | 
            +
              }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              BrotliInitBitReader(&s->br);
         | 
| 27 44 | 
             
              s->state = BROTLI_STATE_UNINITED;
         | 
| 28 | 
            -
              s-> | 
| 29 | 
            -
              s-> | 
| 45 | 
            +
              s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;
         | 
| 46 | 
            +
              s->substate_tree_group = BROTLI_STATE_TREE_GROUP_NONE;
         | 
| 47 | 
            +
              s->substate_context_map = BROTLI_STATE_CONTEXT_MAP_NONE;
         | 
| 48 | 
            +
              s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_NONE;
         | 
| 49 | 
            +
              s->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;
         | 
| 50 | 
            +
              s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;
         | 
| 51 | 
            +
              s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              s->buffer_length = 0;
         | 
| 54 | 
            +
              s->loop_counter = 0;
         | 
| 55 | 
            +
              s->pos = 0;
         | 
| 56 | 
            +
              s->rb_roundtrips = 0;
         | 
| 57 | 
            +
              s->partial_pos_out = 0;
         | 
| 30 58 |  | 
| 31 59 | 
             
              s->block_type_trees = NULL;
         | 
| 32 60 | 
             
              s->block_len_trees = NULL;
         | 
| @@ -38,6 +66,8 @@ void BrotliStateInit(BrotliState* s) { | |
| 38 66 | 
             
              s->context_map_slice = NULL;
         | 
| 39 67 | 
             
              s->dist_context_map_slice = NULL;
         | 
| 40 68 |  | 
| 69 | 
            +
              s->sub_loop_counter = 0;
         | 
| 70 | 
            +
             | 
| 41 71 | 
             
              s->literal_hgroup.codes = NULL;
         | 
| 42 72 | 
             
              s->literal_hgroup.htrees = NULL;
         | 
| 43 73 | 
             
              s->insert_copy_hgroup.codes = NULL;
         | 
| @@ -45,10 +75,11 @@ void BrotliStateInit(BrotliState* s) { | |
| 45 75 | 
             
              s->distance_hgroup.codes = NULL;
         | 
| 46 76 | 
             
              s->distance_hgroup.htrees = NULL;
         | 
| 47 77 |  | 
| 78 | 
            +
             | 
| 48 79 | 
             
              s->custom_dict = NULL;
         | 
| 49 80 | 
             
              s->custom_dict_size = 0;
         | 
| 50 81 |  | 
| 51 | 
            -
              s-> | 
| 82 | 
            +
              s->is_last_metablock = 0;
         | 
| 52 83 | 
             
              s->window_bits = 0;
         | 
| 53 84 | 
             
              s->max_distance = 0;
         | 
| 54 85 | 
             
              s->dist_rb[0] = 16;
         | 
| @@ -63,13 +94,20 @@ void BrotliStateInit(BrotliState* s) { | |
| 63 94 | 
             
              s->symbol_lists = &s->symbols_lists_array[BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1];
         | 
| 64 95 |  | 
| 65 96 | 
             
              s->mtf_upper_bound = 255;
         | 
| 97 | 
            +
             | 
| 98 | 
            +
              s->legacy_input_buffer = 0;
         | 
| 99 | 
            +
              s->legacy_output_buffer = 0;
         | 
| 100 | 
            +
              s->legacy_input_len = 0;
         | 
| 101 | 
            +
              s->legacy_output_len = 0;
         | 
| 102 | 
            +
              s->legacy_input_pos = 0;
         | 
| 103 | 
            +
              s->legacy_output_pos = 0;
         | 
| 66 104 | 
             
            }
         | 
| 67 105 |  | 
| 68 106 | 
             
            void BrotliStateMetablockBegin(BrotliState* s) {
         | 
| 69 107 | 
             
              s->meta_block_remaining_len = 0;
         | 
| 70 | 
            -
              s->block_length[0] =  | 
| 71 | 
            -
              s->block_length[1] =  | 
| 72 | 
            -
              s->block_length[2] =  | 
| 108 | 
            +
              s->block_length[0] = 1U << 28;
         | 
| 109 | 
            +
              s->block_length[1] = 1U << 28;
         | 
| 110 | 
            +
              s->block_length[2] = 1U << 28;
         | 
| 73 111 | 
             
              s->num_block_types[0] = 1;
         | 
| 74 112 | 
             
              s->num_block_types[1] = 1;
         | 
| 75 113 | 
             
              s->num_block_types[2] = 1;
         | 
| @@ -98,50 +136,49 @@ void BrotliStateMetablockBegin(BrotliState* s) { | |
| 98 136 | 
             
            }
         | 
| 99 137 |  | 
| 100 138 | 
             
            void BrotliStateCleanupAfterMetablock(BrotliState* s) {
         | 
| 101 | 
            -
               | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
              }
         | 
| 105 | 
            -
              if (s->context_map != 0) {
         | 
| 106 | 
            -
                free(s->context_map);
         | 
| 107 | 
            -
                s->context_map = NULL;
         | 
| 108 | 
            -
              }
         | 
| 109 | 
            -
              if (s->dist_context_map != 0) {
         | 
| 110 | 
            -
                free(s->dist_context_map);
         | 
| 111 | 
            -
                s->dist_context_map = NULL;
         | 
| 112 | 
            -
              }
         | 
| 139 | 
            +
              BROTLI_FREE(s, s->context_modes);
         | 
| 140 | 
            +
              BROTLI_FREE(s, s->context_map);
         | 
| 141 | 
            +
              BROTLI_FREE(s, s->dist_context_map);
         | 
| 113 142 |  | 
| 114 | 
            -
              BrotliHuffmanTreeGroupRelease(&s->literal_hgroup);
         | 
| 115 | 
            -
              BrotliHuffmanTreeGroupRelease(&s->insert_copy_hgroup);
         | 
| 116 | 
            -
              BrotliHuffmanTreeGroupRelease(&s->distance_hgroup);
         | 
| 117 | 
            -
              s->literal_hgroup.codes = NULL;
         | 
| 118 | 
            -
              s->literal_hgroup.htrees = NULL;
         | 
| 119 | 
            -
              s->insert_copy_hgroup.codes = NULL;
         | 
| 120 | 
            -
              s->insert_copy_hgroup.htrees = NULL;
         | 
| 121 | 
            -
              s->distance_hgroup.codes = NULL;
         | 
| 122 | 
            -
              s->distance_hgroup.htrees = NULL;
         | 
| 143 | 
            +
              BrotliHuffmanTreeGroupRelease(s, &s->literal_hgroup);
         | 
| 144 | 
            +
              BrotliHuffmanTreeGroupRelease(s, &s->insert_copy_hgroup);
         | 
| 145 | 
            +
              BrotliHuffmanTreeGroupRelease(s, &s->distance_hgroup);
         | 
| 123 146 | 
             
            }
         | 
| 124 147 |  | 
| 125 148 | 
             
            void BrotliStateCleanup(BrotliState* s) {
         | 
| 126 | 
            -
               | 
| 127 | 
            -
                free(s->context_modes);
         | 
| 128 | 
            -
              }
         | 
| 129 | 
            -
              if (s->context_map != 0) {
         | 
| 130 | 
            -
                free(s->context_map);
         | 
| 131 | 
            -
              }
         | 
| 132 | 
            -
              if (s->dist_context_map != 0) {
         | 
| 133 | 
            -
                free(s->dist_context_map);
         | 
| 134 | 
            -
              }
         | 
| 135 | 
            -
              BrotliHuffmanTreeGroupRelease(&s->literal_hgroup);
         | 
| 136 | 
            -
              BrotliHuffmanTreeGroupRelease(&s->insert_copy_hgroup);
         | 
| 137 | 
            -
              BrotliHuffmanTreeGroupRelease(&s->distance_hgroup);
         | 
| 149 | 
            +
              BrotliStateCleanupAfterMetablock(s);
         | 
| 138 150 |  | 
| 139 | 
            -
               | 
| 140 | 
            -
             | 
| 141 | 
            -
               | 
| 142 | 
            -
               | 
| 143 | 
            -
             | 
| 144 | 
            -
             | 
| 151 | 
            +
              BROTLI_FREE(s, s->ringbuffer);
         | 
| 152 | 
            +
              BROTLI_FREE(s, s->block_type_trees);
         | 
| 153 | 
            +
              BROTLI_FREE(s, s->legacy_input_buffer);
         | 
| 154 | 
            +
              BROTLI_FREE(s, s->legacy_output_buffer);
         | 
| 155 | 
            +
            }
         | 
| 156 | 
            +
             | 
| 157 | 
            +
            int BrotliStateIsStreamStart(const BrotliState* s) {
         | 
| 158 | 
            +
              return (s->state == BROTLI_STATE_UNINITED &&
         | 
| 159 | 
            +
                  BrotliGetAvailableBits(&s->br) == 0);
         | 
| 160 | 
            +
            }
         | 
| 161 | 
            +
             | 
| 162 | 
            +
            int BrotliStateIsStreamEnd(const BrotliState* s) {
         | 
| 163 | 
            +
              return s->state == BROTLI_STATE_DONE;
         | 
| 164 | 
            +
            }
         | 
| 165 | 
            +
             | 
| 166 | 
            +
            void BrotliHuffmanTreeGroupInit(BrotliState* s, HuffmanTreeGroup* group,
         | 
| 167 | 
            +
                uint32_t alphabet_size, uint32_t ntrees) {
         | 
| 168 | 
            +
              /* Pack two allocations into one */
         | 
| 169 | 
            +
              const size_t code_size =
         | 
| 170 | 
            +
                  sizeof(HuffmanCode) * (size_t)(ntrees * BROTLI_HUFFMAN_MAX_TABLE_SIZE);
         | 
| 171 | 
            +
              const size_t htree_size = sizeof(HuffmanCode*) * (size_t)ntrees;
         | 
| 172 | 
            +
              char *p = (char*)BROTLI_ALLOC(s, code_size + htree_size);
         | 
| 173 | 
            +
              group->alphabet_size = (uint16_t)alphabet_size;
         | 
| 174 | 
            +
              group->num_htrees = (uint16_t)ntrees;
         | 
| 175 | 
            +
              group->codes = (HuffmanCode*)p;
         | 
| 176 | 
            +
              group->htrees = (HuffmanCode**)(p + code_size);
         | 
| 177 | 
            +
            }
         | 
| 178 | 
            +
             | 
| 179 | 
            +
            void BrotliHuffmanTreeGroupRelease(BrotliState* s, HuffmanTreeGroup* group) {
         | 
| 180 | 
            +
              BROTLI_FREE(s, group->codes);
         | 
| 181 | 
            +
              group->htrees = NULL;
         | 
| 145 182 | 
             
            }
         | 
| 146 183 |  | 
| 147 184 | 
             
            #if defined(__cplusplus) || defined(c_plusplus)
         | 
    
        data/vendor/brotli/dec/state.h
    CHANGED
    
    | @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            /* Copyright 2015 Google Inc. All Rights Reserved.
         | 
| 2 2 |  | 
| 3 | 
            -
                | 
| 4 | 
            -
                | 
| 5 | 
            -
               You may obtain a copy of the License at
         | 
| 6 | 
            -
             | 
| 7 | 
            -
               http://www.apache.org/licenses/LICENSE-2.0
         | 
| 8 | 
            -
             | 
| 9 | 
            -
               Unless required by applicable law or agreed to in writing, software
         | 
| 10 | 
            -
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 | 
            -
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 | 
            -
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 3 | 
            +
               Distributed under MIT license.
         | 
| 4 | 
            +
               See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
         | 
| 14 5 | 
             
            */
         | 
| 15 6 |  | 
| 16 7 | 
             
            /* Brotli state for partial streaming decoding. */
         | 
| @@ -21,7 +12,6 @@ | |
| 21 12 | 
             
            #include <stdio.h>
         | 
| 22 13 | 
             
            #include "./bit_reader.h"
         | 
| 23 14 | 
             
            #include "./huffman.h"
         | 
| 24 | 
            -
            #include "./streams.h"
         | 
| 25 15 | 
             
            #include "./types.h"
         | 
| 26 16 |  | 
| 27 17 | 
             
            #if defined(__cplusplus) || defined(c_plusplus)
         | 
| @@ -30,22 +20,24 @@ extern "C" { | |
| 30 20 |  | 
| 31 21 | 
             
            typedef enum {
         | 
| 32 22 | 
             
              BROTLI_STATE_UNINITED,
         | 
| 33 | 
            -
              BROTLI_STATE_BITREADER_WARMUP,
         | 
| 34 23 | 
             
              BROTLI_STATE_METABLOCK_BEGIN,
         | 
| 35 | 
            -
               | 
| 24 | 
            +
              BROTLI_STATE_METABLOCK_HEADER,
         | 
| 36 25 | 
             
              BROTLI_STATE_METABLOCK_HEADER_2,
         | 
| 26 | 
            +
              BROTLI_STATE_CONTEXT_MODES,
         | 
| 37 27 | 
             
              BROTLI_STATE_COMMAND_BEGIN,
         | 
| 38 28 | 
             
              BROTLI_STATE_COMMAND_INNER,
         | 
| 29 | 
            +
              BROTLI_STATE_COMMAND_POST_DECODE_LITERALS,
         | 
| 30 | 
            +
              BROTLI_STATE_COMMAND_POST_WRAP_COPY,
         | 
| 39 31 | 
             
              BROTLI_STATE_UNCOMPRESSED,
         | 
| 40 32 | 
             
              BROTLI_STATE_METADATA,
         | 
| 41 33 | 
             
              BROTLI_STATE_COMMAND_INNER_WRITE,
         | 
| 42 34 | 
             
              BROTLI_STATE_METABLOCK_DONE,
         | 
| 43 35 | 
             
              BROTLI_STATE_COMMAND_POST_WRITE_1,
         | 
| 44 36 | 
             
              BROTLI_STATE_COMMAND_POST_WRITE_2,
         | 
| 45 | 
            -
              BROTLI_STATE_COMMAND_POST_WRAP_COPY,
         | 
| 46 37 | 
             
              BROTLI_STATE_HUFFMAN_CODE_0,
         | 
| 47 38 | 
             
              BROTLI_STATE_HUFFMAN_CODE_1,
         | 
| 48 39 | 
             
              BROTLI_STATE_HUFFMAN_CODE_2,
         | 
| 40 | 
            +
              BROTLI_STATE_HUFFMAN_CODE_3,
         | 
| 49 41 | 
             
              BROTLI_STATE_CONTEXT_MAP_1,
         | 
| 50 42 | 
             
              BROTLI_STATE_CONTEXT_MAP_2,
         | 
| 51 43 | 
             
              BROTLI_STATE_TREE_GROUP,
         | 
| @@ -53,28 +45,70 @@ typedef enum { | |
| 53 45 | 
             
            } BrotliRunningState;
         | 
| 54 46 |  | 
| 55 47 | 
             
            typedef enum {
         | 
| 56 | 
            -
               | 
| 57 | 
            -
               | 
| 58 | 
            -
               | 
| 59 | 
            -
               | 
| 60 | 
            -
               | 
| 61 | 
            -
               | 
| 62 | 
            -
               | 
| 63 | 
            -
               | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 48 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_NONE,
         | 
| 49 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_EMPTY,
         | 
| 50 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_NIBBLES,
         | 
| 51 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_SIZE,
         | 
| 52 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED,
         | 
| 53 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_RESERVED,
         | 
| 54 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_BYTES,
         | 
| 55 | 
            +
              BROTLI_STATE_METABLOCK_HEADER_METADATA
         | 
| 56 | 
            +
            } BrotliRunningMetablockHeaderState;
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            typedef enum {
         | 
| 59 | 
            +
              BROTLI_STATE_UNCOMPRESSED_NONE,
         | 
| 60 | 
            +
              BROTLI_STATE_UNCOMPRESSED_WRITE
         | 
| 61 | 
            +
            } BrotliRunningUncompressedState;
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            typedef enum {
         | 
| 64 | 
            +
              BROTLI_STATE_TREE_GROUP_NONE,
         | 
| 65 | 
            +
              BROTLI_STATE_TREE_GROUP_LOOP
         | 
| 66 | 
            +
            } BrotliRunningTreeGroupState;
         | 
| 68 67 |  | 
| 69 68 | 
             
            typedef enum {
         | 
| 70 | 
            -
               | 
| 71 | 
            -
               | 
| 72 | 
            -
             | 
| 69 | 
            +
              BROTLI_STATE_CONTEXT_MAP_NONE,
         | 
| 70 | 
            +
              BROTLI_STATE_CONTEXT_MAP_READ_PREFIX,
         | 
| 71 | 
            +
              BROTLI_STATE_CONTEXT_MAP_HUFFMAN,
         | 
| 72 | 
            +
              BROTLI_STATE_CONTEXT_MAP_DECODE,
         | 
| 73 | 
            +
              BROTLI_STATE_CONTEXT_MAP_TRANSFORM
         | 
| 74 | 
            +
            } BrotliRunningContextMapState;
         | 
| 73 75 |  | 
| 74 | 
            -
            typedef  | 
| 76 | 
            +
            typedef enum {
         | 
| 77 | 
            +
              BROTLI_STATE_HUFFMAN_NONE,
         | 
| 78 | 
            +
              BROTLI_STATE_HUFFMAN_SIMPLE_SIZE,
         | 
| 79 | 
            +
              BROTLI_STATE_HUFFMAN_SIMPLE_READ,
         | 
| 80 | 
            +
              BROTLI_STATE_HUFFMAN_SIMPLE_BUILD,
         | 
| 81 | 
            +
              BROTLI_STATE_HUFFMAN_COMPLEX,
         | 
| 82 | 
            +
              BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS
         | 
| 83 | 
            +
            } BrotliRunningHuffmanState;
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            typedef enum {
         | 
| 86 | 
            +
              BROTLI_STATE_DECODE_UINT8_NONE,
         | 
| 87 | 
            +
              BROTLI_STATE_DECODE_UINT8_SHORT,
         | 
| 88 | 
            +
              BROTLI_STATE_DECODE_UINT8_LONG
         | 
| 89 | 
            +
            } BrotliRunningDecodeUint8State;
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            typedef enum {
         | 
| 92 | 
            +
              BROTLI_STATE_READ_BLOCK_LENGTH_NONE,
         | 
| 93 | 
            +
              BROTLI_STATE_READ_BLOCK_LENGTH_SUFFIX
         | 
| 94 | 
            +
            } BrotliRunningReadBlockLengthState;
         | 
| 95 | 
            +
             | 
| 96 | 
            +
            struct BrotliStateStruct {
         | 
| 75 97 | 
             
              BrotliRunningState state;
         | 
| 76 | 
            -
              /* This counter is reused for several disjoint loops. */
         | 
| 77 98 | 
             
              BrotliBitReader br;
         | 
| 99 | 
            +
             | 
| 100 | 
            +
              brotli_alloc_func alloc_func;
         | 
| 101 | 
            +
              brotli_free_func free_func;
         | 
| 102 | 
            +
              void* memory_manager_opaque;
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              /* Temporary storage for remaining input. */
         | 
| 105 | 
            +
              union {
         | 
| 106 | 
            +
                uint64_t u64;
         | 
| 107 | 
            +
                uint8_t u8[8];
         | 
| 108 | 
            +
              } buffer;
         | 
| 109 | 
            +
              uint32_t buffer_length;
         | 
| 110 | 
            +
             | 
| 111 | 
            +
              /* This counter is reused for several disjoint loops. */
         | 
| 78 112 | 
             
              int loop_counter;
         | 
| 79 113 | 
             
              int pos;
         | 
| 80 114 | 
             
              int max_backward_distance;
         | 
| @@ -92,6 +126,8 @@ typedef struct { | |
| 92 126 | 
             
              uint8_t* context_map_slice;
         | 
| 93 127 | 
             
              uint8_t* dist_context_map_slice;
         | 
| 94 128 |  | 
| 129 | 
            +
              uint32_t sub_loop_counter;
         | 
| 130 | 
            +
             | 
| 95 131 | 
             
              /* This ring buffer holds a few past copy distances that will be used by */
         | 
| 96 132 | 
             
              /* some special distance codes. */
         | 
| 97 133 | 
             
              HuffmanTreeGroup literal_hgroup;
         | 
| @@ -104,25 +140,28 @@ typedef struct { | |
| 104 140 | 
             
              int trivial_literal_context;
         | 
| 105 141 | 
             
              int distance_context;
         | 
| 106 142 | 
             
              int meta_block_remaining_len;
         | 
| 107 | 
            -
               | 
| 108 | 
            -
               | 
| 109 | 
            -
               | 
| 110 | 
            -
               | 
| 111 | 
            -
               | 
| 143 | 
            +
              uint32_t block_length_index;
         | 
| 144 | 
            +
              uint32_t block_length[3];
         | 
| 145 | 
            +
              uint32_t num_block_types[3];
         | 
| 146 | 
            +
              uint32_t block_type_rb[6];
         | 
| 147 | 
            +
              uint32_t distance_postfix_bits;
         | 
| 148 | 
            +
              uint32_t num_direct_distance_codes;
         | 
| 112 149 | 
             
              int distance_postfix_mask;
         | 
| 150 | 
            +
              uint32_t num_dist_htrees;
         | 
| 113 151 | 
             
              uint8_t* dist_context_map;
         | 
| 114 | 
            -
              uint8_t literal_htree_index;
         | 
| 115 152 | 
             
              HuffmanCode *literal_htree;
         | 
| 153 | 
            +
              uint8_t literal_htree_index;
         | 
| 116 154 | 
             
              uint8_t dist_htree_index;
         | 
| 117 | 
            -
               | 
| 118 | 
            -
               | 
| 155 | 
            +
              uint32_t repeat_code_len;
         | 
| 156 | 
            +
              uint32_t prev_code_len;
         | 
| 157 | 
            +
             | 
| 119 158 |  | 
| 120 159 | 
             
              int copy_length;
         | 
| 121 160 | 
             
              int distance_code;
         | 
| 122 161 |  | 
| 123 162 | 
             
              /* For partial write operations */
         | 
| 124 | 
            -
               | 
| 125 | 
            -
               | 
| 163 | 
            +
              size_t rb_roundtrips;  /* How many times we went around the ringbuffer */
         | 
| 164 | 
            +
              size_t partial_pos_out;  /* How much output to the user in total (<= rb) */
         | 
| 126 165 |  | 
| 127 166 | 
             
              /* For ReadHuffmanCode */
         | 
| 128 167 | 
             
              uint32_t symbol;
         | 
| @@ -146,12 +185,13 @@ typedef struct { | |
| 146 185 | 
             
              HuffmanCode* next;
         | 
| 147 186 |  | 
| 148 187 | 
             
              /* For DecodeContextMap */
         | 
| 149 | 
            -
               | 
| 150 | 
            -
               | 
| 188 | 
            +
              uint32_t context_index;
         | 
| 189 | 
            +
              uint32_t max_run_length_prefix;
         | 
| 190 | 
            +
              uint32_t code;
         | 
| 151 191 | 
             
              HuffmanCode context_map_table[BROTLI_HUFFMAN_MAX_TABLE_SIZE];
         | 
| 152 192 |  | 
| 153 193 | 
             
              /* For InverseMoveToFrontTransform */
         | 
| 154 | 
            -
               | 
| 194 | 
            +
              uint32_t mtf_upper_bound;
         | 
| 155 195 | 
             
              uint8_t mtf[256];
         | 
| 156 196 |  | 
| 157 197 | 
             
              /* For custom dictionaries */
         | 
| @@ -159,24 +199,55 @@ typedef struct { | |
| 159 199 | 
             
              int custom_dict_size;
         | 
| 160 200 |  | 
| 161 201 | 
             
              /* less used attributes are in the end of this struct */
         | 
| 162 | 
            -
               | 
| 163 | 
            -
               | 
| 202 | 
            +
              /* States inside function calls */
         | 
| 203 | 
            +
              BrotliRunningMetablockHeaderState substate_metablock_header;
         | 
| 204 | 
            +
              BrotliRunningTreeGroupState substate_tree_group;
         | 
| 205 | 
            +
              BrotliRunningContextMapState substate_context_map;
         | 
| 206 | 
            +
              BrotliRunningUncompressedState substate_uncompressed;
         | 
| 207 | 
            +
              BrotliRunningHuffmanState substate_huffman;
         | 
| 208 | 
            +
              BrotliRunningDecodeUint8State substate_decode_uint8;
         | 
| 209 | 
            +
              BrotliRunningReadBlockLengthState substate_read_block_length;
         | 
| 164 210 |  | 
| 165 | 
            -
               | 
| 211 | 
            +
              uint8_t is_last_metablock;
         | 
| 212 | 
            +
              uint8_t is_uncompressed;
         | 
| 213 | 
            +
              uint8_t is_metadata;
         | 
| 214 | 
            +
              uint8_t size_nibbles;
         | 
| 166 215 | 
             
              uint32_t window_bits;
         | 
| 167 216 |  | 
| 168 | 
            -
               | 
| 169 | 
            -
              int nbytes;
         | 
| 170 | 
            -
             | 
| 171 | 
            -
              int num_literal_htrees;
         | 
| 217 | 
            +
              uint32_t num_literal_htrees;
         | 
| 172 218 | 
             
              uint8_t* context_map;
         | 
| 173 219 | 
             
              uint8_t* context_modes;
         | 
| 174 | 
            -
             | 
| 220 | 
            +
             | 
| 221 | 
            +
              uint8_t* legacy_input_buffer;
         | 
| 222 | 
            +
              uint8_t* legacy_output_buffer;
         | 
| 223 | 
            +
              size_t legacy_input_len;
         | 
| 224 | 
            +
              size_t legacy_output_len;
         | 
| 225 | 
            +
              size_t legacy_input_pos;
         | 
| 226 | 
            +
              size_t legacy_output_pos;
         | 
| 227 | 
            +
            };
         | 
| 228 | 
            +
             | 
| 229 | 
            +
            typedef struct BrotliStateStruct BrotliState;
         | 
| 175 230 |  | 
| 176 231 | 
             
            void BrotliStateInit(BrotliState* s);
         | 
| 232 | 
            +
            void BrotliStateInitWithCustomAllocators(BrotliState* s,
         | 
| 233 | 
            +
                                                     brotli_alloc_func alloc_func,
         | 
| 234 | 
            +
                                                     brotli_free_func free_func,
         | 
| 235 | 
            +
                                                     void* opaque);
         | 
| 177 236 | 
             
            void BrotliStateCleanup(BrotliState* s);
         | 
| 178 237 | 
             
            void BrotliStateMetablockBegin(BrotliState* s);
         | 
| 179 238 | 
             
            void BrotliStateCleanupAfterMetablock(BrotliState* s);
         | 
| 239 | 
            +
            void BrotliHuffmanTreeGroupInit(BrotliState* s, HuffmanTreeGroup* group,
         | 
| 240 | 
            +
                                            uint32_t alphabet_size, uint32_t ntrees);
         | 
| 241 | 
            +
            void BrotliHuffmanTreeGroupRelease(BrotliState* s, HuffmanTreeGroup* group);
         | 
| 242 | 
            +
             | 
| 243 | 
            +
            /* Returns 1, if s is in a state where we have not read any input bytes yet,
         | 
| 244 | 
            +
               and 0 otherwise */
         | 
| 245 | 
            +
            int BrotliStateIsStreamStart(const BrotliState* s);
         | 
| 246 | 
            +
             | 
| 247 | 
            +
            /* Returns 1, if s is in a state where we reached the end of the input and
         | 
| 248 | 
            +
               produced all of the output, and 0 otherwise. */
         | 
| 249 | 
            +
            int BrotliStateIsStreamEnd(const BrotliState* s);
         | 
| 250 | 
            +
             | 
| 180 251 |  | 
| 181 252 | 
             
            #if defined(__cplusplus) || defined(c_plusplus)
         | 
| 182 253 | 
             
            } /* extern "C" */
         | 
    
        data/vendor/brotli/dec/streams.c
    CHANGED
    
    | @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            /* Copyright 2013 Google Inc. All Rights Reserved.
         | 
| 2 2 |  | 
| 3 | 
            -
                | 
| 4 | 
            -
                | 
| 5 | 
            -
               You may obtain a copy of the License at
         | 
| 6 | 
            -
             | 
| 7 | 
            -
               http://www.apache.org/licenses/LICENSE-2.0
         | 
| 8 | 
            -
             | 
| 9 | 
            -
               Unless required by applicable law or agreed to in writing, software
         | 
| 10 | 
            -
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 | 
            -
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 | 
            -
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 3 | 
            +
               Distributed under MIT license.
         | 
| 4 | 
            +
               See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
         | 
| 14 5 | 
             
            */
         | 
| 15 6 |  | 
| 16 7 | 
             
            /* Functions for streaming input and output. */
         | 
| @@ -93,6 +84,18 @@ BrotliOutput BrotliFileOutput(FILE* f) { | |
| 93 84 | 
             
              return out;
         | 
| 94 85 | 
             
            }
         | 
| 95 86 |  | 
| 87 | 
            +
            int BrotliNullOutputFunction(void* data , const uint8_t* buf, size_t count) {
         | 
| 88 | 
            +
              BROTLI_UNUSED(data);
         | 
| 89 | 
            +
              BROTLI_UNUSED(buf);
         | 
| 90 | 
            +
              return (int)count;
         | 
| 91 | 
            +
            }
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            BrotliOutput BrotliNullOutput(void) {
         | 
| 94 | 
            +
              BrotliOutput out;
         | 
| 95 | 
            +
              out.cb_ = BrotliNullOutputFunction;
         | 
| 96 | 
            +
              out.data_ = NULL;
         | 
| 97 | 
            +
              return out;
         | 
| 98 | 
            +
            }
         | 
| 96 99 |  | 
| 97 100 | 
             
            #if defined(__cplusplus) || defined(c_plusplus)
         | 
| 98 101 | 
             
            }    /* extern "C" */
         | 
    
        data/vendor/brotli/dec/streams.h
    CHANGED
    
    | @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            /* Copyright 2013 Google Inc. All Rights Reserved.
         | 
| 2 2 |  | 
| 3 | 
            -
                | 
| 4 | 
            -
                | 
| 5 | 
            -
               You may obtain a copy of the License at
         | 
| 6 | 
            -
             | 
| 7 | 
            -
               http://www.apache.org/licenses/LICENSE-2.0
         | 
| 8 | 
            -
             | 
| 9 | 
            -
               Unless required by applicable law or agreed to in writing, software
         | 
| 10 | 
            -
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 | 
            -
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 | 
            -
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 3 | 
            +
               Distributed under MIT license.
         | 
| 4 | 
            +
               See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
         | 
| 14 5 | 
             
            */
         | 
| 15 6 |  | 
| 16 7 | 
             
            /* Functions for streaming input and output. */
         | 
| @@ -93,6 +84,10 @@ BrotliInput BrotliFileInput(FILE* f); | |
| 93 84 | 
             
            int BrotliFileOutputFunction(void* data, const uint8_t* buf, size_t count);
         | 
| 94 85 | 
             
            BrotliOutput BrotliFileOutput(FILE* f);
         | 
| 95 86 |  | 
| 87 | 
            +
            /* Output callback that does nothing, always consumes the whole input. */
         | 
| 88 | 
            +
            int BrotliNullOutputFunction(void* data, const uint8_t* buf, size_t count);
         | 
| 89 | 
            +
            BrotliOutput BrotliNullOutput(void);
         | 
| 90 | 
            +
             | 
| 96 91 | 
             
            #if defined(__cplusplus) || defined(c_plusplus)
         | 
| 97 92 | 
             
            }    /* extern "C" */
         | 
| 98 93 | 
             
            #endif
         | 
| @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            /* Copyright 2013 Google Inc. All Rights Reserved.
         | 
| 2 2 |  | 
| 3 | 
            -
                | 
| 4 | 
            -
                | 
| 5 | 
            -
               You may obtain a copy of the License at
         | 
| 6 | 
            -
             | 
| 7 | 
            -
               http://www.apache.org/licenses/LICENSE-2.0
         | 
| 8 | 
            -
             | 
| 9 | 
            -
               Unless required by applicable law or agreed to in writing, software
         | 
| 10 | 
            -
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 | 
            -
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 | 
            -
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 3 | 
            +
               Distributed under MIT license.
         | 
| 4 | 
            +
               See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
         | 
| 14 5 | 
             
            */
         | 
| 15 6 |  | 
| 16 7 | 
             
            /* Transformations on dictionary words. */
         | 
    
        data/vendor/brotli/dec/types.h
    CHANGED
    
    | @@ -1,16 +1,7 @@ | |
| 1 1 | 
             
            /* Copyright 2013 Google Inc. All Rights Reserved.
         | 
| 2 2 |  | 
| 3 | 
            -
                | 
| 4 | 
            -
                | 
| 5 | 
            -
               You may obtain a copy of the License at
         | 
| 6 | 
            -
             | 
| 7 | 
            -
               http://www.apache.org/licenses/LICENSE-2.0
         | 
| 8 | 
            -
             | 
| 9 | 
            -
               Unless required by applicable law or agreed to in writing, software
         | 
| 10 | 
            -
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 | 
            -
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 | 
            -
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 3 | 
            +
               Distributed under MIT license.
         | 
| 4 | 
            +
               See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
         | 
| 14 5 | 
             
            */
         | 
| 15 6 |  | 
| 16 7 | 
             
            /* Common types */
         | 
| @@ -21,16 +12,27 @@ | |
| 21 12 | 
             
            #include <stddef.h>  /* for size_t */
         | 
| 22 13 |  | 
| 23 14 | 
             
            #if defined(_MSC_VER) && (_MSC_VER < 1600)
         | 
| 24 | 
            -
            typedef  | 
| 25 | 
            -
            typedef unsigned  | 
| 26 | 
            -
            typedef  | 
| 27 | 
            -
            typedef unsigned  | 
| 28 | 
            -
            typedef  | 
| 29 | 
            -
            typedef unsigned  | 
| 30 | 
            -
            typedef unsigned  | 
| 31 | 
            -
            typedef  | 
| 15 | 
            +
            typedef __int8 int8_t;
         | 
| 16 | 
            +
            typedef unsigned __int8 uint8_t;
         | 
| 17 | 
            +
            typedef __int16 int16_t;
         | 
| 18 | 
            +
            typedef unsigned __int16 uint16_t;
         | 
| 19 | 
            +
            typedef __int32 int32_t;
         | 
| 20 | 
            +
            typedef unsigned __int32 uint32_t;
         | 
| 21 | 
            +
            typedef unsigned __int64 uint64_t;
         | 
| 22 | 
            +
            typedef __int64 int64_t;
         | 
| 32 23 | 
             
            #else
         | 
| 33 24 | 
             
            #include <stdint.h>
         | 
| 34 25 | 
             
            #endif  /* defined(_MSC_VER) && (_MSC_VER < 1600) */
         | 
| 35 26 |  | 
| 27 | 
            +
            /* Allocating function pointer. Function MUST return 0 in the case of failure.
         | 
| 28 | 
            +
               Otherwise it MUST return a valid pointer to a memory region of at least
         | 
| 29 | 
            +
               size length. Neither items nor size are allowed to be 0.
         | 
| 30 | 
            +
               opaque argument is a pointer provided by client and could be used to bind
         | 
| 31 | 
            +
               function to specific object (memory pool). */
         | 
| 32 | 
            +
            typedef void* (*brotli_alloc_func) (void* opaque, size_t size);
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            /* Deallocating function pointer. Function SHOULD be no-op in the case the
         | 
| 35 | 
            +
               address is 0. */
         | 
| 36 | 
            +
            typedef void  (*brotli_free_func)  (void* opaque, void* address);
         | 
| 37 | 
            +
             | 
| 36 38 | 
             
            #endif  /* BROTLI_DEC_TYPES_H_ */
         | 
    
        data/vendor/brotli/enc/Makefile
    CHANGED
    
    | @@ -2,7 +2,10 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            include ../shared.mk
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 5 | 
            +
            OBJS_NODICT = backward_references.o block_splitter.o brotli_bit_stream.o encode.o encode_parallel.o entropy_encode.o histogram.o literal_cost.o metablock.o static_dict.o streams.o utf8_util.o
         | 
| 6 | 
            +
            OBJS = $(OBJS_NODICT) dictionary.o
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            nodict : $(OBJS_NODICT)
         | 
| 6 9 |  | 
| 7 10 | 
             
            all : $(OBJS)
         | 
| 8 11 |  |