Improvements to copyfile(): open the files in binary mode, and close
them in a finally clause.
diff --git a/Lib/shutil.py b/Lib/shutil.py
index dba4ee1..1a5a6f1 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -1,4 +1,5 @@
 # Module 'shutil' -- utility functions usable in a shell-like program
+# XXX The copy*() functions here don't copy the data fork on Mac
 
 import os
 
@@ -8,12 +9,21 @@
 # Copy data from src to dst
 #
 def copyfile(src, dst):
-	fsrc = open(src, 'r')
-	fdst = open(dst, 'w')
-	while 1:
-		buf = fsrc.read(16*1024)
-		if not buf: break
-		fdst.write(buf)
+	fsrc = None
+	fdst = None
+	try:
+		fsrc = open(src, 'rb')
+		fdst = open(dst, 'wb')
+		while 1:
+			buf = fsrc.read(16*1024)
+			if not buf:
+				break
+			fdst.write(buf)
+	finally:
+		if fdst:
+			fdst.close()
+		if fsrc:
+			fsrc.close()
 
 # Copy mode bits from src to dst
 #