# HG changeset patch # User Patrick Mezard # Date 1225144675 -3600 # Node ID 6a51ca1e05c36fc2f03e64bf119d24cbb89df4d6 # Parent e7f6401584f7d371fc692d4932c62e00952c3c81 patch: rewrite diffstat with util.filter() Simpler and works under Windows. diff -r e7f6401584f7 -r 6a51ca1e05c3 mercurial/patch.py --- a/mercurial/patch.py Sat Oct 25 13:24:14 2008 +0200 +++ b/mercurial/patch.py Mon Oct 27 22:57:55 2008 +0100 @@ -1322,22 +1322,10 @@ def diffstat(patchlines): if not util.find_exe('diffstat'): return - fd, name = tempfile.mkstemp(prefix="hg-patchbomb-", suffix=".txt") - try: - p = util.Popen3('diffstat -p1 -w79 2>/dev/null > ' + name) - try: - for line in patchlines: - p.tochild.write(line + "\n") - p.tochild.close() - if p.wait(): return - fp = os.fdopen(fd, 'r') - stat = [] - for line in fp: stat.append(line.lstrip()) - last = stat.pop() - stat.insert(0, last) - stat = ''.join(stat) - return stat - except: raise - finally: - try: os.unlink(name) - except: pass + output = util.filter('\n'.join(patchlines), + 'diffstat -p1 -w79 2>%s' % util.nulldev) + stat = [l.lstrip() for l in output.splitlines(True)] + last = stat.pop() + stat.insert(0, last) + stat = ''.join(stat) + return stat