diff options
author | catherine <catherine@dellzilla> | 2010-02-17 12:08:42 -0500 |
---|---|---|
committer | catherine <catherine@dellzilla> | 2010-02-17 12:08:42 -0500 |
commit | c7d04209407c885a26eb317e18402b77b301444a (patch) | |
tree | f324026d127bacb3e799a1054ff6d333fc2b76e7 /cmd2.py | |
parent | d82a0c3c127200bc787abe3f561f1a9d3238dac3 (diff) | |
download | cmd2-hg-c7d04209407c885a26eb317e18402b77b301444a.tar.gz |
redirect works even with print
Diffstat (limited to 'cmd2.py')
-rwxr-xr-x | cmd2.py | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -183,7 +183,7 @@ if subprocess.mswindows: except ImportError: def get_paste_buffer(*args): raise OSError, pastebufferr % ('pywin32', 'Download from http://sourceforge.net/projects/pywin32/') - setPasteBuffer = get_paste_buffer + write_to_paste_buffer = get_paste_buffer else: can_clip = False try: @@ -214,8 +214,7 @@ else: else: def get_paste_buffer(*args): raise OSError, pastebufferr % ('xclip', 'On Debian/Ubuntu, install with "sudo apt-get install xclip"') - setPasteBuffer = get_paste_buffer - writeToPasteBuffer = get_paste_buffer + write_to_paste_buffer = get_paste_buffer pyparsing.ParserElement.setDefaultWhitespaceChars(' \t') @@ -787,18 +786,20 @@ class Cmd(cmd.Cmd): def redirect_output(self, statement): if statement.parsed.pipeTo: - self.kept_state = Statekeeper(self, ('stdout',)) + self.kept_state = Statekeeper(self, ('stdout',)) + self.kept_sys = Statekeeper(sys, ('stdout',)) self.redirect = subprocess.Popen(statement.parsed.pipeTo, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) - self.stdout = self.redirect.stdin + sys.stdout = self.stdout = self.redirect.stdin elif statement.parsed.output: self.kept_state = Statekeeper(self, ('stdout',)) + self.kept_sys = Statekeeper(sys, ('stdout',)) if statement.parsed.outputTo: mode = 'w' if statement.parsed.output == '>>': mode = 'a' - self.stdout = open(os.path.expanduser(statement.parsed.outputTo), mode) + sys.stdout = self.stdout = open(os.path.expanduser(statement.parsed.outputTo), mode) else: - self.stdout = tempfile.TemporaryFile() + sys.stdout = self.stdout = tempfile.TemporaryFile() if statement.parsed.output == '>>': self.stdout.write(get_paste_buffer()) @@ -812,7 +813,8 @@ class Cmd(cmd.Cmd): for result in self.redirect.communicate(): self.kept_state.stdout.write(result or '') self.stdout.close() - self.kept_state.restore() + self.kept_state.restore() + self.kept_sys.restore() self.kept_state = None def onecmd(self, line): |