From 73461fca084aa43e6203ae00ac4cafaaa197e499 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Mon, 8 Oct 2012 11:17:50 +0200 Subject: [PATCH] ubuntutools.question: Catch EOF and SIGINT on all input and bail out. (LP: #1037488) --- debian/changelog | 2 ++ ubuntutools/question.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0874372..29929d7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,8 @@ ubuntu-dev-tools (0.144) UNRELEASED; urgency=low - Explain that backports aren't to fix bugs. * sponsor-patch: Don't fall over bugs targetted at the development release (LP: #936014) + * ubuntutools.question: Catch EOF and SIGINT on all input and bail out. + (LP: #1037488) [ Benjamin Drung ] * seeded-in-ubuntu: State in error message that it takes a source package. diff --git a/ubuntutools/question.py b/ubuntutools/question.py index b181988..509e86e 100644 --- a/ubuntutools/question.py +++ b/ubuntutools/question.py @@ -55,7 +55,11 @@ class Question(object): selected = None while selected not in self.options: - selected = raw_input(question).strip().lower() + try: + selected = raw_input(question).strip().lower() + except (EOFError, KeyboardInterrupt): + print '\nAborting as requested.' + sys.exit(1) if selected == "": selected = default else: @@ -81,7 +85,11 @@ def input_number(question, min_number, max_number, default=None): question += "? " selected = None while selected < min_number or selected > max_number: - selected = raw_input(question).strip() + try: + selected = raw_input(question).strip() + except (EOFError, KeyboardInterrupt): + print '\nAborting as requested.' + sys.exit(1) if default and selected == "": selected = default else: @@ -106,7 +114,7 @@ def confirmation_prompt(message=None, action=None): message = 'Press [Enter] to %s. Press [Ctrl-C] to abort now.' % action try: raw_input(message) - except KeyboardInterrupt: + except (EOFError, KeyboardInterrupt): print '\nAborting as requested.' sys.exit(1)