1 | /* |
2 | * Definitions for handling the .xz file format |
3 | * |
4 | * Author: Lasse Collin <lasse.collin@tukaani.org> |
5 | * |
6 | * This file has been put into the public domain. |
7 | * You can do whatever you want with this file. |
8 | */ |
9 | |
10 | #ifndef XZ_STREAM_H |
11 | #define XZ_STREAM_H |
12 | |
13 | #if defined(__KERNEL__) && !XZ_INTERNAL_CRC32 |
14 | # include <linux/crc32.h> |
15 | # undef crc32 |
16 | # define xz_crc32(buf, size, crc) \ |
17 | (~crc32_le(~(uint32_t)(crc), buf, size)) |
18 | #endif |
19 | |
20 | /* |
21 | * See the .xz file format specification at |
22 | * https://tukaani.org/xz/xz-file-format.txt |
23 | * to understand the container format. |
24 | */ |
25 | |
26 | #define 12 |
27 | |
28 | #define "\3757zXZ" |
29 | #define 6 |
30 | |
31 | #define "YZ" |
32 | #define 2 |
33 | |
34 | /* |
35 | * Variable-length integer can hold a 63-bit unsigned integer or a special |
36 | * value indicating that the value is unknown. |
37 | * |
38 | * Experimental: vli_type can be defined to uint32_t to save a few bytes |
39 | * in code size (no effect on speed). Doing so limits the uncompressed and |
40 | * compressed size of the file to less than 256 MiB and may also weaken |
41 | * error detection slightly. |
42 | */ |
43 | typedef uint64_t vli_type; |
44 | |
45 | #define VLI_MAX ((vli_type)-1 / 2) |
46 | #define VLI_UNKNOWN ((vli_type)-1) |
47 | |
48 | /* Maximum encoded size of a VLI */ |
49 | #define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7) |
50 | |
51 | /* Integrity Check types */ |
52 | enum xz_check { |
53 | XZ_CHECK_NONE = 0, |
54 | XZ_CHECK_CRC32 = 1, |
55 | XZ_CHECK_CRC64 = 4, |
56 | XZ_CHECK_SHA256 = 10 |
57 | }; |
58 | |
59 | /* Maximum possible Check ID */ |
60 | #define XZ_CHECK_MAX 15 |
61 | |
62 | #endif |
63 | |