1 ///////////////////////////////////////////////////////////////////////////////
3 /// \file stream_flags_common.c
4 /// \brief Common stuff for Stream flags coders
6 // Author: Lasse Collin
8 // This file has been put into the public domain.
9 // You can do whatever you want with this file.
11 ///////////////////////////////////////////////////////////////////////////////
13 #include "stream_flags_common.h"
16 const uint8_t lzma_header_magic
[6] = { 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00 };
17 const uint8_t lzma_footer_magic
[2] = { 0x59, 0x5A };
20 extern LZMA_API(lzma_ret
)
21 lzma_stream_flags_compare(
22 const lzma_stream_flags
*a
, const lzma_stream_flags
*b
)
24 // We can compare only version 0 structures.
25 if (a
->version
!= 0 || b
->version
!= 0)
26 return LZMA_OPTIONS_ERROR
;
29 if ((unsigned int)(a
->check
) > LZMA_CHECK_ID_MAX
30 || (unsigned int)(b
->check
) > LZMA_CHECK_ID_MAX
)
31 return LZMA_PROG_ERROR
;
33 if (a
->check
!= b
->check
)
34 return LZMA_DATA_ERROR
;
36 // Backward Sizes are compared only if they are known in both.
37 if (a
->backward_size
!= LZMA_VLI_UNKNOWN
38 && b
->backward_size
!= LZMA_VLI_UNKNOWN
) {
39 if (!is_backward_size_valid(a
) || !is_backward_size_valid(b
))
40 return LZMA_PROG_ERROR
;
42 if (a
->backward_size
!= b
->backward_size
)
43 return LZMA_DATA_ERROR
;