equal
deleted
inserted
replaced
13 import random |
13 import random |
14 import select |
14 import select |
15 import signal |
15 import signal |
16 import socket |
16 import socket |
17 import struct |
17 import struct |
18 import sys |
|
19 import traceback |
18 import traceback |
20 |
19 |
21 from .i18n import _ |
20 from .i18n import _ |
22 from . import ( |
21 from . import ( |
23 encoding, |
22 encoding, |
302 def _protectio(ui): |
301 def _protectio(ui): |
303 """ duplicates streams and redirect original to null if ui uses stdio """ |
302 """ duplicates streams and redirect original to null if ui uses stdio """ |
304 ui.flush() |
303 ui.flush() |
305 newfiles = [] |
304 newfiles = [] |
306 nullfd = os.open(os.devnull, os.O_RDWR) |
305 nullfd = os.open(os.devnull, os.O_RDWR) |
307 for f, sysf, mode in [(ui.fin, sys.stdin, 'rb'), |
306 for f, sysf, mode in [(ui.fin, util.stdin, 'rb'), |
308 (ui.fout, sys.stdout, 'wb')]: |
307 (ui.fout, util.stdout, 'wb')]: |
309 if f is sysf: |
308 if f is sysf: |
310 newfd = os.dup(f.fileno()) |
309 newfd = os.dup(f.fileno()) |
311 os.dup2(nullfd, f.fileno()) |
310 os.dup2(nullfd, f.fileno()) |
312 f = os.fdopen(newfd, mode) |
311 f = os.fdopen(newfd, mode) |
313 newfiles.append(f) |
312 newfiles.append(f) |