diff options
author | mm <mm@FreeBSD.org> | 2010-05-10 06:59:50 +0000 |
---|---|---|
committer | mm <mm@FreeBSD.org> | 2010-05-10 06:59:50 +0000 |
commit | 5c358d45429b654efa9c8177ecd370a7965ec1a7 (patch) | |
tree | d2d916954c6a66a3168ee356b5f24da01c2017d6 /contrib/xz/src/liblzma/common/filter_flags_encoder.c | |
parent | 3e09decd1986826f54af1a47be97bb87c1220783 (diff) | |
parent | 1008b7c6744a190c5b15aaf8cab1054671e4c7c3 (diff) | |
download | FreeBSD-src-5c358d45429b654efa9c8177ecd370a7965ec1a7.zip FreeBSD-src-5c358d45429b654efa9c8177ecd370a7965ec1a7.tar.gz |
Import of liblzma, xz, xzdec, lzmainfo from vendor branch
Add support for xz and lzma to lesspipe.sh (xzless, lzless)
Bump __FreeBSD_version
Approved by: delphij (mentor)
MFC after: 2 weeks
Diffstat (limited to 'contrib/xz/src/liblzma/common/filter_flags_encoder.c')
-rw-r--r-- | contrib/xz/src/liblzma/common/filter_flags_encoder.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/contrib/xz/src/liblzma/common/filter_flags_encoder.c b/contrib/xz/src/liblzma/common/filter_flags_encoder.c new file mode 100644 index 0000000..d110566 --- /dev/null +++ b/contrib/xz/src/liblzma/common/filter_flags_encoder.c @@ -0,0 +1,56 @@ +/////////////////////////////////////////////////////////////////////////////// +// +/// \file filter_flags_encoder.c +/// \brief Decodes a Filter Flags field +// +// Author: Lasse Collin +// +// This file has been put into the public domain. +// You can do whatever you want with this file. +// +/////////////////////////////////////////////////////////////////////////////// + +#include "filter_encoder.h" + + +extern LZMA_API(lzma_ret) +lzma_filter_flags_size(uint32_t *size, const lzma_filter *filter) +{ + if (filter->id >= LZMA_FILTER_RESERVED_START) + return LZMA_PROG_ERROR; + + return_if_error(lzma_properties_size(size, filter)); + + *size += lzma_vli_size(filter->id) + lzma_vli_size(*size); + + return LZMA_OK; +} + + +extern LZMA_API(lzma_ret) +lzma_filter_flags_encode(const lzma_filter *filter, + uint8_t *out, size_t *out_pos, size_t out_size) +{ + // Filter ID + if (filter->id >= LZMA_FILTER_RESERVED_START) + return LZMA_PROG_ERROR; + + return_if_error(lzma_vli_encode(filter->id, NULL, + out, out_pos, out_size)); + + // Size of Properties + uint32_t props_size; + return_if_error(lzma_properties_size(&props_size, filter)); + return_if_error(lzma_vli_encode(props_size, NULL, + out, out_pos, out_size)); + + // Filter Properties + if (out_size - *out_pos < props_size) + return LZMA_PROG_ERROR; + + return_if_error(lzma_properties_encode(filter, out + *out_pos)); + + *out_pos += props_size; + + return LZMA_OK; +} |