From 7855dde91e5d08b0183c8c8f266fd7ea54807d3f Mon Sep 17 00:00:00 2001 From: Milo Turner Date: Mon, 2 Mar 2020 16:06:39 -0500 Subject: [PATCH] command line argument parsing for recv --- hptp-recv/src/main.rs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/hptp-recv/src/main.rs b/hptp-recv/src/main.rs index 1d2e115..122188c 100644 --- a/hptp-recv/src/main.rs +++ b/hptp-recv/src/main.rs @@ -1,5 +1,28 @@ extern crate hptp; -fn main() { - println!("{}", hptp::RECV_GREETING); +#[derive(Debug)] +struct Hostname(String, u16); + +fn go(hn: Hostname) { + println!("{:?}", hn) +} + +fn usage() { + print!("usage:\n./3700recv :\n") +} + +fn parse_args() -> Result { + let mut args = std::env::args(); + let arg = args.nth(1).ok_or(())?; + let i = arg.find(':').ok_or(())?; + let ip: String = arg[..i].into(); + let port: u16 = arg[i + 1..].parse::().map_err(|_| ())?; + Ok(Hostname(ip, port)) +} + +fn main() { + match parse_args() { + Ok(x) => go(x), + Err(_) => usage(), + } }