patch: rewrite diffstat with util.filter()
authorPatrick Mezard <pmezard@gmail.com>
Mon, 27 Oct 2008 22:57:55 +0100
changeset 7267 6a51ca1e05c3
parent 7266 e7f6401584f7
child 7268 e05092a3c2fe
patch: rewrite diffstat with util.filter() Simpler and works under Windows.
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