186d7f5d3SJohn Marino /////////////////////////////////////////////////////////////////////////////// 286d7f5d3SJohn Marino // 386d7f5d3SJohn Marino /// \file stream_flags_common.c 486d7f5d3SJohn Marino /// \brief Common stuff for Stream flags coders 586d7f5d3SJohn Marino // 686d7f5d3SJohn Marino // Author: Lasse Collin 786d7f5d3SJohn Marino // 886d7f5d3SJohn Marino // This file has been put into the public domain. 986d7f5d3SJohn Marino // You can do whatever you want with this file. 1086d7f5d3SJohn Marino // 1186d7f5d3SJohn Marino /////////////////////////////////////////////////////////////////////////////// 1286d7f5d3SJohn Marino 1386d7f5d3SJohn Marino #include "stream_flags_common.h" 1486d7f5d3SJohn Marino 1586d7f5d3SJohn Marino 1686d7f5d3SJohn Marino const uint8_t lzma_header_magic[6] = { 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00 }; 1786d7f5d3SJohn Marino const uint8_t lzma_footer_magic[2] = { 0x59, 0x5A }; 1886d7f5d3SJohn Marino 1986d7f5d3SJohn Marino 2086d7f5d3SJohn Marino extern LZMA_API(lzma_ret) lzma_stream_flags_compare(const lzma_stream_flags * a,const lzma_stream_flags * b)2186d7f5d3SJohn Marinolzma_stream_flags_compare( 2286d7f5d3SJohn Marino const lzma_stream_flags *a, const lzma_stream_flags *b) 2386d7f5d3SJohn Marino { 2486d7f5d3SJohn Marino // We can compare only version 0 structures. 2586d7f5d3SJohn Marino if (a->version != 0 || b->version != 0) 2686d7f5d3SJohn Marino return LZMA_OPTIONS_ERROR; 2786d7f5d3SJohn Marino 2886d7f5d3SJohn Marino // Check type 2986d7f5d3SJohn Marino if ((unsigned int)(a->check) > LZMA_CHECK_ID_MAX 3086d7f5d3SJohn Marino || (unsigned int)(b->check) > LZMA_CHECK_ID_MAX) 3186d7f5d3SJohn Marino return LZMA_PROG_ERROR; 3286d7f5d3SJohn Marino 3386d7f5d3SJohn Marino if (a->check != b->check) 3486d7f5d3SJohn Marino return LZMA_DATA_ERROR; 3586d7f5d3SJohn Marino 3686d7f5d3SJohn Marino // Backward Sizes are compared only if they are known in both. 3786d7f5d3SJohn Marino if (a->backward_size != LZMA_VLI_UNKNOWN 3886d7f5d3SJohn Marino && b->backward_size != LZMA_VLI_UNKNOWN) { 3986d7f5d3SJohn Marino if (!is_backward_size_valid(a) || !is_backward_size_valid(b)) 4086d7f5d3SJohn Marino return LZMA_PROG_ERROR; 4186d7f5d3SJohn Marino 4286d7f5d3SJohn Marino if (a->backward_size != b->backward_size) 4386d7f5d3SJohn Marino return LZMA_DATA_ERROR; 4486d7f5d3SJohn Marino } 4586d7f5d3SJohn Marino 4686d7f5d3SJohn Marino return LZMA_OK; 4786d7f5d3SJohn Marino } 48