summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-10-05 01:37:04 +0000
committerZac Medico <zmedico@gentoo.org>2007-10-05 01:37:04 +0000
commitf845c6114a46bc02a0415609881cb213c74c8556 (patch)
treef0b0abcf784cd34329d6f08cfa857caecaa1f9d3
parent1fbf47530609f917ee3b5973cae1c809bb830cf4 (diff)
downloadportage-f845c6114a46bc02a0415609881cb213c74c8556.tar.gz
portage-f845c6114a46bc02a0415609881cb213c74c8556.tar.bz2
portage-f845c6114a46bc02a0415609881cb213c74c8556.zip
Bug #194095 - Validate dispatch-conf input in order to
prevent spurious input characters from being interpreted as user input (which can be quite confusing and gives an "out of control" feeling). (trunk r7877) svn path=/main/branches/2.1.2/; revision=7920
-rwxr-xr-xbin/dispatch-conf15
1 files changed, 13 insertions, 2 deletions
diff --git a/bin/dispatch-conf b/bin/dispatch-conf
index 5d33343f7..55bf13cfd 100755
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@ -203,6 +203,8 @@ class dispatch:
# Interactively process remaining
#
+ valid_input = "qhtnmlezu"
+
for conf in confs:
count = count + 1
@@ -223,7 +225,16 @@ class dispatch:
print '>> (%i of %i) -- %s' % (count, len(confs), conf ['current'])
print '>> q quit, h help, n next, e edit-new, z zap-new, u use-new\n m merge, t toggle-merge, l look-merge: ',
- c = getch ()
+ # In some cases getch() will return some spurious characters
+ # that do not represent valid input. If we don't validate the
+ # input then the spurious characters can cause us to jump
+ # back into the above "diff" command immediatly after the user
+ # has exited it (which can be quite confusing and gives an
+ # "out of control" feeling).
+ while True:
+ c = getch()
+ if c in valid_input:
+ break
if c == 'q':
sys.exit (0)
@@ -274,7 +285,7 @@ class dispatch:
os.unlink(mrgconf)
break
else:
- continue
+ raise AssertionError("Invalid Input: %s" % c)
if auto_zapped:
print