1207753Smm///////////////////////////////////////////////////////////////////////////////
2207753Smm//
3207753Smm/// \file       stream_flags_common.c
4207753Smm/// \brief      Common stuff for Stream flags coders
5207753Smm//
6207753Smm//  Author:     Lasse Collin
7207753Smm//
8207753Smm//  This file has been put into the public domain.
9207753Smm//  You can do whatever you want with this file.
10207753Smm//
11207753Smm///////////////////////////////////////////////////////////////////////////////
12207753Smm
13207753Smm#include "stream_flags_common.h"
14207753Smm
15207753Smm
16207753Smmconst uint8_t lzma_header_magic[6] = { 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00 };
17207753Smmconst uint8_t lzma_footer_magic[2] = { 0x59, 0x5A };
18207753Smm
19207753Smm
20207753Smmextern LZMA_API(lzma_ret)
21207753Smmlzma_stream_flags_compare(
22207753Smm		const lzma_stream_flags *a, const lzma_stream_flags *b)
23207753Smm{
24207753Smm	// We can compare only version 0 structures.
25207753Smm	if (a->version != 0 || b->version != 0)
26207753Smm		return LZMA_OPTIONS_ERROR;
27207753Smm
28207753Smm	// Check type
29207753Smm	if ((unsigned int)(a->check) > LZMA_CHECK_ID_MAX
30207753Smm			|| (unsigned int)(b->check) > LZMA_CHECK_ID_MAX)
31207753Smm		return LZMA_PROG_ERROR;
32207753Smm
33207753Smm	if (a->check != b->check)
34207753Smm		return LZMA_DATA_ERROR;
35207753Smm
36207753Smm	// Backward Sizes are compared only if they are known in both.
37207753Smm	if (a->backward_size != LZMA_VLI_UNKNOWN
38207753Smm			&& b->backward_size != LZMA_VLI_UNKNOWN) {
39207753Smm		if (!is_backward_size_valid(a) || !is_backward_size_valid(b))
40207753Smm			return LZMA_PROG_ERROR;
41207753Smm
42207753Smm		if (a->backward_size != b->backward_size)
43207753Smm			return LZMA_DATA_ERROR;
44207753Smm	}
45207753Smm
46207753Smm	return LZMA_OK;
47207753Smm}
48