diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-10-05 01:37:04 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-10-05 01:37:04 +0000 |
commit | f845c6114a46bc02a0415609881cb213c74c8556 (patch) | |
tree | f0b0abcf784cd34329d6f08cfa857caecaa1f9d3 | |
parent | 1fbf47530609f917ee3b5973cae1c809bb830cf4 (diff) | |
download | portage-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-x | bin/dispatch-conf | 15 |
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 |