Files
TCPlayerbotCore/dep/libmpq/libmpq/explode.h
T
click 6a9357b13d Move contrib/libmpq into dep as an external dependency + remove extra libmpq-source found in map-extractor
--HG--
branch : trunk
rename : contrib/libmpq/AUTHORS => dep/libmpq/AUTHORS
rename : contrib/libmpq/COPYING => dep/libmpq/COPYING
rename : contrib/libmpq/FAQ => dep/libmpq/FAQ
rename : contrib/libmpq/Makefile.am => dep/libmpq/Makefile.am
rename : contrib/libmpq/NEWS => dep/libmpq/NEWS
rename : contrib/libmpq/README => dep/libmpq/README
rename : contrib/libmpq/THANKS => dep/libmpq/THANKS
rename : contrib/libmpq/TODO => dep/libmpq/TODO
rename : contrib/libmpq/autogen.sh => dep/libmpq/autogen.sh
rename : contrib/libmpq/bindings/Makefile.am => dep/libmpq/bindings/Makefile.am
rename : contrib/libmpq/bindings/d/Makefile.am => dep/libmpq/bindings/d/Makefile.am
rename : contrib/libmpq/bindings/d/dsss.conf => dep/libmpq/bindings/d/dsss.conf
rename : contrib/libmpq/bindings/d/mpq.d => dep/libmpq/bindings/d/mpq.d
rename : contrib/libmpq/bindings/python/Makefile.am => dep/libmpq/bindings/python/Makefile.am
rename : contrib/libmpq/bindings/python/mpq-info => dep/libmpq/bindings/python/mpq-info
rename : contrib/libmpq/bindings/python/mpq.py => dep/libmpq/bindings/python/mpq.py
rename : contrib/libmpq/configure.ac => dep/libmpq/configure.ac
rename : contrib/libmpq/debian/changelog => dep/libmpq/debian/changelog
rename : contrib/libmpq/debian/compat => dep/libmpq/debian/compat
rename : contrib/libmpq/debian/control => dep/libmpq/debian/control
rename : contrib/libmpq/debian/copyright => dep/libmpq/debian/copyright
rename : contrib/libmpq/debian/libmpq-dev.dirs => dep/libmpq/debian/libmpq-dev.dirs
rename : contrib/libmpq/debian/libmpq-dev.install => dep/libmpq/debian/libmpq-dev.install
rename : contrib/libmpq/debian/libmpq0.dirs => dep/libmpq/debian/libmpq0.dirs
rename : contrib/libmpq/debian/libmpq0.docs => dep/libmpq/debian/libmpq0.docs
rename : contrib/libmpq/debian/libmpq0.install => dep/libmpq/debian/libmpq0.install
rename : contrib/libmpq/debian/python-mpq.install => dep/libmpq/debian/python-mpq.install
rename : contrib/libmpq/debian/rules => dep/libmpq/debian/rules
rename : contrib/libmpq/doc/Makefile.am => dep/libmpq/doc/Makefile.am
rename : contrib/libmpq/doc/man1/Makefile.am => dep/libmpq/doc/man1/Makefile.am
rename : contrib/libmpq/doc/man1/libmpq-config.1 => dep/libmpq/doc/man1/libmpq-config.1
rename : contrib/libmpq/doc/man3/Makefile.am => dep/libmpq/doc/man3/Makefile.am
rename : contrib/libmpq/doc/man3/libmpq.3 => dep/libmpq/doc/man3/libmpq.3
rename : contrib/libmpq/doc/man3/libmpq__archive_close.3 => dep/libmpq/doc/man3/libmpq__archive_close.3
rename : contrib/libmpq/doc/man3/libmpq__archive_files.3 => dep/libmpq/doc/man3/libmpq__archive_files.3
rename : contrib/libmpq/doc/man3/libmpq__archive_offset.3 => dep/libmpq/doc/man3/libmpq__archive_offset.3
rename : contrib/libmpq/doc/man3/libmpq__archive_open.3 => dep/libmpq/doc/man3/libmpq__archive_open.3
rename : contrib/libmpq/doc/man3/libmpq__archive_packed_size.3 => dep/libmpq/doc/man3/libmpq__archive_packed_size.3
rename : contrib/libmpq/doc/man3/libmpq__archive_unpacked_size.3 => dep/libmpq/doc/man3/libmpq__archive_unpacked_size.3
rename : contrib/libmpq/doc/man3/libmpq__archive_version.3 => dep/libmpq/doc/man3/libmpq__archive_version.3
rename : contrib/libmpq/doc/man3/libmpq__block_close_offset.3 => dep/libmpq/doc/man3/libmpq__block_close_offset.3
rename : contrib/libmpq/doc/man3/libmpq__block_open_offset.3 => dep/libmpq/doc/man3/libmpq__block_open_offset.3
rename : contrib/libmpq/doc/man3/libmpq__block_read.3 => dep/libmpq/doc/man3/libmpq__block_read.3
rename : contrib/libmpq/doc/man3/libmpq__block_unpacked_size.3 => dep/libmpq/doc/man3/libmpq__block_unpacked_size.3
rename : contrib/libmpq/doc/man3/libmpq__file_blocks.3 => dep/libmpq/doc/man3/libmpq__file_blocks.3
rename : contrib/libmpq/doc/man3/libmpq__file_compressed.3 => dep/libmpq/doc/man3/libmpq__file_compressed.3
rename : contrib/libmpq/doc/man3/libmpq__file_encrypted.3 => dep/libmpq/doc/man3/libmpq__file_encrypted.3
rename : contrib/libmpq/doc/man3/libmpq__file_imploded.3 => dep/libmpq/doc/man3/libmpq__file_imploded.3
rename : contrib/libmpq/doc/man3/libmpq__file_number.3 => dep/libmpq/doc/man3/libmpq__file_number.3
rename : contrib/libmpq/doc/man3/libmpq__file_offset.3 => dep/libmpq/doc/man3/libmpq__file_offset.3
rename : contrib/libmpq/doc/man3/libmpq__file_packed_size.3 => dep/libmpq/doc/man3/libmpq__file_packed_size.3
rename : contrib/libmpq/doc/man3/libmpq__file_read.3 => dep/libmpq/doc/man3/libmpq__file_read.3
rename : contrib/libmpq/doc/man3/libmpq__file_unpacked_size.3 => dep/libmpq/doc/man3/libmpq__file_unpacked_size.3
rename : contrib/libmpq/doc/man3/libmpq__version.3 => dep/libmpq/doc/man3/libmpq__version.3
rename : contrib/libmpq/libmpq-config.in => dep/libmpq/libmpq-config.in
rename : contrib/libmpq/libmpq.pc.in => dep/libmpq/libmpq.pc.in
rename : contrib/libmpq/libmpq/Makefile.am => dep/libmpq/libmpq/Makefile.am
rename : contrib/libmpq/libmpq/common.c => dep/libmpq/libmpq/common.c
rename : contrib/libmpq/libmpq/common.h => dep/libmpq/libmpq/common.h
rename : contrib/libmpq/libmpq/crypt_buf.h => dep/libmpq/libmpq/crypt_buf.h
rename : contrib/libmpq/libmpq/explode.c => dep/libmpq/libmpq/explode.c
rename : contrib/libmpq/libmpq/explode.h => dep/libmpq/libmpq/explode.h
rename : contrib/libmpq/libmpq/extract.c => dep/libmpq/libmpq/extract.c
rename : contrib/libmpq/libmpq/extract.h => dep/libmpq/libmpq/extract.h
rename : contrib/libmpq/libmpq/huffman.c => dep/libmpq/libmpq/huffman.c
rename : contrib/libmpq/libmpq/huffman.h => dep/libmpq/libmpq/huffman.h
rename : contrib/libmpq/libmpq/mpq-internal.h => dep/libmpq/libmpq/mpq-internal.h
rename : contrib/libmpq/libmpq/mpq.c => dep/libmpq/libmpq/mpq.c
rename : contrib/libmpq/libmpq/mpq.h => dep/libmpq/libmpq/mpq.h
rename : contrib/libmpq/libmpq/wave.c => dep/libmpq/libmpq/wave.c
rename : contrib/libmpq/libmpq/wave.h => dep/libmpq/libmpq/wave.h
rename : contrib/libmpq/tools/Makefile.am => dep/libmpq/tools/Makefile.am
rename : contrib/libmpq/tools/crypt_buf_gen.c => dep/libmpq/tools/crypt_buf_gen.c
rename : contrib/libmpq/win/VS100/libmpq.vcxproj => dep/libmpq/win/VS100/libmpq.vcxproj
rename : contrib/libmpq/win/config.h => dep/libmpq/win/config.h
rename : contrib/libmpq/win/libmpq_VC90.sln => dep/libmpq/win/libmpq_VC90.sln
rename : contrib/libmpq/win/stdint.h => dep/libmpq/win/stdint.h
2010-06-05 23:00:30 +02:00

95 lines
3.9 KiB
C

/*
* explode.h -- header file for pkware data decompression library
* used by mpq-tools.
*
* Copyright (c) 2003-2008 Maik Broemme <[email protected]>
*
* This source was adepted from the C++ version of pklib.h included
* in stormlib. The C++ version belongs to the following authors:
*
* Ladislav Zezula <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _EXPLODE_H
#define _EXPLODE_H
/* define compression constants and return values. */
#define LIBMPQ_PKZIP_CMP_BINARY 0 /* binary compression. */
#define LIBMPQ_PKZIP_CMP_ASCII 1 /* ascii compression. */
#define LIBMPQ_PKZIP_CMP_NO_ERROR 0
#define LIBMPQ_PKZIP_CMP_INV_DICTSIZE 1
#define LIBMPQ_PKZIP_CMP_INV_MODE 2
#define LIBMPQ_PKZIP_CMP_BAD_DATA 3
#define LIBMPQ_PKZIP_CMP_ABORT 4
#ifdef _MSC_VER
#pragma pack(push,1)
#endif
/* compression structure. */
typedef struct {
uint32_t offs0000; /* 0000 - start. */
uint32_t cmp_type; /* 0004 - compression type (binary or ascii). */
uint32_t out_pos; /* 0008 - position in output buffer. */
uint32_t dsize_bits; /* 000C - dict size (4, 5, 6 for 0x400, 0x800, 0x1000). */
uint32_t dsize_mask; /* 0010 - dict size bitmask (0x0F, 0x1F, 0x3F for 0x400, 0x800, 0x1000). */
uint32_t bit_buf; /* 0014 - 16-bit buffer for processing input data. */
uint32_t extra_bits; /* 0018 - number of extra (above 8) bits in bit buffer. */
uint32_t in_pos; /* 001C - position in in_buf. */
uint32_t in_bytes; /* 0020 - number of bytes in input buffer. */
void *param; /* 0024 - custom parameter. */
uint32_t (*read_buf)(char *buf, uint32_t *size, void *param); /* 0028 offset.*/
void (*write_buf)(char *buf, uint32_t *size, void *param); /* 002C offset. */
uint8_t out_buf[0x2000]; /* 0030 - output circle buffer, starting position is 0x1000. */
uint8_t offs_2030[0x204]; /* 2030 - whats that? */
uint8_t in_buf[0x800]; /* 2234 - buffer for data to be decompressed. */
uint8_t pos1[0x100]; /* 2A34 - positions in buffers. */
uint8_t pos2[0x100]; /* 2B34 - positions in buffers. */
uint8_t offs_2c34[0x100]; /* 2C34 - buffer. */
uint8_t offs_2d34[0x100]; /* 2D34 - buffer. */
uint8_t offs_2e34[0x80]; /* 2EB4 - buffer. */
uint8_t offs_2eb4[0x100]; /* 2EB4 - buffer. */
uint8_t bits_asc[0x100]; /* 2FB4 - buffer. */
uint8_t dist_bits[0x40]; /* 30B4 - numbers of bytes to skip copied block length. */
uint8_t slen_bits[0x10]; /* 30F4 - numbers of bits for skip copied block length. */
uint8_t clen_bits[0x10]; /* 3104 - number of valid bits for copied block. */
uint16_t len_base[0x10]; /* 3114 - buffer. */
#ifdef _MSC_VER
} pkzip_cmp_s;
#pragma pack(pop)
#else
} __attribute__ ((packed)) pkzip_cmp_s;
#endif
/* data structure. */
typedef struct {
uint8_t *in_buf; /* pointer to input data buffer. */
uint32_t in_pos; /* current offset in input data buffer. */
int32_t in_bytes; /* number of bytes in the input buffer. */
uint8_t *out_buf; /* pointer to output data buffer. */
uint32_t out_pos; /* position in the output buffer. */
int32_t max_out; /* maximum number of bytes in the output buffer. */
} pkzip_data_s;
/* decompress the stream using pkzip compression. */
uint32_t libmpq__do_decompress_pkzip(
uint8_t *work_buf,
void *param
);
#endif /* _EXPLODE_H */