diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2019-03-26 01:15:58 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2019-03-26 01:23:41 +0100 |
| commit | ab017b1e36170e4bd9e5d8e0bd6454d966259e1c (patch) | |
| tree | ce389f468313bdfe8e931cb200dbc36e0476f6c3 /src/lib.rs | |
| parent | c790e9b6013cfe86c81f5d8068feefff4339abf7 (diff) | |
Simplify command line argument parsing
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 18 |
1 files changed, 5 insertions, 13 deletions
@@ -151,7 +151,7 @@ impl Tftp { /* build string from buffer */ String::from_utf8(buf.iter() .take_while(|&x| *x != 0) - .map(|&x| x) + .cloned() .collect()).ok() } @@ -372,26 +372,18 @@ impl Tftp { } pub fn parse_file_mode_options(&self, buf: &[u8]) -> Result<(PathBuf, String, HashMap<String, String>), io::Error> { - let dataerr = io::Error::new(io::ErrorKind::InvalidData, "invalid data received"); + let dataerr = || io::Error::new(io::ErrorKind::InvalidData, "invalid data received"); let mut pos = 0; - let filename = match self.get_tftp_str(&buf[pos..]) { - Some(f) => f, - None => return Err(dataerr), - }; + let filename = self.get_tftp_str(&buf[pos..]).ok_or_else(dataerr)?; pos += filename.len() + 1; - let filename = Path::new(&filename); - - let mode = match self.get_tftp_str(&buf[pos..]) { - Some(m) => m.to_lowercase(), - None => return Err(dataerr), - }; + let mode = self.get_tftp_str(&buf[pos..]).ok_or_else(dataerr)?.to_lowercase(); pos += mode.len() + 1; let options = self.parse_options(&buf[pos..]); - Ok((filename.to_path_buf(), mode, options)) + Ok((Path::new(&filename).to_path_buf(), mode, options)) } pub fn send_error(&self, socket: &UdpSocket, code: u16, msg: &str) -> Result<(), io::Error> { |
