use std::os::raw::c_void;
use std::mem;
#[repr(C)]
pub struct lzma_stream {
pub next_in: *const u8,
pub avail_in: usize,
pub total_in: u64,
pub next_out: *mut u8,
pub avail_out: usize,
pub total_out: u64,
pub allocator: *const lzma_allocator,
pub internal: *mut c_void,
pub reserved_ptr1: *mut c_void,
pub reserved_ptr2: *mut c_void,
pub reserved_ptr3: *mut c_void,
pub reserved_ptr4: *mut c_void,
pub reserved_int1: u64,
pub reserved_int2: u64,
pub reserved_int3: usize,
pub reserved_int4: usize,
pub reserved_enum1: u32, pub reserved_enum2: u32, }
impl lzma_stream {
pub fn new() -> lzma_stream {
unsafe {
mem::zeroed()
}
}
}
#[repr(C)]
pub struct lzma_allocator {
pub alloc: *mut extern fn(opaque: *mut c_void, nmemb: usize, size: usize),
pub free: extern fn(opaque: *mut c_void, ptr: *mut c_void),
pub opaque: *mut c_void,
}
#[allow(clippy::enum_variant_names)]
#[repr(C)]
#[derive(Clone, Copy, Debug)]
#[must_use]
pub enum lzma_ret {
LzmaOk = 0,
LzmaStreamEnd = 1,
LzmaNoCheck = 2,
LzmaUnsupportedCheck = 3,
LzmaGetCheck = 4,
LzmaMemError = 5,
LzmaMemlimitError = 6,
LzmaFormatError = 7,
LzmaOptionsError = 8,
LzmaDataError = 9,
LzmaBufError = 10,
LzmaProgError = 11,
}
#[allow(clippy::enum_variant_names)]
#[repr(C)]
#[derive(Clone, Copy)]
#[allow(dead_code)]
pub enum lzma_action {
LzmaRun = 0,
LzmaSyncFlush = 1,
LzmaFullFlush = 2,
LzmaFullBarrier = 4,
LzmaFinish = 3,
}
#[repr(C)]
#[derive(Clone, Copy)]
#[allow(dead_code)]
pub enum lzma_check {
LzmaCheckNone = 0,
LzmaCheckCrc32 = 1,
LzmaCheckCrc64 = 4,
LzmaCheckSha256 = 10,
}
extern {
pub fn lzma_easy_encoder(stream: *mut lzma_stream, preset: u32, check: lzma_check) -> lzma_ret;
pub fn lzma_code(stream: *mut lzma_stream, action: lzma_action) -> lzma_ret;
pub fn lzma_end(stream: *mut lzma_stream);
pub fn lzma_auto_decoder(stream: *mut lzma_stream, memlimit: u64, flags: u32) -> lzma_ret;
}