root/src/liblzma/common/stream_flags_common.c

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

DEFINITIONS

This source file includes following definitions.
  1. LZMA_API

///////////////////////////////////////////////////////////////////////////////
//
/// \file       stream_flags_common.c
/// \brief      Common stuff for Stream flags coders
//
//  Author:     Lasse Collin
//
//  This file has been put into the public domain.
//  You can do whatever you want with this file.
//
///////////////////////////////////////////////////////////////////////////////

#include "stream_flags_common.h"


const uint8_t lzma_header_magic[6] = { 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00 };
const uint8_t lzma_footer_magic[2] = { 0x59, 0x5A };


extern LZMA_API(lzma_ret)
lzma_stream_flags_compare(
                const lzma_stream_flags *a, const lzma_stream_flags *b)
{
        // We can compare only version 0 structures.
        if (a->version != 0 || b->version != 0)
                return LZMA_OPTIONS_ERROR;

        // Check type
        if ((unsigned int)(a->check) > LZMA_CHECK_ID_MAX
                        || (unsigned int)(b->check) > LZMA_CHECK_ID_MAX)
                return LZMA_PROG_ERROR;

        if (a->check != b->check)
                return LZMA_DATA_ERROR;

        // Backward Sizes are compared only if they are known in both.
        if (a->backward_size != LZMA_VLI_UNKNOWN
                        && b->backward_size != LZMA_VLI_UNKNOWN) {
                if (!is_backward_size_valid(a) || !is_backward_size_valid(b))
                        return LZMA_PROG_ERROR;

                if (a->backward_size != b->backward_size)
                        return LZMA_DATA_ERROR;
        }

        return LZMA_OK;
}

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