Browse Source

Fix use of SubprocessWrapper on Windows.

Jelmer Vernooij 13 năm trước cách đây
mục cha
commit
d118a8fa1d
2 tập tin đã thay đổi với 10 bổ sung1 xóa
  1. 2 0
      NEWS
  2. 8 1
      dulwich/client.py

+ 2 - 0
NEWS

@@ -6,6 +6,8 @@
 
   * Improve performance of Repo.revision_history(). (Timo Schmid, #535118)
 
+  * Fix use of SubprocessWrapper on Windows. (Paulo Madeira, #670035)
+
 0.7.1	2011-04-12
 
  BUG FIXES

+ 8 - 1
dulwich/client.py

@@ -23,6 +23,7 @@ __docformat__ = 'restructuredText'
 
 import select
 import socket
+import subprocess
 import urlparse
 
 from dulwich.errors import (
@@ -314,7 +315,13 @@ class SubprocessWrapper(object):
         self.write = proc.stdin.write
 
     def can_read(self):
-        return _fileno_can_read(self.proc.stdout.fileno())
+        if subprocess.mswindows:
+            from msvcrt import get_osfhandle
+            from win32pipe import PeekNamedPipe
+            handle = get_osfhandle(self.proc.stdout.fileno())
+            return PeekNamedPipe(handle, 0)[2] != 0
+        else:
+            return _fileno_can_read(self.proc.stdout.fileno())
 
     def close(self):
         self.proc.stdin.close()