Skip to content

v0.4.0

Choose a tag to compare

@mbroemme mbroemme released this 07 Aug 16:02
· 487 commits to master since this release

Highlights

  • Completed the final mpq-tools release containing the bundled libmpq library before the library and utilities were split into separate packages.
  • Added robust error handling throughout both the library and extraction utility, including read, seek, open, close, decompression, and disk-write failures.
  • Added complete public API documentation and manual pages for library functions.
  • Added libmpq-config and pkg-config metadata to simplify integration with external applications.
  • Added C++-compatible public headers and moved internal definitions and implementation details into private headers.
  • Added 64-bit architecture support and removed pointer-to-integer arithmetic that caused failures on x86_64 systems.
  • Added full extraction support for Blizzard MPQ archives through Warcraft III: The Frozen Throne.
  • Added support for single-sector files, stored files that are neither compressed nor imploded, and files whose stored size is larger than their unpacked size.
  • Added handling for archives containing arbitrary data before the real MPQ header.
  • Improved compatibility with Warcraft III map protectors that modify or invalidate header fields.
  • Added block-level APIs for decrypting, decompressing, exploding, copying, and inspecting archived data.
  • Improved encrypted and compressed block-offset-table handling and file lookup performance for archives containing many files.
  • Added extensive stability and memory-management fixes across archive opening, extraction, decompression, and file-list handling.
  • Removed the external listfile database functionality introduced in v0.3.0 and simplified the associated interfaces.
  • Made zlib a required dependency for archive decompression.

Commits

  • 3e862d6 - Update files
  • 468c4a9 - Add file
  • 512b79f - Warn that this is the final mpq-tools release containing the library
  • bb640da - Update documentation
  • e9aa39c - Refine error handling and copied-block detection in decompression
  • bcbc306 - Add full API documentation, pkg-config metadata, and libmpq-config
  • bd378bd - Update file
  • fca7bf8 - Add new error codes and stabilize error handling
  • fecb19f - Add C++ header compatibility
  • e5623d5 - Update files
  • 054f9b6 - Add cleanup paths to archive and file opening
  • cff4eed - Add new version for the stable libmpq API
  • c3aa50d - Add seek error handling and identify files stored as plain copies
  • 7ea3c15 - Move private definitions to internal headers and simplify error codes
  • a076623 - Handle invalid header sizes produced by Warcraft III map protectors
  • 865f415 - Remove redundant already-opened file check
  • c91a734 - Add file lifecycle and block-level processing APIs
  • 83ff825 - Validate compressed input and fix memory cleanup
  • dd6dfc8 - Add libmpq__memory_copy() for uncompressed files
  • 2439f59 - Handle files whose packed size exceeds their unpacked size
  • 68fddf2 - Improve encrypted and compressed block-offset-table handling
  • 5c87d4f - Add memory decrypt, decompress, and explode APIs and leading-data support
  • 128de8e - Support archives containing data before the MPQ header
  • 6371ea2 - Rework decompression internals and rename metadata selectors
  • c0f9f2a - Free compressed offset tables only when allocated
  • 8fedfad - Restore previous block-count implementation
  • 0447316 - Validate block offsets earlier and restore working block counting
  • c348b51 - Preserve input buffers during decompression
  • 358e047 - Add archive version reporting and simplify file structures
  • bc5d545 - Fix memory cleanup and include internal definitions
  • 99b21eb - Mark mpq-internal.h as a private header
  • 98245df - Move internal definitions into the private header
  • 1e47dc3 - Rename file-read helpers to decompression helpers and revise their interfaces
  • b1b70fb - Rename archive block-count constant to file block-count
  • a408595 - Add file block-count metadata
  • 4a1592e - Add buffer parameters to the single-sector reader
  • 16e2f04 - Add memory decompression support for archived files
  • fe518c0 - Replace multiple file-reading functions with a tighter block reader
  • 4cb8136 - Add new multi-block extraction implementation
  • df256fe - Add disk-write error handling
  • 3802a4a - Add single-sector extraction support and improve file error handling
  • 4304b91 - Add decompression error handling and transferred-size reporting
  • 4ae4494 - Fix typo in comment
  • e8b14a5 - Add libmpq__file_open() and libmpq__file_close()
  • f51c363 - Improve file-list creation using heap sort and fix memory cleanup
  • 6758c8e - Clean up headers
  • 611123d - Fix memory cleanup and extend error handling
  • f098f3c - Validate file offsets and packed sizes while creating the file list
  • a699979 - Add variable block-offset loading and decryption
  • b21e005 - Rename definitions and structure members for clarity
  • 3aefad9 - Check file existence while creating the file list
  • 975e8d4 - Move Huffman internals into huffman.h
  • 3f0d251 - Improve packed and unpacked archive size calculations
  • f9809c0 - Complete variable renaming
  • fd8370c - Clean up MPQ file structures
  • 35b8dab - Map hash-table entries to the file list for faster extraction
  • b2f5ef0 - Remove unnecessary file handles and improve seed-decryption errors
  • 1a38c29 - Rename variables and begin error-handling overhaul
  • a5f0116 - Fix GCC warning
  • dc871fa - Fix segmentation faults
  • 61a70d7 - Add full extraction support through Warcraft III: The Frozen Throne
  • 8069b66 - Fix typo in comment
  • d04b483 - Add libmpq__read_file_list() for applying file lists to archives
  • a9380fb - Fix extraction of zlib-compressed files
  • 30ed540 - Avoid crashes while opening MPQ version 2 archives
  • f3d9a34 - Fix mixed compressed and stored file handling
  • fb6d244 - Fix archive-close crash on invalid MPQ files
  • 60d8f37 - Fix typo
  • 46c9ac0 - Use signed file-handling types to avoid redundant casts
  • 9c0fc43 - Replace strndup() and fix insufficient allocation on x86
  • e614159 - Fix GCC compiler warnings
  • c702d25 - Improve stability and memory usage on x86 and x86_64
  • ec72c86 - Update private headers
  • 7874882 - Move private declarations out of mpq.h
  • 2b8d099 - Correct Huffman function return types and data types
  • 1a36b02 - Restore function-definition header
  • 56f99da - Add x86_64 cleanup and stability fixes
  • c1202e3 - Make the codebase x86_64 ready
  • e88fc6b - Fix -v crash and update for the revised libmpq interface
  • 2e3e377 - Remove listfile parser and obsolete include
  • 0e49967 - Remove obsolete listfile database support and revise return values
  • 8e50d63 - Make zlib support mandatory
  • 32c9c43 - Remove listfile functions and update headers
  • 2c6bbc9 - Rename functions and definitions to more generic interfaces
  • a3f3d25 - Fix x86_64 segmentation fault
  • 95b5751 - Remove obsolete listfile database support
  • 1587779 - Require zlib and remove obsolete subdirectories
  • 2bf0b42 - Add libtoolize for automake compatibility

Contributors