home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-01-05 | 2.0 KB | 81 lines | [TEXT/????] |
- # os.py -- either mac, dos or posix depending on what system we're on.
-
- # This exports:
- # - all functions from either posix or mac, e.g., os.unlink, os.stat, etc.
- # - os.path is either module posixpath or macpath
- # - os.name is either 'posix' or 'mac'
- # - os.curdir is a string representing the current directory ('.' or ':')
- # - os.pardir is a string representing the parent directory ('..' or '::')
- # - os.sep is the (or a most common) pathname separator ('/' or ':')
-
- # Programs that import and use 'os' stand a better chance of being
- # portable between different platforms. Of course, they must then
- # only use functions that are defined by all platforms (e.g., unlink
- # and opendir), and leave all pathname manipulation to os.path
- # (e.g., split and join).
-
- # XXX This is incorrect if the import *path fails...
-
- try:
- from posix import *
- try:
- from posix import _exit
- except ImportError:
- pass
- name = 'posix'
- curdir = '.'
- pardir = '..'
- sep = '/'
- import posixpath
- path = posixpath
- del posixpath
- except ImportError:
- try:
- from mac import *
- name = 'mac'
- curdir = ':'
- pardir = '::'
- sep = ':'
- import macpath
- path = macpath
- del macpath
- except ImportError:
- from dos import *
- name = 'dos'
- curdir = '.' # XXX doesn't always work
- pardir = '..' # XXX doesn't always work
- sep = '/' # XXX or '\\' ???
- import dospath
- path = dospath
- del dospath
-
- def execl(file, *args):
- execv(file, args)
-
- def execle(file, *args):
- env = args[-1]
- execve(file, args[:-1], env)
-
- def execlp(file, *args):
- execvp(file, args)
-
- def execvp(file, args):
- if '/' in file:
- execv(file, args)
- return
- ENOENT = 2
- if environ.has_key('PATH'):
- import string
- PATH = string.splitfields(environ['PATH'], ':')
- else:
- PATH = ['', '/bin', '/usr/bin']
- exc, arg = (ENOENT, 'No such file or directory')
- for dir in PATH:
- fullname = path.join(dir, file)
- try:
- execv(fullname, args)
- except error, (errno, msg):
- if errno != ENOENT:
- exc, arg = error, (errno, msg)
- raise exc, arg
-