1.1 --- a/lib/posix/io.py Wed Dec 07 17:24:39 2016 +0100
1.2 +++ b/lib/posix/io.py Wed Dec 07 17:37:00 2016 +0100
1.3 @@ -51,18 +51,41 @@
1.4
1.5 "A system-level stream object."
1.6
1.7 - def __init__(self, fd, mode="r"):
1.8 + def __init__(self, fd, mode="r", bufsize=1024):
1.9
1.10 "Initialise the stream with the given 'fd' and 'mode'."
1.11
1.12 self.__data__ = fdopen(fd, mode)
1.13 + self.bufsize = bufsize
1.14
1.15 - def read(self, n):
1.16 + def read(self, n=0):
1.17
1.18 "Read 'n' bytes from the stream."
1.19
1.20 _check_int(n)
1.21 - return native._fread(self.__data__, n)
1.22 +
1.23 + # Read any indicated number of bytes.
1.24 +
1.25 + if n > 0:
1.26 + return native._fread(self.__data__, n)
1.27 +
1.28 + # Read all remaining bytes.
1.29 +
1.30 + else:
1.31 + l = []
1.32 +
1.33 + # Read until end-of-file.
1.34 +
1.35 + try:
1.36 + while True:
1.37 + l.append(native._fread(self.__data__, self.bufsize))
1.38 +
1.39 + # Handle end-of-file reads.
1.40 +
1.41 + except EOFError:
1.42 + pass
1.43 +
1.44 + return "".join(l)
1.45
1.46 def write(self, s):
1.47