From f4aaf862fd3f29cc6a3409186dc2f7421ca0ba89 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 28 May 1996 23:31:34 +0000 Subject: [PATCH] Be more careful about default temp dir --- Lib/tempfile.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Lib/tempfile.py b/Lib/tempfile.py index db750d4a6e1..f95920d5a4a 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -17,16 +17,26 @@ # Function to calculate the directory to use def gettempdir(): - global tempdir - if tempdir == None: - try: - tempdir = os.environ['TMPDIR'] - except (KeyError, AttributeError): - if os.name == 'posix': - tempdir = '/usr/tmp' # XXX Why not /tmp? - else: - tempdir = os.getcwd() # XXX Is this OK? - return tempdir + global tempdir + attempdirs = ['/usr/tmp', '/tmp', os.getcwd(), os.curdir] + if os.environ.has_key('TMPDIR'): + attempdirs.insert(0, os.environ['TMPDIR']) + testfile = gettempprefix() + '-*-writetest-*-' + 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 + break + except IOError: + pass + if tempdir is None: + msg = "Can't find a usable temporary directory amongst " + `attempdirs` + raise IOError, msg + return tempdir # Function to calculate a prefix of the filename to use