summaryrefslogtreecommitdiffstats
path: root/Lib/os.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/os.py')
-rw-r--r--Lib/os.py248
1 files changed, 131 insertions, 117 deletions
diff --git a/Lib/os.py b/Lib/os.py
index 2776cd7..6f7e3ed 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -24,151 +24,165 @@ _names = sys.builtin_module_names
altsep = None
if 'posix' in _names:
- name = 'posix'
- curdir = '.'; pardir = '..'; sep = '/'; pathsep = ':'
- defpath = ':/bin:/usr/bin'
- from posix import *
- try:
- from posix import _exit
- except ImportError:
- pass
- import posixpath
- path = posixpath
- del posixpath
+ name = 'posix'
+ curdir = '.'; pardir = '..'; sep = '/'; pathsep = ':'
+ defpath = ':/bin:/usr/bin'
+ from posix import *
+ try:
+ from posix import _exit
+ except ImportError:
+ pass
+ import posixpath
+ path = posixpath
+ del posixpath
elif 'nt' in _names:
- name = 'nt'
- curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';'
- defpath = '.;C:\\bin'
- from nt import *
- try:
- from nt import _exit
- except ImportError:
- pass
- import ntpath
- path = ntpath
- del ntpath
+ name = 'nt'
+ curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';'
+ defpath = '.;C:\\bin'
+ from nt import *
+ try:
+ from nt import _exit
+ except ImportError:
+ pass
+ import ntpath
+ path = ntpath
+ del ntpath
elif 'dos' in _names:
- name = 'dos'
- curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';'
- defpath = '.;C:\\bin'
- from dos import *
- try:
- from dos import _exit
- except ImportError:
- pass
- import dospath
- path = dospath
- del dospath
+ name = 'dos'
+ curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';'
+ defpath = '.;C:\\bin'
+ from dos import *
+ try:
+ from dos import _exit
+ except ImportError:
+ pass
+ import dospath
+ path = dospath
+ del dospath
elif 'os2' in _names:
- name = 'os2'
- curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';'
- defpath = '.;C:\\bin'
- from os2 import *
- try:
- from os2 import _exit
- except ImportError:
- pass
- import ntpath
- path = ntpath
- del ntpath
+ name = 'os2'
+ curdir = '.'; pardir = '..'; sep = '\\'; pathsep = ';'
+ defpath = '.;C:\\bin'
+ from os2 import *
+ try:
+ from os2 import _exit
+ except ImportError:
+ pass
+ import ntpath
+ path = ntpath
+ del ntpath
elif 'mac' in _names:
- name = 'mac'
- curdir = ':'; pardir = '::'; sep = ':'; pathsep = '\n'
- defpath = ':'
- from mac import *
- try:
- from mac import _exit
- except ImportError:
- pass
- import macpath
- path = macpath
- del macpath
+ name = 'mac'
+ curdir = ':'; pardir = '::'; sep = ':'; pathsep = '\n'
+ defpath = ':'
+ from mac import *
+ try:
+ from mac import _exit
+ except ImportError:
+ pass
+ import macpath
+ path = macpath
+ del macpath
else:
- raise ImportError, 'no os specific module found'
+ raise ImportError, 'no os specific module found'
del _names
# Make sure os.environ exists, at least
try:
- environ
+ environ
except NameError:
- environ = {}
+ environ = {}
def execl(file, *args):
- execv(file, args)
+ execv(file, args)
def execle(file, *args):
- env = args[-1]
- execve(file, args[:-1], env)
+ env = args[-1]
+ execve(file, args[:-1], env)
def execlp(file, *args):
- execvp(file, args)
+ execvp(file, args)
def execlpe(file, *args):
- env = args[-1]
- execvpe(file, args[:-1], env)
+ env = args[-1]
+ execvpe(file, args[:-1], env)
def execvp(file, args):
- _execvpe(file, args)
+ _execvpe(file, args)
def execvpe(file, args, env):
- _execvpe(file, args, env)
+ _execvpe(file, args, env)
_notfound = None
def _execvpe(file, args, env = None):
- if env:
- func = execve
- argrest = (args, env)
- else:
- func = execv
- argrest = (args,)
- env = environ
- global _notfound
- head, tail = path.split(file)
- if head:
- apply(func, (file,) + argrest)
- return
- if env.has_key('PATH'):
- envpath = env['PATH']
- else:
- envpath = defpath
- import string
- PATH = string.splitfields(envpath, pathsep)
- if not _notfound:
- import tempfile
- # Exec a file that is guaranteed not to exist
- try: execv(tempfile.mktemp(), ())
- except error, _notfound: pass
- exc, arg = error, _notfound
- for dir in PATH:
- fullname = path.join(dir, file)
- try:
- apply(func, (fullname,) + argrest)
- except error, (errno, msg):
- if errno != arg[0]:
- exc, arg = error, (errno, msg)
- raise exc, arg
+ if env:
+ func = execve
+ argrest = (args, env)
+ else:
+ func = execv
+ argrest = (args,)
+ env = environ
+ global _notfound
+ head, tail = path.split(file)
+ if head:
+ apply(func, (file,) + argrest)
+ return
+ if env.has_key('PATH'):
+ envpath = env['PATH']
+ else:
+ envpath = defpath
+ import string
+ PATH = string.splitfields(envpath, pathsep)
+ if not _notfound:
+ import tempfile
+ # Exec a file that is guaranteed not to exist
+ try: execv(tempfile.mktemp(), ())
+ except error, _notfound: pass
+ exc, arg = error, _notfound
+ for dir in PATH:
+ fullname = path.join(dir, file)
+ try:
+ apply(func, (fullname,) + argrest)
+ except error, (errno, msg):
+ if errno != arg[0]:
+ exc, arg = error, (errno, msg)
+ raise exc, arg
# Change environ to automatically call putenv() if it exists
try:
- # This will fail if there's no putenv
- putenv
+ # This will fail if there's no putenv
+ putenv
except NameError:
- pass
+ pass
else:
- import UserDict
-
- class _Environ(UserDict.UserDict):
- def __init__(self, environ):
- UserDict.UserDict.__init__(self)
- self.data = environ
- def __getinitargs__(self):
- import copy
- return (copy.copy(self.data),)
- def __setitem__(self, key, item):
- putenv(key, item)
- self.data[key] = item
- def __copy__(self):
- return _Environ(self.data.copy())
-
- environ = _Environ(environ)
+ import UserDict
+
+ if name in ('os2', ): # Where Env Var Names Must Be UPPERCASE
+ import string
+ class _Environ(UserDict.UserDict):
+ def __init__(self, environ):
+ UserDict.UserDict.__init__(self)
+ self.data = environ
+ def __setitem__(self, key, item):
+ key = string.upper(key)
+ putenv(key, item)
+ self.data[key] = item
+ def __getitem__(self, key):
+ return self.data[string.upper(key)]
+
+ else: # Where Env Var Names Can Be Mixed Case
+ class _Environ(UserDict.UserDict):
+ def __init__(self, environ):
+ UserDict.UserDict.__init__(self)
+ self.data = environ
+ def __getinitargs__(self):
+ import copy
+ return (copy.copy(self.data),)
+ def __setitem__(self, key, item):
+ putenv(key, item)
+ self.data[key] = item
+ def __copy__(self):
+ return _Environ(self.data.copy())
+
+ environ = _Environ(environ)