From c333f9d8137e596e5270e9ec5fc2777d96d94fb0 Mon Sep 17 00:00:00 2001 From: Roey Darwish Dror Date: Sat, 10 Nov 2018 20:18:43 +0200 Subject: [PATCH] Ignore bad retry answer (fix #86) --- src/terminal.rs | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/terminal.rs b/src/terminal.rs index 4458f52e..274beeea 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -63,28 +63,29 @@ impl Terminal { } println!(); - loop { - self.term - .write_fmt(format_args!( - "{}", - style(format!( - "Retry? [y/N] {}", - if !running { - "(Press Ctrl+C again to stop Topgrade) " - } else { - "" - } - )).yellow() - .bold() - )).ok(); + self.term + .write_fmt(format_args!( + "{}", + style(format!( + "Retry? [y/N] {}", + if !running { + "(Press Ctrl+C again to stop Topgrade) " + } else { + "" + } + )).yellow() + .bold() + )).ok(); - let answer = self.term.read_char()?; - println!(); - match answer { - 'y' | 'Y' => return Ok(true), - 'n' | 'N' | '\r' | '\n' => return Ok(false), + let answer = loop { + match self.term.read_char()? { + 'y' | 'Y' => break Ok(true), + 'n' | 'N' | '\r' | '\n' => break Ok(false), _ => (), } - } + }; + + println!(); + answer } }