use sysctl::Sysctl;
use super::*;
pub fn os_bitness() -> Result<Bitness, BitnessError> {
let supported_archs = {
let ctl = sysctl::Ctl::new("kern.supported_archs").map_err(|err| BitnessError::Sysctl(err.to_string()))?;
ctl.value().map_err(|err| BitnessError::Sysctl(err.to_string()))?
};
Ok(if let sysctl::CtlValue::String(supported_archs) = supported_archs {
if supported_archs.split(' ').any(|m| m == "amd64") {
Bitness::X86_64
}
else if supported_archs.split(' ').any(|m| m == "i386") {
Bitness::X86_32
}
else {
Bitness::Unknown
}
}
else {
Bitness::Unknown
})
}