]> wimlib.net Git - wimlib/blobdiff - src/lzx-comp.c
to_leXX() -> cpu_to_leXX(), leXX_to_cpu()
[wimlib] / src / lzx-comp.c
index cde37ab5ca77558cf181dacd151f83a84c42c0d4..328627de3f842f0dc0471294fa8cfcb42101931a 100644 (file)
@@ -581,7 +581,7 @@ static void do_call_insn_preprocessing(u8 uncompressed_data[],
                        i++;
                        continue;
                }
-               rel_offset = to_le32(*(int32_t*)(uncompressed_data + i + 1));
+               rel_offset = le32_to_cpu(*(int32_t*)(uncompressed_data + i + 1));
 
                if (rel_offset >= -i && rel_offset < file_size) {
                        if (rel_offset < file_size - i) {
@@ -591,7 +591,7 @@ static void do_call_insn_preprocessing(u8 uncompressed_data[],
                                /* "compensating translation" */
                                abs_offset = rel_offset - file_size;
                        }
-                       *(int32_t*)(uncompressed_data + i + 1) = to_le32(abs_offset);
+                       *(int32_t*)(uncompressed_data + i + 1) = cpu_to_le32(abs_offset);
                }
                i += 5;
        }
@@ -599,7 +599,11 @@ static void do_call_insn_preprocessing(u8 uncompressed_data[],
 
 
 static const struct lz_params lzx_lz_params = {
+
+        /* LZX_MIN_MATCH == 2, but 2-character matches are rarely useful; the
+         * minimum match for compression is set to 3 instead. */
        .min_match      = 3,
+
        .max_match      = LZX_MAX_MATCH,
        .good_match     = LZX_MAX_MATCH,
        .nice_match     = LZX_MAX_MATCH,
@@ -638,6 +642,7 @@ int lzx_compress(const void *__uncompressed_data, uint uncompressed_len,
        uint compressed_len;
        uint i;
        int ret;
+       int block_type = LZX_BLOCKTYPE_ALIGNED;
 
        LZX_DEBUG("uncompressed_len = %u", uncompressed_len);
 
@@ -676,7 +681,7 @@ int lzx_compress(const void *__uncompressed_data, uint uncompressed_len,
 
        /* The first three bits tell us what kind of block it is, and are one
         * of the LZX_BLOCKTYPE_* values.  */
-       bitstream_put_bits(&ostream, LZX_BLOCKTYPE_ALIGNED, 3);
+       bitstream_put_bits(&ostream, block_type, 3);
 
        /* The next bit indicates whether the block size is the default (32768),
         * indicated by a 1 bit, or whether the block size is given by the next
@@ -691,9 +696,10 @@ int lzx_compress(const void *__uncompressed_data, uint uncompressed_len,
        /* Write out the aligned offset tree. Note that M$ lies and says that
         * the aligned offset tree comes after the length tree, but that is
         * wrong; it actually is before the main tree.  */
-       for (i = 0; i < LZX_ALIGNEDTREE_NUM_SYMBOLS; i++)
-               bitstream_put_bits(&ostream, codes.aligned_lens[i], 
-                                  LZX_ALIGNEDTREE_ELEMENT_SIZE);
+       if (block_type == LZX_BLOCKTYPE_ALIGNED)
+               for (i = 0; i < LZX_ALIGNEDTREE_NUM_SYMBOLS; i++)
+                       bitstream_put_bits(&ostream, codes.aligned_lens[i],
+                                          LZX_ALIGNEDTREE_ELEMENT_SIZE);
 
        /* Write the pre-tree and lengths for the first LZX_NUM_CHARS symbols in the
         * main tree. */
@@ -717,7 +723,7 @@ int lzx_compress(const void *__uncompressed_data, uint uncompressed_len,
                return ret;
 
        /* Write the compressed literals. */
-       ret = lzx_write_compressed_literals(&ostream, LZX_BLOCKTYPE_ALIGNED,
+       ret = lzx_write_compressed_literals(&ostream, block_type,
                                            match_tab, num_matches, &codes);
        if (ret != 0)
                return ret;