Changeset 1183:541b75eeb852
- Timestamp:
- 06/10/08 01:16:11 (3 months ago)
- Author:
- Ali Afshar <aafshar@…>
- Children:
- 1184:dcd452686e90, 1205:d23edbcf8747
- Message:
-
Set correct controlling terminal on VC commands. Patch from GC Birzan. lp:154107
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r1157
|
r1183
|
|
| 22 | 22 | |
| 23 | 23 | import os, subprocess |
| | 24 | import pty |
| 24 | 25 | |
| 25 | 26 | import gtk, gobject |
| … |
… |
|
| 284 | 285 | self._vte_fork(commandargs, env, cwd) |
| 285 | 286 | |
| 286 | | def _python_fork_waiter(self, popen): |
| 287 | | exit_code = popen.wait() |
| | 287 | def _python_fork_waiter(self, pid): |
| | 288 | stupid, exit_code = os.waitpid(pid, 0) |
| 288 | 289 | return exit_code |
| 289 | 290 | |
| … |
… |
|
| 299 | 300 | env = dict(os.environ) |
| 300 | 301 | env['TERM'] = 'xterm' |
| 301 | | (master, slave) = os.openpty() |
| 302 | | self.slave = slave |
| 303 | | self.master = master |
| 304 | | self._term.set_pty(master) |
| 305 | | p = subprocess.Popen(commandargs, stdin=slave, stdout=slave, |
| 306 | | preexec_fn=self._python_fork_preexec_fn, |
| 307 | | stderr=slave, env=env, cwd=cwd, close_fds=True) |
| 308 | | self._pid = p.pid |
| 309 | | t = AsyncTask(self._python_fork_waiter, self._python_fork_complete) |
| 310 | | t.start(p) |
| | 302 | pid, fd = pty.fork() |
| | 303 | if pid: |
| | 304 | self._term.set_pty(fd) |
| | 305 | self._pid = pid |
| | 306 | t = AsyncTask(self._python_fork_waiter, self._python_fork_complete) |
| | 307 | t.start(pid) |
| | 308 | else: |
| | 309 | self._python_fork_preexec_fn() |
| | 310 | os.chdir(cwd) |
| | 311 | os.execvpe(commandargs[0], commandargs, env) |
| 311 | 312 | |
| 312 | 313 | def _python_fork_parse(self, commandargs, env, cwd, parser_func): |