equal
deleted
inserted
replaced
179 |
179 |
180 if pycompat.iswindows: |
180 if pycompat.iswindows: |
181 # Work around Windows bugs. |
181 # Work around Windows bugs. |
182 stdout = platform.winstdout(stdout) # pytype: disable=module-attr |
182 stdout = platform.winstdout(stdout) # pytype: disable=module-attr |
183 stderr = platform.winstdout(stderr) # pytype: disable=module-attr |
183 stderr = platform.winstdout(stderr) # pytype: disable=module-attr |
184 if isatty(stdout): |
184 if isatty(stdout) and pycompat.sysplatform != b'OpenVMS': |
185 # The standard library doesn't offer line-buffered binary streams. |
185 # The standard library doesn't offer line-buffered binary streams. |
186 stdout = make_line_buffered(stdout) |
186 stdout = make_line_buffered(stdout) |
187 |
187 |
188 findexe = platform.findexe |
188 findexe = platform.findexe |
189 _gethgcmd = platform.gethgcmd |
189 _gethgcmd = platform.gethgcmd |
206 try: |
206 try: |
207 unblocksignal = osutil.unblocksignal |
207 unblocksignal = osutil.unblocksignal |
208 except AttributeError: |
208 except AttributeError: |
209 pass |
209 pass |
210 |
210 |
211 closefds = pycompat.isposix |
211 closefds = pycompat.isposix and pycompat.sysplatform != b'OpenVMS' |
212 |
212 |
213 |
213 |
214 def explainexit(code): |
214 def explainexit(code): |
215 """return a message describing a subprocess status |
215 """return a message describing a subprocess status |
216 (codes from kill are negative - not os.system/wait encoding)""" |
216 (codes from kill are negative - not os.system/wait encoding)""" |
336 outfd, outname = pycompat.mkstemp(prefix=b'hg-filter-out-') |
336 outfd, outname = pycompat.mkstemp(prefix=b'hg-filter-out-') |
337 os.close(outfd) |
337 os.close(outfd) |
338 cmd = cmd.replace(b'INFILE', inname) |
338 cmd = cmd.replace(b'INFILE', inname) |
339 cmd = cmd.replace(b'OUTFILE', outname) |
339 cmd = cmd.replace(b'OUTFILE', outname) |
340 code = system(cmd) |
340 code = system(cmd) |
341 if pycompat.sysplatform == b'OpenVMS' and code & 1: |
|
342 code = 0 |
|
343 if code: |
341 if code: |
344 raise error.Abort( |
342 raise error.Abort( |
345 _(b"command '%s' failed: %s") % (cmd, explainexit(code)) |
343 _(b"command '%s' failed: %s") % (cmd, explainexit(code)) |
346 ) |
344 ) |
347 with open(outname, b'rb') as fp: |
345 with open(outname, b'rb') as fp: |
381 """return location of the 'hg' executable. |
379 """return location of the 'hg' executable. |
382 |
380 |
383 Defaults to $HG or 'hg' in the search path. |
381 Defaults to $HG or 'hg' in the search path. |
384 """ |
382 """ |
385 if _hgexecutable is None: |
383 if _hgexecutable is None: |
386 hg = encoding.environ.get(b'HG') |
384 hg = encoding.environ.get(b'HG', '') |
387 mainmod = sys.modules['__main__'] |
385 mainmod = sys.modules['__main__'] |
|
386 if pycompat.sysplatform == b'OpenVMS' and hg[0:1] == '$': |
|
387 hg = 'mcr ' + hg[1:] |
388 if hg: |
388 if hg: |
389 _sethgexecutable(hg) |
389 _sethgexecutable(hg) |
390 elif resourceutil.mainfrozen(): |
390 elif resourceutil.mainfrozen(): |
391 if getattr(sys, 'frozen', None) == 'macosx_app': |
391 if getattr(sys, 'frozen', None) == 'macosx_app': |
392 # Env variable set by py2app |
392 # Env variable set by py2app |
531 ) |
531 ) |
532 for line in iter(proc.stdout.readline, b''): |
532 for line in iter(proc.stdout.readline, b''): |
533 out.write(line) |
533 out.write(line) |
534 proc.wait() |
534 proc.wait() |
535 rc = proc.returncode |
535 rc = proc.returncode |
536 if pycompat.sysplatform == b'OpenVMS' and rc & 1: |
|
537 rc = 0 |
|
538 return rc |
536 return rc |
539 |
537 |
540 |
538 |
541 _is_gui = None |
539 _is_gui = None |
542 |
540 |