home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.2)
-
- import os
- __all__ = [
- 'mktemp',
- 'TemporaryFile',
- 'tempdir',
- 'gettempprefix']
- tempdir = None
- template = None
-
- def gettempdir():
- if tempdir is not None:
- return tempdir
-
- _tempdir_lock.acquire()
-
- try:
- return _gettempdir_inner()
- finally:
- _tempdir_lock.release()
-
-
-
- def _gettempdir_inner():
- global tempdir, tempdir
- if tempdir is not None:
- return tempdir
-
-
- try:
- pwd = os.getcwd()
- except (AttributeError, os.error):
- pwd = os.curdir
-
- attempdirs = [
- '/tmp',
- '/var/tmp',
- '/usr/tmp',
- pwd]
- if os.name == 'nt':
- attempdirs.insert(0, 'C:\\TEMP')
- attempdirs.insert(0, '\\TEMP')
- elif os.name == 'mac':
- import macfs
- import MACFS
-
- try:
- (refnum, dirid) = macfs.FindFolder(MACFS.kOnSystemDisk, MACFS.kTemporaryFolderType, 1)
- dirname = macfs.FSSpec((refnum, dirid, '')).as_pathname()
- attempdirs.insert(0, dirname)
- except macfs.error:
- pass
-
- elif os.name == 'riscos':
- scrapdir = os.getenv('Wimp$ScrapDir')
- if scrapdir:
- attempdirs.insert(0, scrapdir)
-
-
- for envname in ('TMPDIR', 'TEMP', 'TMP'):
- if os.environ.has_key(envname):
- attempdirs.insert(0, os.environ[envname])
-
-
- testfile = gettempprefix() + 'test'
- for dir in attempdirs:
-
- try:
- filename = os.path.join(dir, testfile)
- if os.name == 'posix':
-
- try:
- fd = os.open(filename, os.O_RDWR | os.O_CREAT | os.O_EXCL, 448)
- except OSError:
- pass
-
- fp = os.fdopen(fd, 'w')
- fp.write('blat')
- fp.close()
- os.unlink(filename)
- del fp
- del fd
- tempdir = dir
- break
- else:
- fp = open(filename, 'w')
- fp.write('blat')
- fp.close()
- os.unlink(filename)
- tempdir = dir
- except IOError:
- pass
-
-
- if tempdir is None:
- msg = "Can't find a usable temporary directory amongst " + `attempdirs`
- raise IOError, msg
-
- return tempdir
-
- if os.name == 'posix':
- template = None
- elif os.name == 'nt':
- template = '~' + `os.getpid()` + '-'
- elif os.name in ('mac', 'riscos'):
- template = 'Python-Tmp-'
- else:
- template = 'tmp'
-
- def gettempprefix():
- if template is None:
- return '@' + `os.getpid()` + '.'
- else:
- return template
-
-
- def mktemp(suffix = ''):
- dir = gettempdir()
- pre = gettempprefix()
- while 1:
- i = _counter.get_next()
- file = os.path.join(dir, pre + str(i) + suffix)
- if not os.path.exists(file):
- return file
-
-
-
- class TemporaryFileWrapper:
- unlink = os.unlink
-
- def __init__(self, file, path):
- self.file = file
- self.path = path
- self.close_called = 0
-
-
- def close(self):
- if not (self.close_called):
- self.close_called = 1
- self.file.close()
- self.unlink(self.path)
-
-
-
- def __del__(self):
- self.close()
-
-
- def __getattr__(self, name):
- file = self.__dict__['file']
- a = getattr(file, name)
- if type(a) != type(0):
- setattr(self, name, a)
-
- return a
-
-
-
- def TemporaryFile(mode = 'w+b', bufsize = -1, suffix = ''):
- name = mktemp(suffix)
- if os.name == 'posix':
- fd = os.open(name, os.O_RDWR | os.O_CREAT | os.O_EXCL, 448)
-
- try:
- os.unlink(name)
- return os.fdopen(fd, mode, bufsize)
- except:
- os.close(fd)
- raise
-
- else:
- file = open(name, mode, bufsize)
- return TemporaryFileWrapper(file, name)
-
-
- class _ThreadSafeCounter:
-
- def __init__(self, mutex, initialvalue = 0):
- self.mutex = mutex
- self.i = initialvalue
-
-
- def get_next(self):
- self.mutex.acquire()
- result = self.i
-
- try:
- newi = result + 1
- except OverflowError:
- newi = long(result) + 1
-
- self.i = newi
- self.mutex.release()
- return result
-
-
-
- try:
- import thread
- except ImportError:
-
- class _DummyMutex:
-
- def acquire(self):
- pass
-
- release = acquire
-
- _counter = _ThreadSafeCounter(_DummyMutex())
- _tempdir_lock = _DummyMutex()
- del _DummyMutex
-
- _counter = _ThreadSafeCounter(thread.allocate_lock())
- _tempdir_lock = thread.allocate_lock()
- del thread
- del _ThreadSafeCounter
-