libclamav/lzma_iface.h
60cd49c9
 /*
c442ca9c
  *  Copyright (C) 2013-2019 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
  *  Copyright (C) 2007-2013 Sourcefire, Inc.
2023340a
  *
  *  Authors: Alberto Wu
6289eda8
  * 
  *  Acknowledgements: This contains an implementation of the LZMA algorithm 
  *                    from Igor Pavlov (see COPYING.lzma).
f377e052
  *
60cd49c9
  *  This program is free software; you can redistribute it and/or modify
632be7ba
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
60cd49c9
  *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
  */
 
f377e052
 /* a cleaner state interface to LZMA */
 
 #ifndef __LZMA_IFACE_H
 #define __LZMA_IFACE_H
60cd49c9
 
87787e76
 #include "7z/LzmaDec.h"
95b2d68c
 #include "clamav-types.h"
87787e76
 #include "others.h"
 
 struct CLI_LZMA {
     CLzmaDec state;
     unsigned char header[LZMA_PROPS_SIZE];
     unsigned int p_cnt;
     unsigned int s_cnt;
     unsigned int freeme;
     unsigned int init;
     uint64_t usize;
     unsigned char *next_in;
     unsigned char *next_out;
     SizeT avail_in;
     SizeT avail_out;
 };
60cd49c9
 
ab0650b6
 
 struct stream_state {
87787e76
     uint32_t avail_in;
     unsigned char *next_in;
     uint32_t avail_out;
     unsigned char *next_out;
ab0650b6
 };
f377e052
 
87787e76
 int cli_LzmaInit(struct CLI_LZMA *, uint64_t);
 void cli_LzmaShutdown(struct CLI_LZMA *);
 int cli_LzmaDecode(struct CLI_LZMA *);
60cd49c9
 
81fded11
 void *__lzma_wrap_alloc(void *unused, size_t size);
 void __lzma_wrap_free(void *unused, void *freeme);
 
f377e052
 #define LZMA_STREAM_END 2
ab0650b6
 #define LZMA_RESULT_OK 0
 #define LZMA_RESULT_DATA_ERROR 1
f377e052
 #endif /* __LZMA_IFACE_H */