Mercurial > crates > nonstick
diff src/conv.rs @ 6:2ec97116d72c
Updates for rustc 1.0.0-beta
author | Jesse Hallett <jesse@galois.com> |
---|---|
date | Fri, 03 Apr 2015 23:16:44 -0700 |
parents | b195a14058bb |
children | 9380392b9a60 |
line wrap: on
line diff
--- a/src/conv.rs Fri Mar 06 14:01:36 2015 -0800 +++ b/src/conv.rs Fri Apr 03 23:16:44 2015 -0700 @@ -30,7 +30,7 @@ pub struct PamConv { conv: extern fn(num_msg: c_int, pam_message: &&PamMessage, - pam_response: &*mut PamResponse, + pam_response: &mut *const PamResponse, appdata_ptr: *const AppDataPtr ) -> PamResultCode, appdata_ptr: *const AppDataPtr, @@ -53,26 +53,22 @@ /// these message styles - and not all applications implement all message /// styles. pub fn send(&self, style: PamMessageStyle, msg: &str) -> PamResult<Option<String>> { - let resp_ptr: *mut PamResponse = ptr::null_mut(); + let mut resp_ptr: *const PamResponse = ptr::null(); let msg = PamMessage { msg_style: style, msg: CString::new(msg).unwrap().as_ptr(), }; - let ret = (self.conv)(1, &&msg, &resp_ptr, self.appdata_ptr); + let ret = (self.conv)(1, &&msg, &mut resp_ptr, self.appdata_ptr); if constants::PAM_SUCCESS == ret { - let s = unsafe { resp_ptr.as_ref() } - .and_then(|r| { - if r.resp.is_null() { - None - } - else { - let bytes = unsafe { CStr::from_ptr(r.resp).to_bytes() }; - String::from_utf8(bytes.to_vec()).ok() - } - }); - Ok(s) + if resp_ptr.is_null() { + Ok(None) + } + else { + let bytes = unsafe { CStr::from_ptr((*resp_ptr).resp).to_bytes() }; + Ok(String::from_utf8(bytes.to_vec()).ok()) + } } else { Err(ret) }