summaryrefslogtreecommitdiffstats
path: root/ipapython
diff options
context:
space:
mode:
Diffstat (limited to 'ipapython')
-rw-r--r--ipapython/ipautil.py46
1 files changed, 29 insertions, 17 deletions
diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index ba8312e79..c3ffb1d5c 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -747,30 +747,40 @@ def ipa_generate_password(characters=None,pwd_len=None):
def user_input(prompt, default = None, allow_empty = True):
if default == None:
while True:
- ret = raw_input("%s: " % prompt)
- if allow_empty or ret.strip():
- return ret
+ try:
+ ret = raw_input("%s: " % prompt)
+ if allow_empty or ret.strip():
+ return ret
+ except EOFError:
+ if allow_empty:
+ return ''
+ raise RuntimeError("Failed to get user input")
if isinstance(default, basestring):
while True:
- ret = raw_input("%s [%s]: " % (prompt, default))
- if not ret and (allow_empty or default):
+ try:
+ ret = raw_input("%s [%s]: " % (prompt, default))
+ if not ret and (allow_empty or default):
+ return default
+ elif ret.strip():
+ return ret
+ except EOFError:
return default
- elif ret.strip():
- return ret
+
if isinstance(default, bool):
- if default:
- choice = "yes"
- else:
- choice = "no"
+ choice = "yes" if default else "no"
while True:
- ret = raw_input("%s [%s]: " % (prompt, choice))
- if not ret:
+ try:
+ ret = raw_input("%s [%s]: " % (prompt, choice))
+ if not ret:
+ return default
+ elif ret.lower()[0] == "y":
+ return True
+ elif ret.lower()[0] == "n":
+ return False
+ except EOFError:
return default
- elif ret.lower()[0] == "y":
- return True
- elif ret.lower()[0] == "n":
- return False
+
if isinstance(default, int):
while True:
try:
@@ -780,6 +790,8 @@ def user_input(prompt, default = None, allow_empty = True):
ret = int(ret)
except ValueError:
pass
+ except EOFError:
+ return default
else:
return ret