optimizations #161
@ -69,14 +69,12 @@ pub fn pledge(
|
|||||||
pub struct UnveilPerms(CString);
|
pub struct UnveilPerms(CString);
|
||||||
|
|
||||||
impl UnveilPerms {
|
impl UnveilPerms {
|
||||||
pub fn new(permissions: Vec<char>) -> Self {
|
pub fn new<T: IntoIterator<Item = char>>(permissions: T) -> Self {
|
||||||
if permissions.is_empty() {
|
let perms = CString::new(
|
||||||
return UnveilPerms(CString::new("").unwrap());
|
permissions.into_iter().collect::<String>()
|
||||||
}
|
).unwrap();
|
||||||
|
|
||||||
UnveilPerms(
|
UnveilPerms(perms)
|
||||||
CString::new(permissions.iter().collect::<String>()).unwrap()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,9 +85,9 @@ pub fn unveil(
|
|||||||
let path_c = path.map(CString::new).map(Result::unwrap);
|
let path_c = path.map(CString::new).map(Result::unwrap);
|
||||||
let arg1 = path_c.map(|p| p.into_raw() as *const c_char).unwrap_or(null());
|
let arg1 = path_c.map(|p| p.into_raw() as *const c_char).unwrap_or(null());
|
||||||
|
|
||||||
let arg2 = permissions
|
let arg2 = permissions.map(|p| {
|
||||||
.map(|p| p.0.into_raw() as *const c_char)
|
p.0.into_raw() as *const c_char
|
||||||
.unwrap_or(null());
|
}).unwrap_or(null());
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
match openbsd::unveil(arg1, arg2) {
|
match openbsd::unveil(arg1, arg2) {
|
||||||
|
Loading…
Reference in New Issue
Block a user