diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2018-06-07 03:21:57 +0200 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2018-06-07 03:21:57 +0200 |
commit | d66616a4fa71609231688119c40a3a0ec39a17ab (patch) | |
tree | 8bf35b826e5d4a1b78902310f6bff3dc0dfecc21 /src/otp.rs | |
parent | f035857d9a9dc14c85e6bdf22cbe72528235657d (diff) | |
download | nitrokey-rs-d66616a4fa71609231688119c40a3a0ec39a17ab.tar.gz nitrokey-rs-d66616a4fa71609231688119c40a3a0ec39a17ab.tar.bz2 |
Implement easier CString creation
The new get_cstring method in util returns a Result<CString,
CommandError>, so mast callers can just use the ? operator to unwrap the
result instead of cumbersome unwrapping code.
Diffstat (limited to 'src/otp.rs')
-rw-r--r-- | src/otp.rs | 17 |
1 files changed, 7 insertions, 10 deletions
@@ -1,6 +1,6 @@ use nitrokey_sys; use std::ffi::CString; -use util::{get_command_result, result_from_string, CommandError}; +use util::{get_command_result, get_cstring, result_from_string, CommandError}; /// Modes for one-time password generation. #[derive(Debug, PartialEq)] @@ -389,22 +389,19 @@ impl OtpSlotData { impl RawOtpSlotData { pub fn new(data: OtpSlotData) -> Result<RawOtpSlotData, CommandError> { - let name = CString::new(data.name); - let secret = CString::new(data.secret); + let name = get_cstring(data.name)?; + let secret = get_cstring(data.secret)?; let use_token_id = data.token_id.is_some(); - let token_id = CString::new(data.token_id.unwrap_or_else(String::new)); - if name.is_err() || secret.is_err() || token_id.is_err() { - return Err(CommandError::InvalidString); - } + let token_id = get_cstring(data.token_id.unwrap_or_else(String::new))?; Ok(RawOtpSlotData { number: data.number, - name: name.unwrap(), - secret: secret.unwrap(), + name, + secret, mode: data.mode, use_enter: data.use_enter, use_token_id, - token_id: token_id.unwrap(), + token_id, }) } } |