*
* This code was originally based on code written by Matthew T. Russotto
* (liblzxcomp).
- *
+ */
+
+/*
* Copyright (C) 2002 Matthew T. Russotto
* Copyright (C) 2012 Eric Biggers
*
- * wimlib - Library for working with WIM files
+ * This file is part of wimlib, a library for working with WIM files.
*
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option) any
- * later version.
+ * wimlib is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
*
- * This library is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * wimlib is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
*
- * You should have received a copy of the GNU Lesser General Public License along
- * with this library; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wimlib; if not, see http://www.gnu.org/licenses/.
*/
#include "lzx.h"
#include "comp.h"
-#include "huffman.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>
if (delta < 0)
delta += 17;
pretree_freqs[19]++;
- pretree_freqs[delta]++;
+ pretree_freqs[(unsigned char)delta]++;
output_syms[output_syms_idx++] = 19;
output_syms[output_syms_idx++] = additional_bits;
output_syms[output_syms_idx++] = delta;
if (delta < 0)
delta += 17;
- pretree_freqs[delta]++;
+ pretree_freqs[(unsigned char)delta]++;
output_syms[output_syms_idx++] = delta;
}
uint i;
int ret;
- LZX_DEBUG("uncompressed_len = %u\n", uncompressed_len);
+ LZX_DEBUG("uncompressed_len = %u", uncompressed_len);
if (uncompressed_len < 100)
return 1;
&queue, freq_tabs.main_freq_table,
&lzx_lz_params);
- LZX_DEBUG("using %u matches\n", num_matches);
-
+ LZX_DEBUG("using %u matches", num_matches);
lzx_make_huffman_codes(&freq_tabs, &codes);
compressed_len = ostream.bit_output - (u8*)compressed_data;
- LZX_DEBUG("Compressed %u => %u bytes\n",
- uncompressed_len, compressed_len);
+ LZX_DEBUG("Compressed %u => %u bytes",
+ uncompressed_len, compressed_len);
*compressed_len_ret = compressed_len;
#ifdef ENABLE_VERIFY_COMPRESSION
/* Verify that we really get the same thing back when decompressing. */
+ LZX_DEBUG("Verifying the compressed data.");
u8 buf[uncompressed_len];
ret = lzx_decompress(compressed_data, compressed_len, buf,
uncompressed_len);
if (ret != 0) {
- ERROR("ERROR: Failed to decompress data we compressed!\n");
- exit(0);
+ ERROR("lzx_compress(): Failed to decompress data we compressed");
abort();
}
for (i = 0; i < uncompressed_len; i++) {
if (buf[i] != *((u8*)__uncompressed_data + i)) {
- ERROR("Data we compressed didn't decompress to "
- "the original data (difference at byte %u of "
- "%u)\n", i + 1, uncompressed_len);
+ ERROR("lzx_compress(): Data we compressed didn't "
+ "decompress to the original data (difference at "
+ "byte %u of %u)", i + 1, uncompressed_len);
abort();
}
}
- LZX_DEBUG("Compression verified to be correct.\n");
+ LZX_DEBUG("Compression verified to be correct.");
#endif
return 0;