#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
use std::ffi::CString;
use std::os::raw::{c_char, c_int};
use std::path::Path;
extern "C" {
#[link_name = "compress"]
fn compress_ffi(input: *const c_char, output: *const c_char) -> c_int;
}
pub fn compress(input: impl AsRef<Path>, output: impl AsRef<Path>) -> Result<(), i32> {
let input_c = CString::new(input.as_ref().to_str().ok_or(-1)?).map_err(|_| -1)?;
let output_c = CString::new(output.as_ref().to_str().ok_or(-1)?).map_err(|_| -1)?;
let result = unsafe { compress_ffi(input_c.as_ptr(), output_c.as_ptr()) };
if result == 0 {
Ok(())
} else {
Err(result)
}
}