2N/A/* xz_stream.h - Definitions for handling the .xz file format */
2N/A/*
2N/A * GRUB -- GRand Unified Bootloader
2N/A * Copyright (C) 2010 Free Software Foundation, Inc.
2N/A *
2N/A * GRUB is free software: you can redistribute it and/or modify
2N/A * it under the terms of the GNU General Public License as published by
2N/A * the Free Software Foundation, either version 3 of the License, or
2N/A * (at your option) any later version.
2N/A *
2N/A * GRUB is distributed in the hope that it will be useful,
2N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of
2N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2N/A * GNU General Public License for more details.
2N/A *
2N/A * You should have received a copy of the GNU General Public License
2N/A * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
2N/A */
2N/A/*
2N/A * This file is based on code from XZ embedded project
2N/A * http://tukaani.org/xz/embedded.html
2N/A */
2N/A
2N/A#ifndef XZ_STREAM_H
2N/A#define XZ_STREAM_H
2N/A
2N/A/*
2N/A * See the .xz file format specification at
2N/A * http://tukaani.org/xz/xz-file-format.txt
2N/A * to understand the container format.
2N/A */
2N/A
2N/A#define STREAM_HEADER_SIZE 12
2N/A
2N/A#define HEADER_MAGIC "\3757zXZ\0"
2N/A#define HEADER_MAGIC_SIZE 6
2N/A
2N/A#define FOOTER_MAGIC "YZ"
2N/A#define FOOTER_MAGIC_SIZE 2
2N/A
2N/A/*
2N/A * Variable-length integer can hold a 63-bit unsigned integer, or a special
2N/A * value to indicate that the value is unknown.
2N/A */
2N/Atypedef uint64_t vli_type;
2N/A
2N/A#define VLI_MAX ((vli_type)-1 / 2)
2N/A#define VLI_UNKNOWN ((vli_type)-1)
2N/A
2N/A/* Maximum encoded size of a VLI */
2N/A#define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7)
2N/A
2N/A#endif