alpm_rs/
clib.rs

1
2
3
4use std::os::raw::{c_char, c_void};
5
6#[link(name="alpm")]
7extern {
8    fn vsnprintf(s: *mut c_char, num: usize,fmt: *mut c_char, args: VaList) -> i32;
9}
10
11#[repr(C)]
12#[derive(Debug,Copy,Clone)]
13pub struct VaListInner {
14    gp_offset: u32,
15    fp_offset: u32,
16    overflow_arg_area: *const c_void,
17    reg_save_area: *const c_void,
18}
19
20#[derive(Debug,Copy,Clone)]
21#[repr(C)]
22pub struct VaList{
23    innter: *mut VaListInner,
24}
25
26
27pub unsafe fn vsn_printf(fmt: *mut c_char, args: VaList) -> String{
28    let mut buf = vec![0;255];
29    vsnprintf(buf.as_mut_ptr(), buf.len(), fmt, args) as usize;
30    cstr!(buf.as_mut_ptr() as *mut c_char).to_string()
31}