1. Correct typo in FileWrapper.close() (fix by AMK).
2. New trusted built-in modules cmath, errno, operator, parser.
3. Corrected bogus s_apply() -- the new one actually works (reported by AMK).
diff --git a/Lib/rexec.py b/Lib/rexec.py
index 860aab2..76e8b40 100644
--- a/Lib/rexec.py
+++ b/Lib/rexec.py
@@ -41,7 +41,7 @@
 			if not hasattr(self, m):
 				setattr(self, m, getattr(f, m))
 	
-	def close(f):
+	def close(self):
 		self.flush()
 
 
@@ -131,9 +131,10 @@
 
     ok_path = tuple(sys.path)		# That's a policy decision
 
-    ok_builtin_modules = ('array', 'binascii', 'audioop', 'imageop',
-			  'marshal', 'math',
-			  'md5', 'parser', 'regex', 'rotor', 'select',
+    ok_builtin_modules = ('audioop', 'array', 'binascii',
+			  'cmath', 'errno', 'imageop',
+			  'marshal', 'math', 'md5', 'operator',
+			  'parser', 'regex', 'rotor', 'select',
 			  'strop', 'struct', 'time')
 
     ok_posix_names = ('error', 'fstat', 'listdir', 'lstat', 'readlink',
@@ -320,11 +321,14 @@
 	sys.stdout = self.save_stdout
 	sys.stderr = self.save_stderr
     
-    def s_apply(self, func, *args, **kw):
+    def s_apply(self, func, args=(), kw=None):
 	self.save_files()
 	try:
 	    self.set_files()
-	    r = apply(func, args, kw)
+	    if kw:
+		r = apply(func, args, kw)
+	    else:
+		r = apply(func, args)
         finally:
 	    self.restore_files()