mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-04-16 00:00:04 +03:00
rust binding for parse_mount_opts()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
8af5c93e48
commit
18b4914587
@ -1,3 +1,7 @@
|
|||||||
|
use crate::c;
|
||||||
|
use crate::fs::Fs;
|
||||||
|
use std::ffi::{CString, c_char};
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! opt_set {
|
macro_rules! opt_set {
|
||||||
($opts:ident, $n:ident, $v:expr) => {
|
($opts:ident, $n:ident, $v:expr) => {
|
||||||
@ -33,3 +37,29 @@ macro_rules! opt_get {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn parse_mount_opts(fs: Option<&mut Fs>, optstr: Option<&str>, ignore_unknown: bool)
|
||||||
|
-> Result<c::bch_opts, c::bch_errcode> {
|
||||||
|
let mut opts: c::bch_opts = Default::default();
|
||||||
|
|
||||||
|
if let Some(optstr) = optstr {
|
||||||
|
let optstr = CString::new(optstr).unwrap();
|
||||||
|
let optstr_ptr = optstr.as_ptr();
|
||||||
|
|
||||||
|
let ret = unsafe {
|
||||||
|
c::bch2_parse_mount_opts(fs.map_or(std::ptr::null_mut(), |f| f.raw),
|
||||||
|
&mut opts as *mut c::bch_opts,
|
||||||
|
std::ptr::null_mut(),
|
||||||
|
optstr_ptr as *mut c_char,
|
||||||
|
ignore_unknown)
|
||||||
|
};
|
||||||
|
|
||||||
|
drop(optstr);
|
||||||
|
|
||||||
|
if ret != 0 {
|
||||||
|
let err: c::bch_errcode = unsafe { std::mem::transmute(-ret) };
|
||||||
|
return Err(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(opts)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user