added read/writelines, bufsize to makefile, gethostbyaddr
diff --git a/Mac/Unsupported/mactcp/socket.py b/Mac/Unsupported/mactcp/socket.py
index e1ef0ac..c6f817d 100644
--- a/Mac/Unsupported/mactcp/socket.py
+++ b/Mac/Unsupported/mactcp/socket.py
@@ -54,6 +54,15 @@
 	return macdnr.AddrToStr(id)
 
 
+def gethostbyaddr(str):
+	id = _ipaddress(str)
+	ptr = macdnr.AddrToName(id)
+	ptr.wait()
+	name = ptr.cname
+	if name[-1:] == '.': name = name[:-1]
+	names, addresses = [], [str]
+	return name, names, addresses
+
 def gethostname():
 	global _myname
 	if _myname == None:
@@ -164,8 +173,8 @@
 		self.stream.PassiveOpen(self.port)
 		self.listening = 1
 		
-	def makefile(self, rw = 'r'):
-		return _socketfile(self, rw)
+	def makefile(self, rw = 'r', bs = 512):
+		return _socketfile(self, rw, bs)
 		
 	def recv(self, bufsize, flags=0):
 		if flags:
@@ -206,14 +215,15 @@
 
 class _socketfile:
 	
-	def __init__(self, sock, rw):
+	def __init__(self, sock, rw, bs):
 		if rw not in ('r', 'w'): raise _myerror, "mode must be 'r' or 'w'"
 		self.sock = sock
 		self.rw = rw
+		self.bs = bs
 		self.buf = ''
 		
-	def read(self, length = 0):
-		if length <= 0:
+	def read(self, length = -1):
+		if length < 0:
 			length = 0x7fffffff
 		while len(self.buf) < length:
 			new = self.sock.recv(0x7fffffff)
@@ -240,8 +250,16 @@
 			self.buf = self.buf[i+1:]
 		return rv
 		
+	def readlines(self):
+		list = []
+		line = self.readline()
+		while line:
+			list.append(line)
+			line = self.readline()
+		return list
+		
 	def write(self, buf):
-		BS = 512
+		BS = self.bs
 		if len(buf) >= BS:
 			self.flush()
 			self.sock.send(buf)
@@ -250,7 +268,11 @@
 			self.buf = buf
 		else:
 			self.buf = self.buf + buf
-		
+	
+	def writelines(self, list):
+		for line in list:
+			self.write(line)
+	
 	def flush(self):
 		if self.buf and self.rw == 'w':
 			self.sock.send(self.buf)