home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 1.5)
-
- import os
- tempdir = None
- template = None
-
- def gettempdir():
- global tempdir
- if tempdir is not None:
- return tempdir
-
-
- try:
- pwd = os.getcwd()
- except (AttributeError, os.error):
- pwd = os.curdir
-
- attempdirs = [
- '/usr/tmp',
- '/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
-
-
- for envname in ('TMPDIR', 'TEMP', 'TMP'):
- pass
-
- testfile = gettempprefix() + 'test'
- for dir in attempdirs:
-
- try:
- filename = os.path.join(dir, testfile)
- fp = open(filename, 'w')
- fp.write('blat')
- fp.close()
- os.unlink(filename)
- tempdir = dir
- except IOError:
- 0
- 0
- attempdirs
- except:
- None if os.environ.has_key(envname) else ('TMPDIR', 'TEMP', 'TMP')
-
-
- if tempdir is None:
- msg = "Can't find a usable temporary directory amongst " + `attempdirs`
- raise IOError, msg
-
- return tempdir
-
- _pid = None
-
- def gettempprefix():
- global template, _pid, template, template, template, template
- if os.name == 'posix' and _pid and _pid != os.getpid():
- template = None
-
- if template is None:
- if os.name == 'posix':
- _pid = os.getpid()
- template = '@' + `_pid` + '.'
- elif os.name == 'nt':
- template = '~' + `os.getpid()` + '-'
- elif os.name == 'mac':
- template = 'Python-Tmp-'
- else:
- template = 'tmp'
-
- return template
-
- counter = 0
-
- def mktemp(suffix = ''):
- global counter
- dir = gettempdir()
- pre = gettempprefix()
- while 1:
- counter = counter + 1
- file = os.path.join(dir, pre + `counter` + suffix)
- if not os.path.exists(file):
- return file
-
-
-
- class TemporaryFileWrapper:
- '''Temporary file wrapper
-
- This class provides a wrapper around files opened for temporary use.
- In particular, it seeks to automatically remove the file when it is
- no longer needed.
- '''
-
- def __init__(self, file, path):
- self.file = file
- self.path = path
-
-
- def close(self):
- self.file.close()
- os.unlink(self.path)
-
-
- def __del__(self):
-
- try:
- self.close()
- except:
- pass
-
-
-
- def __getattr__(self, name):
- file = self.__dict__['file']
- a = getattr(file, name)
- 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)
-
-