From: R. David Murray Date: Thu, 3 Mar 2011 18:12:34 +0000 (+0000) Subject: Merged revisions 88730 via svnmerge from X-Git-Tag: v3.2.1b1~351 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=752b950e6b4d1f6f5d94d99050f30a128e44a1d6;p=python Merged revisions 88730 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r88730 | r.david.murray | 2011-03-03 13:03:36 -0500 (Thu, 03 Mar 2011) | 2 lines #11306: Treat EROFS like EACCES when making a 'file is read-only' decision ........ --- diff --git a/Lib/mailbox.py b/Lib/mailbox.py index 2a0d321c94..ace17092b8 100644 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -578,7 +578,7 @@ class _singlefileMailbox(Mailbox): f = open(self._path, 'wb+') else: raise NoSuchMailboxError(self._path) - elif e.errno == errno.EACCES: + elif e.errno in (errno.EACCES, errno.EROFS): f = open(self._path, 'rb') else: raise @@ -2002,7 +2002,7 @@ def _lock_file(f, dotlock=True): try: fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB) except IOError as e: - if e.errno in (errno.EAGAIN, errno.EACCES): + if e.errno in (errno.EAGAIN, errno.EACCES, errno.EROFS): raise ExternalClashError('lockf: lock unavailable: %s' % f.name) else: @@ -2012,7 +2012,7 @@ def _lock_file(f, dotlock=True): pre_lock = _create_temporary(f.name + '.lock') pre_lock.close() except IOError as e: - if e.errno == errno.EACCES: + if e.errno in (errno.EACCES, errno.EROFS): return # Without write access, just skip dotlocking. else: raise diff --git a/Misc/NEWS b/Misc/NEWS index d5512f26c0..1e2a14f438 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -28,6 +28,10 @@ Core and Builtins Library ------- +- Issue #11306: mailbox in certain cases adapts to an inability to open + certain files in read-write mode. Previously it detected this by + checking for EACCES, now it also checks for EROFS. + - Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors on accept(), send() and recv().