# HG changeset patch # User catherine@Drou # Date 1266371507 18000 # Node ID 1c91655d05f8c0a491d9a135112d0778eddb01bb # Parent 6116360f6e036f0960e5aa946942892f500dcabc still working out redirection diff -r 6116360f6e03 -r 1c91655d05f8 cmd2.py --- a/cmd2.py Tue Feb 16 19:10:01 2010 -0500 +++ b/cmd2.py Tue Feb 16 20:51:47 2010 -0500 @@ -786,9 +786,9 @@ def redirect_output(self, statement): if statement.parsed.pipeTo: - redirect = subprocess.Popen(statement.parsed.pipeTo, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) - self.kept_state = Statekeeper(self, ('stdout',)) - self.stdout = redirect.stdin + self.kept_state = Statekeeper(self, ('stdout',)) + self.redirect = subprocess.Popen(statement.parsed.pipeTo, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) + self.stdout = self.redirect.stdin elif statement.parsed.output: self.kept_state = Statekeeper(self, ('stdout',)) if statement.parsed.outputTo: @@ -797,21 +797,18 @@ mode = 'a' self.stdout = open(os.path.expanduser(statement.parsed.outputTo), mode) else: - self.kept_state = Statekeeper(self, ('stdout',)) self.stdout = tempfile.TemporaryFile() if statement.parsed.output == '>>': self.stdout.write(get_paste_buffer()) - + def restore_output(self, statement): if self.kept_state: - if statement.parsed.output and not statement.parsed.outputTo: - self.stdout.seek(0) - try: + if statement.parsed.output: + if not statement.parsed.outputTo: + self.stdout.seek(0) write_to_paste_buffer(self.stdout.read()) - except Exception, e: - self.perror(e) elif statement.parsed.pipeTo: - for result in redirect.communicate(): + for result in self.redirect.communicate(): self.kept_state.stdout.write(result or '') self.stdout.close() self.kept_state.restore()