]> wimlib.net Git - wimlib/blobdiff - src/xpress-decompress.c
Refactor headers
[wimlib] / src / xpress-decompress.c
index c16b5e32019085c5308bd136d73a94dd5439bc5c..584fa4aa7299966430e40cf308b0a4377f0aaf27 100644 (file)
  * extra symbol is there or not.
  */
 
-#include "util.h"
-#include "xpress.h"
-#include "wimlib.h"
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
 
+#include "wimlib.h"
+#include "wimlib/assert.h"
 #define XPRESS_DECOMP
-#include "decompress.h"
+#include "wimlib/decompress.h"
+#include "wimlib/util.h"
+#include "wimlib/xpress.h"
 
 /*
  * Decodes a symbol @huffsym that begins an XPRESS match.
@@ -180,7 +184,7 @@ xpress_decompress_block(struct input_bitstream *istream,
                ret = read_huffsym(istream, decode_table, lens,
                                   XPRESS_NUM_SYMBOLS, XPRESS_TABLEBITS,
                                   &huffsym, XPRESS_MAX_CODEWORD_LEN);
-               if (ret != 0)
+               if (ret)
                        return ret;
 
                if (huffsym < XPRESS_NUM_CHARS) {
@@ -200,9 +204,10 @@ xpress_decompress_block(struct input_bitstream *istream,
 }
 
 
-int
-xpress_decompress(const void *__compressed_data, unsigned compressed_len,
-                 void *uncompressed_data, unsigned uncompressed_len)
+/* Documented in wimlib.h */
+WIMLIBAPI int
+wimlib_xpress_decompress(const void *__compressed_data, unsigned compressed_len,
+                        void *uncompressed_data, unsigned uncompressed_len)
 {
        u8 lens[XPRESS_NUM_SYMBOLS];
        u16 decode_table[(1 << XPRESS_TABLEBITS) + 2 * XPRESS_NUM_SYMBOLS];
@@ -222,8 +227,10 @@ xpress_decompress(const void *__compressed_data, unsigned compressed_len,
         * code lengths of these symbols are given literally as 4-bit integers
         * in the first 256 bytes of the compressed data.
         */
-       if (compressed_len < XPRESS_NUM_SYMBOLS / 2)
+       if (compressed_len < XPRESS_NUM_SYMBOLS / 2) {
+               ERROR("xpress_decompress(): Compressed length too short!");
                return -1;
+       }
 
        for (i = 0; i < XPRESS_NUM_SYMBOLS / 2; i++) {
                *lens_p++ = compressed_data[i] & 0xf;
@@ -233,7 +240,7 @@ xpress_decompress(const void *__compressed_data, unsigned compressed_len,
        ret = make_huffman_decode_table(decode_table, XPRESS_NUM_SYMBOLS,
                                        XPRESS_TABLEBITS, lens,
                                        XPRESS_MAX_CODEWORD_LEN);
-       if (ret != 0)
+       if (ret)
                return ret;
 
        init_input_bitstream(&istream, compressed_data + XPRESS_NUM_SYMBOLS / 2,