1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use ffi; use cvt_p; use error::ErrorStack; pub struct ConfMethod(*mut ffi::CONF_METHOD); impl ConfMethod { pub fn default() -> ConfMethod { unsafe { ffi::init(); ConfMethod(ffi::NCONF_default()) } } pub unsafe fn from_ptr(ptr: *mut ffi::CONF_METHOD) -> ConfMethod { ConfMethod(ptr) } pub fn as_ptr(&self) -> *mut ffi::CONF_METHOD { self.0 } } foreign_type! { type CType = ffi::CONF; fn drop = ffi::NCONF_free; pub struct Conf; pub struct ConfRef; } impl Conf { pub fn new(method: ConfMethod) -> Result<Conf, ErrorStack> { unsafe { cvt_p(ffi::NCONF_new(method.as_ptr())).map(Conf) } } }