summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2003-07-22 02:50:01 (GMT)
committerTim Peters <tim.peters@gmail.com>2003-07-22 02:50:01 (GMT)
commit291f14e3d386714ea937489e1863bed7f818a970 (patch)
treef2b38ea809507e844dfded6ccde43e328470eaa7
parentf1c9869ab016f041d2ae9e63b1e17983cc8a2826 (diff)
downloadcpython-291f14e3d386714ea937489e1863bed7f818a970.zip
cpython-291f14e3d386714ea937489e1863bed7f818a970.tar.gz
cpython-291f14e3d386714ea937489e1863bed7f818a970.tar.bz2
Windows fix: When PYTHONCASEOK is set, or for any other reason imports
are satisfied in a case-insensitive manner, the attempt to import (the non-existent) fcntl gets satisfied by FCNTL.py instead, and the tempfile module defines a Unix-specific _set_cloexec() function in that case. As a result, temp files can't be created then (blows up with an AttributeError trying to reference fcntl.fcntl). This just popped up in the spambayes project, where there is no apparent workaround (which is why I'm pushing this in now).
-rw-r--r--Lib/tempfile.py12
-rw-r--r--Misc/NEWS3
2 files changed, 12 insertions, 3 deletions
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 3682180..756d8c8 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -38,15 +38,21 @@ if _os.name == 'mac':
try:
import fcntl as _fcntl
+ # If PYTHONCASEOK is set on Windows, stinking FCNTL.py gets
+ # imported, and we don't get an ImportError then. Provoke
+ # an AttributeError instead in that case.
+ _fcntl.fcntl
+except (ImportError, AttributeError):
+ def _set_cloexec(fd):
+ pass
+else:
def _set_cloexec(fd):
flags = _fcntl.fcntl(fd, _fcntl.F_GETFD, 0)
if flags >= 0:
# flags read successfully, modify
flags |= _fcntl.FD_CLOEXEC
_fcntl.fcntl(fd, _fcntl.F_SETFD, flags)
-except (ImportError, AttributeError):
- def _set_cloexec(fd):
- pass
+
try:
import thread as _thread
diff --git a/Misc/NEWS b/Misc/NEWS
index ce7aba2..7ba1218 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -39,6 +39,9 @@ C API
Windows
-------
+- The tempfile module could do insane imports on Windows if PYTHONCASEOK
+ was set, making temp file creation impossible. Repaired.
+
Mac
---