diff --git a/src/main.rs b/src/main.rs index ddb38a1..b1dcc6b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,11 +18,14 @@ use appstate::AppState; use cli::Cli; fn main() { - let running = Arc::new(AtomicBool::new(true)); - let r = running.clone(); + let stop = Arc::new(AtomicBool::new(false)); - ctrlc::set_handler(move || r.store(false, Ordering::SeqCst)) - .expect("Error setting Ctrl-C handler"); + let stop_ctrlc = stop.clone(); + ctrlc::set_handler(move || { + stop_ctrlc.store(true, Ordering::SeqCst); + info!("stopping after chunk ..."); + }) + .expect("Error setting Ctrl-C handler"); env_logger::init(); @@ -36,10 +39,7 @@ fn main() { .into(); let mut state = match AppState::try_resume(&args) { - Some(state) => { - info!("loaded state: {state:?}"); - state - } + Some(state) => state, None => AppState::from_args(&args, &agent).unwrap_or_else(|e| { error!("could not create new state: {e}"); exit(1); @@ -58,10 +58,7 @@ fn main() { state.save().unwrap(); - if !running.load(Ordering::SeqCst) { - info!("terminating ..."); - exit(0); - } + stop.load(Ordering::SeqCst).then(|| exit(0)); } info!("uploads done");