123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- * Definitions for handling the .xz file format
- *
- * Author: Lasse Collin <lasse.collin@tukaani.org>
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
- */
- #ifndef XZ_STREAM_H
- #define XZ_STREAM_H
- #if defined(__KERNEL__) && !XZ_INTERNAL_CRC32
- # include <linux/crc32.h>
- # undef crc32
- # define xz_crc32(buf, size, crc) \
- (~crc32_le(~(uint32_t)(crc), buf, size))
- #endif
- /*
- * See the .xz file format specification at
- * http://tukaani.org/xz/xz-file-format.txt
- * to understand the container format.
- */
- #define STREAM_HEADER_SIZE 12
- #define HEADER_MAGIC "\3757zXZ"
- #define HEADER_MAGIC_SIZE 6
- #define FOOTER_MAGIC "YZ"
- #define FOOTER_MAGIC_SIZE 2
- /*
- * Variable-length integer can hold a 63-bit unsigned integer or a special
- * value indicating that the value is unknown.
- *
- * Experimental: vli_type can be defined to uint32_t to save a few bytes
- * in code size (no effect on speed). Doing so limits the uncompressed and
- * compressed size of the file to less than 256 MiB and may also weaken
- * error detection slightly.
- */
- typedef uint64_t vli_type;
- #define VLI_MAX ((vli_type)-1 / 2)
- #define VLI_UNKNOWN ((vli_type)-1)
- /* Maximum encoded size of a VLI */
- #define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7)
- /* Integrity Check types */
- enum xz_check {
- XZ_CHECK_NONE = 0,
- XZ_CHECK_CRC32 = 1,
- XZ_CHECK_CRC64 = 4,
- XZ_CHECK_SHA256 = 10
- };
- /* Maximum possible Check ID */
- #define XZ_CHECK_MAX 15
- #endif
|