63 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * 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
 |