evolution
diff --git a/Lib/rexec.py b/Lib/rexec.py
index 0e6ba20..cc908a3 100644
--- a/Lib/rexec.py
+++ b/Lib/rexec.py
@@ -25,7 +25,6 @@
 safe_path = ['/ufs/guido/lib/python']
 safe_modules = ['array', 'math', 'regex', 'strop', 'time']
 unsafe_builtin_names = ['open', 'reload', '__import__',
-			'eval', 'execfile', 'dir', 'vars',
 			'raw_input', 'input']
 safe_posix_names = ['error', 'fstat', 'listdir', 'lstat', 'readlink', 'stat',
 		    'times', 'uname', 'getpid', 'getppid', 'getcwd',
@@ -87,24 +86,13 @@
 		raise TypeError, 'open argument(s) must be string(s)'
 	if mode not in ('r', 'rb'):
 		raise IOError, 'open for writing not allowed'
-	if '/' in file:
-		raise IOError, 'open pathname not allowed'
+	file = os.path.join(os.getcwd(), file)
+	file = os.path.normpath(file)
+	if file[:2] == '//' or file[:5] == '/etc/' or file[:4] == '/../':
+		raise IOError, 'this path not allowed for reading'
 	return open(file, mode)
 safe_builtin.open = safe_open
 
-def safe_dir(object = safe_main):
-	keys = object.__dict__.keys()
-	keys.sort()
-	return keys
-safe_builtin.dir = safe_dir
-
-def safe_vars(object = safe_main):
-	keys = safe_dir(object)
-	dict = {}
-	copydict(object.__dict__, dict, None, keys)
-	return dict
-safe_builtin.vars = safe_vars
-
 
 def exterior():
 	"""Return env of caller's caller, as triple: (name, locals, globals).