[Yum-devel] [PATCH] Work around python readline braindamage, BZ 448864. Sickest hack ever.

James Antill james at and.org
Mon Sep 13 16:17:53 UTC 2010


---
 shell.py |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/shell.py b/shell.py
index a32e880..b22097c 100644
--- a/shell.py
+++ b/shell.py
@@ -74,6 +74,34 @@ class YumShell(cmd.Cmd):
                 raise Errors.YumBaseError, "Fatal error in script, exiting"
         
         return inputs
+
+    def cmdloop(self, *args, **kwargs):
+        """ Sick hack for readline. """
+        global raw_input
+
+        oraw_input = raw_input
+        owriter    = sys.stdout
+        _ostdout   = owriter.stream
+
+        def _sick_hack_raw_input(*args, **kwargs):
+            sys.stdout = _ostdout
+            rret = oraw_input(*args, **kwargs)
+            sys.stdout = owriter
+
+            return rret
+        raw_input = _sick_hack_raw_input
+        sys.stdout = _ostdout
+
+        try:
+            cret = cmd.Cmd.cmdloop(self, *args, **kwargs)
+        except:
+            raw_input  = oraw_inpaut
+            sys.stdout = owriter
+            raise
+
+        raw_input = oraw_input
+
+        return cret
         
     def script(self):
         try:
-- 
1.7.2



More information about the Yum-devel mailing list