mercurial/util.py
changeset 16383 f5dd179bfa4a
parent 16360 e5788269741a
child 16397 f0f7f3fab315
equal deleted inserted replaced
16382:f542d291c4f2 16383:f5dd179bfa4a
   420         if val is True:
   420         if val is True:
   421             return '1'
   421             return '1'
   422         return str(val)
   422         return str(val)
   423     origcmd = cmd
   423     origcmd = cmd
   424     cmd = quotecommand(cmd)
   424     cmd = quotecommand(cmd)
   425     env = dict(os.environ)
   425     if sys.platform == 'plan9':
   426     env.update((k, py2shell(v)) for k, v in environ.iteritems())
   426         # subprocess kludge to work around issues in half-baked Python
   427     env['HG'] = hgexecutable()
   427         # ports, notably bichued/python:
   428     if out is None or out == sys.__stdout__:
   428         if not cwd is None:
   429         rc = subprocess.call(cmd, shell=True, close_fds=closefds,
   429             os.chdir(cwd)
   430                              env=env, cwd=cwd)
   430         rc = os.system(cmd)
   431     else:
   431     else:
   432         proc = subprocess.Popen(cmd, shell=True, close_fds=closefds,
   432         env = dict(os.environ)
   433                                 env=env, cwd=cwd, stdout=subprocess.PIPE,
   433         env.update((k, py2shell(v)) for k, v in environ.iteritems())
   434                                 stderr=subprocess.STDOUT)
   434         env['HG'] = hgexecutable()
   435         for line in proc.stdout:
   435         if out is None or out == sys.__stdout__:
   436             out.write(line)
   436             rc = subprocess.call(cmd, shell=True, close_fds=closefds,
   437         proc.wait()
   437                                  env=env, cwd=cwd)
   438         rc = proc.returncode
   438         else:
   439     if sys.platform == 'OpenVMS' and rc & 1:
   439             proc = subprocess.Popen(cmd, shell=True, close_fds=closefds,
   440         rc = 0
   440                                     env=env, cwd=cwd, stdout=subprocess.PIPE,
       
   441                                     stderr=subprocess.STDOUT)
       
   442             for line in proc.stdout:
       
   443                 out.write(line)
       
   444             proc.wait()
       
   445             rc = proc.returncode
       
   446         if sys.platform == 'OpenVMS' and rc & 1:
       
   447             rc = 0
   441     if rc and onerr:
   448     if rc and onerr:
   442         errmsg = '%s %s' % (os.path.basename(origcmd.split(None, 1)[0]),
   449         errmsg = '%s %s' % (os.path.basename(origcmd.split(None, 1)[0]),
   443                             explainexit(rc)[0])
   450                             explainexit(rc)[0])
   444         if errprefix:
   451         if errprefix:
   445             errmsg = '%s: %s' % (errprefix, errmsg)
   452             errmsg = '%s: %s' % (errprefix, errmsg)