stream_flags_common.c revision 207753
1178476Sjb/////////////////////////////////////////////////////////////////////////////// 2178476Sjb// 3178476Sjb/// \file stream_flags_common.c 4178476Sjb/// \brief Common stuff for Stream flags coders 5178476Sjb// 6178476Sjb// Author: Lasse Collin 7178476Sjb// 8178476Sjb// This file has been put into the public domain. 9178476Sjb// You can do whatever you want with this file. 10178476Sjb// 11178476Sjb/////////////////////////////////////////////////////////////////////////////// 12178476Sjb 13178476Sjb#include "stream_flags_common.h" 14178476Sjb 15178476Sjb 16178476Sjbconst uint8_t lzma_header_magic[6] = { 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00 }; 17178476Sjbconst uint8_t lzma_footer_magic[2] = { 0x59, 0x5A }; 18178476Sjb 19178476Sjb 20178476Sjbextern LZMA_API(lzma_ret) 21178476Sjblzma_stream_flags_compare( 22178476Sjb const lzma_stream_flags *a, const lzma_stream_flags *b) 23178476Sjb{ 24178476Sjb // We can compare only version 0 structures. 25178476Sjb if (a->version != 0 || b->version != 0) 26178476Sjb return LZMA_OPTIONS_ERROR; 27178476Sjb 28178476Sjb // Check type 29178476Sjb if ((unsigned int)(a->check) > LZMA_CHECK_ID_MAX 30178476Sjb || (unsigned int)(b->check) > LZMA_CHECK_ID_MAX) 31178476Sjb return LZMA_PROG_ERROR; 32178476Sjb 33178476Sjb if (a->check != b->check) 34178476Sjb return LZMA_DATA_ERROR; 35178476Sjb 36178476Sjb // Backward Sizes are compared only if they are known in both. 37178476Sjb if (a->backward_size != LZMA_VLI_UNKNOWN 38178476Sjb && b->backward_size != LZMA_VLI_UNKNOWN) { 39178476Sjb if (!is_backward_size_valid(a) || !is_backward_size_valid(b)) 40178476Sjb return LZMA_PROG_ERROR; 41178476Sjb 42178476Sjb if (a->backward_size != b->backward_size) 43178476Sjb return LZMA_DATA_ERROR; 44178476Sjb } 45178476Sjb 46178476Sjb return LZMA_OK; 47178476Sjb} 48178476Sjb