#![warn(missing_debug_implementations)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
use super::fuse2_sys::fuse_args;
use libc::{c_char, c_int, c_uint, c_void, dev_t, mode_t, off_t, size_t};
type fuse_req_t = *mut c_void;
type fuse_pollhandle = *mut c_void;
type fuse_bufvec = *mut c_void;
type fuse_forget_data = *mut c_void;
pub type fuse_ino_t = u64;
#[repr(C)]
pub struct fuse_file_info {
pub flags: c_int,
pub fh: u64,
}
#[repr(C)]
pub struct stat {
pub st_ino: u64,
pub st_mode: mode_t,
}
#[repr(C)]
pub struct flock {
pub l_type: c_int,
pub l_start: off_t,
pub l_len: off_t,
pub l_pid: c_int,
}
#[repr(C)]
pub struct fuse_conn_info {
pub proto_major: c_uint,
pub proto_minor: c_uint,
}
#[repr(C)]
#[derive(Default)]
pub struct fuse_lowlevel_ops {
pub init: Option<extern "C" fn(userdata: *mut c_void, conn: *mut fuse_conn_info)>,
pub destroy: Option<extern "C" fn(userdata: *mut c_void)>,
pub lookup: Option<extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *const c_char)>,
pub forget: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, nlookup: u64)>,
pub getattr: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info)>,
pub setattr: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
attr: *mut stat,
to_set: c_int,
fi: *mut fuse_file_info,
),
>,
pub readlink: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t)>,
pub mknod: Option<
extern "C" fn(
req: fuse_req_t,
parent: fuse_ino_t,
name: *const c_char,
mode: mode_t,
rdev: dev_t,
),
>,
pub mkdir: Option<
extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *const c_char, mode: mode_t),
>,
pub unlink: Option<extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *const c_char)>,
pub rmdir: Option<extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, name: *const c_char)>,
pub symlink: Option<
extern "C" fn(
req: fuse_req_t,
link: *const c_char,
parent: fuse_ino_t,
name: *const c_char,
),
>,
pub rename: Option<
extern "C" fn(
req: fuse_req_t,
parent: fuse_ino_t,
name: *const c_char,
newparent: fuse_ino_t,
newname: *const c_char,
flags: c_uint,
),
>,
pub link: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
newparent: fuse_ino_t,
newname: *const c_char,
),
>,
pub open: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info)>,
pub read: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
size: size_t,
off: off_t,
fi: *mut fuse_file_info,
),
>,
pub write: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
buf: *const c_char,
size: size_t,
off: off_t,
fi: *mut fuse_file_info,
),
>,
pub flush: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info)>,
pub release: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info)>,
pub fsync: Option<
extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, datasync: c_int, fi: *mut fuse_file_info),
>,
pub opendir: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info)>,
pub readdir: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
size: size_t,
off: off_t,
fi: *mut fuse_file_info,
),
>,
pub releasedir:
Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info)>,
pub fsyncdir: Option<
extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, datasync: c_int, fi: *mut fuse_file_info),
>,
pub statfs: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t)>,
pub setxattr: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
name: *const c_char,
value: *const c_char,
size: size_t,
flags: c_int,
),
>,
pub getxattr:
Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *const c_char, size: size_t)>,
pub listxattr: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, size: size_t)>,
pub removexattr: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, name: *const c_char)>,
pub access: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, mask: c_int)>,
pub create: Option<
extern "C" fn(
req: fuse_req_t,
parent: fuse_ino_t,
name: *const c_char,
mode: mode_t,
fi: *mut fuse_file_info,
),
>,
pub getlk: Option<
extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info, lock: *mut flock),
>,
pub setlk: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
fi: *mut fuse_file_info,
lock: *mut flock,
sleep: c_int,
),
>,
pub bmap: Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, blocksize: size_t, idx: u64)>,
pub ioctl: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
cmd: c_uint,
arg: *mut c_void,
fi: *mut fuse_file_info,
flags: c_uint,
in_buf: *const c_void,
in_bufsz: size_t,
out_bufsz: size_t,
),
>,
pub poll: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
fi: *mut fuse_file_info,
ph: *mut fuse_pollhandle,
),
>,
pub write_buf: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
bufv: *mut fuse_bufvec,
off: off_t,
fi: *mut fuse_file_info,
),
>,
pub retrieve_reply: Option<
extern "C" fn(
req: fuse_req_t,
cookie: *mut c_void,
ino: fuse_ino_t,
offset: off_t,
bufv: *mut fuse_bufvec,
),
>,
pub forget_multi:
Option<extern "C" fn(req: fuse_req_t, count: size_t, forgets: *mut fuse_forget_data)>,
pub flock:
Option<extern "C" fn(req: fuse_req_t, ino: fuse_ino_t, fi: *mut fuse_file_info, op: c_int)>,
pub fallocate: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
mode: c_int,
offset: off_t,
length: off_t,
fi: *mut fuse_file_info,
),
>,
pub readdirplus: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
size: size_t,
off: off_t,
fi: *mut fuse_file_info,
),
>,
pub copy_file_range: Option<
extern "C" fn(
req: fuse_req_t,
ino_in: fuse_ino_t,
off_in: off_t,
fi_in: *mut fuse_file_info,
ino_out: fuse_ino_t,
off_out: off_t,
fi_out: *mut fuse_file_info,
len: size_t,
flags: c_int,
),
>,
pub lseek: Option<
extern "C" fn(
req: fuse_req_t,
ino: fuse_ino_t,
off: off_t,
whence: c_int,
fi: *mut fuse_file_info,
),
>,
pub tmpfile: Option<
extern "C" fn(req: fuse_req_t, parent: fuse_ino_t, mode: mode_t, fi: *mut fuse_file_info),
>,
}
unsafe extern "C" {
pub fn fuse_session_new(
args: *const fuse_args,
op: *const fuse_lowlevel_ops,
op_size: libc::size_t,
userdata: *mut c_void,
) -> *mut c_void;
pub fn fuse_session_mount(
se: *mut c_void, mountpoint: *const c_char,
) -> c_int;
pub fn fuse_session_fd(se: *mut c_void) -> c_int;
pub fn fuse_session_unmount(se: *mut c_void);
pub fn fuse_session_destroy(se: *mut c_void);
}