use errno;
use libc;
use errors::*;
use nr;
pub fn has_keepcaps() -> Result<bool> {
let ret = unsafe { libc::prctl(nr::PR_GET_KEEPCAPS, 0, 0, 0) };
match ret {
0 => Ok(false),
1 => Ok(true),
_ => Err(
Error::from_kind(ErrorKind::Sys(errno::errno())).chain_err(|| "PR_GET_KEEPCAPS error")
),
}
}
pub fn set_keepcaps(keep_caps: bool) -> Result<()> {
let flag = if keep_caps { 1 } else { 0 };
let ret = unsafe { libc::prctl(nr::PR_SET_KEEPCAPS, flag, 0, 0) };
match ret {
0 => Ok(()),
_ => Err(
Error::from_kind(ErrorKind::Sys(errno::errno())).chain_err(|| "PR_SET_KEEPCAPS error")
),
}
}