diff options
Diffstat (limited to 'lib/xz/xz_stream.h')
-rw-r--r-- | lib/xz/xz_stream.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/xz/xz_stream.h b/lib/xz/xz_stream.h new file mode 100644 index 000000000000..66cb5a7055ec --- /dev/null +++ b/lib/xz/xz_stream.h | |||
@@ -0,0 +1,62 @@ | |||
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 | * http://tukaani.org/xz/xz-file-format.txt | ||
23 | * to understand the container format. | ||
24 | */ | ||
25 | |||
26 | #define STREAM_HEADER_SIZE 12 | ||
27 | |||
28 | #define HEADER_MAGIC "\3757zXZ" | ||
29 | #define HEADER_MAGIC_SIZE 6 | ||
30 | |||
31 | #define FOOTER_MAGIC "YZ" | ||
32 | #define FOOTER_MAGIC_SIZE 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 | ||