Skip to content
Snippets Groups Projects
Commit 234e4c24b980 authored by Gregory Szorc's avatar Gregory Szorc
Browse files

platform: implement readpipe()

Reading all available data from a pipe has a platform-dependent
implementation.

This patch establishes platform.readpipe() by copying the
inline implementation in sshpeer.readerr(). The implementations
for POSIX and Windows are currently identical. The POSIX
implementation will be changed in a subsequent patch.
parent 172036d60b22
No related branches found
No related tags found
No related merge requests found
......@@ -567,3 +567,16 @@
def statisexec(st):
'''check whether a stat result is an executable file'''
return st and (st.st_mode & 0100 != 0)
def readpipe(pipe):
"""Read all available data from a pipe."""
chunks = []
while True:
size = os.fstat(pipe.fileno()).st_size
if not size:
break
s = pipe.read(size)
if not s:
break
chunks.append(s)
......@@ -103,13 +103,8 @@
return self._caps
def readerr(self):
while True:
size = util.fstat(self.pipee).st_size
if size == 0:
break
s = self.pipee.read(size)
if not s:
break
s = util.readpipe(self.pipee)
if s:
for l in s.splitlines():
self.ui.status(_("remote: "), l, '\n')
......
......@@ -53,6 +53,7 @@
popen = platform.popen
posixfile = platform.posixfile
quotecommand = platform.quotecommand
readpipe = platform.readpipe
rename = platform.rename
samedevice = platform.samedevice
samefile = platform.samefile
......
......@@ -336,3 +336,18 @@
def statisexec(st):
'''check whether a stat result is an executable file'''
return False
def readpipe(pipe):
"""Read all available data from a pipe."""
chunks = []
while True:
size = os.fstat(pipe.fileno()).st_size
if not size:
break
s = pipe.read(size)
if not s:
break
chunks.append(s)
return ''.join(chunks)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment