root/lib/xz/xz_stream.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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

/* [<][>][^][v][top][bottom][index][help] */