diff --git a/src/main.rs b/src/main.rs index fd3f1c2c..cbf495dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -134,33 +134,20 @@ fn setup(args: &[String]) -> Setup { let mixer_name = matches.opt_str("mixer"); let mixer = mixer::find(mixer_name.as_ref()) .expect("Invalid mixer"); - let initial_volume; - // check if initial-volume argument is present - if matches.opt_present("initial-volume"){ - // check if value is a number - if matches.opt_str("initial-volume").unwrap().parse::().is_ok(){ - // check if value is in [0-100] range, otherwise put the bound values - if matches.opt_str("initial-volume").unwrap().parse::().unwrap() < 0 { - initial_volume = 0 as i32; - } - else if matches.opt_str("initial-volume").unwrap().parse::().unwrap() > 100{ - initial_volume = 0xFFFF as i32; - } - // checks ok - else{ - initial_volume = matches.opt_str("initial-volume").unwrap().parse::().unwrap()* 0xFFFF as i32 / 100 ; + + let initial_volume: i32; + if matches.opt_present("initial-volume") && matches.opt_str("initial-volume").unwrap().parse::().is_ok() { + let iv = matches.opt_str("initial-volume").unwrap().parse::().unwrap(); + match iv { + iv if iv >= 0 && iv <= 100 => { initial_volume = iv * 0xFFFF / 100 } + _ => { + debug!("Volume needs to be a value from 0-100; set volume level to 50%"); + initial_volume = 0x8000; } } - // if value is not a number use default value (50%) - else { - initial_volume = 0x8000 as i32; - } + } else { + initial_volume = 0x8000; } - // if argument not present use default values (50%) - else{ - initial_volume = 0x8000 as i32; - } - debug!("Volume \"{}\" !", initial_volume); let zeroconf_port: u16; if matches.opt_present("zeroconf-port") && matches.opt_str("zeroconf-port").unwrap().parse::().is_ok() {