Get mailbox module working on OS/2 EMX port.
This commit is contained in:
parent
82247cb7d1
commit
afa358fabf
|
@ -15,6 +15,9 @@ import email.Generator
|
|||
import rfc822
|
||||
import StringIO
|
||||
try:
|
||||
if sys.platform == 'os2emx':
|
||||
# OS/2 EMX fcntl() not adequate
|
||||
raise ImportError
|
||||
import fcntl
|
||||
except ImportError:
|
||||
fcntl = None
|
||||
|
@ -565,7 +568,8 @@ class _singlefileMailbox(Mailbox):
|
|||
try:
|
||||
os.rename(new_file.name, self._path)
|
||||
except OSError, e:
|
||||
if e.errno == errno.EEXIST:
|
||||
if e.errno == errno.EEXIST or \
|
||||
(os.name == 'os2' and e.errno == errno.EACCES):
|
||||
os.remove(self._path)
|
||||
os.rename(new_file.name, self._path)
|
||||
else:
|
||||
|
@ -1030,6 +1034,9 @@ class MH(Mailbox):
|
|||
if hasattr(os, 'link'):
|
||||
os.link(os.path.join(self._path, str(key)),
|
||||
os.path.join(self._path, str(prev + 1)))
|
||||
if sys.platform == 'os2emx':
|
||||
# cannot unlink an open file on OS/2
|
||||
f.close()
|
||||
os.unlink(os.path.join(self._path, str(key)))
|
||||
else:
|
||||
f.close()
|
||||
|
@ -1828,7 +1835,8 @@ def _lock_file(f, dotlock=True):
|
|||
os.rename(pre_lock.name, f.name + '.lock')
|
||||
dotlock_done = True
|
||||
except OSError, e:
|
||||
if e.errno == errno.EEXIST:
|
||||
if e.errno == errno.EEXIST or \
|
||||
(os.name == 'os2' and e.errno == errno.EACCES):
|
||||
os.remove(pre_lock.name)
|
||||
raise ExternalClashError('dot lock unavailable: %s' %
|
||||
f.name)
|
||||
|
|
|
@ -461,7 +461,7 @@ class TestMaildir(TestMailbox):
|
|||
|
||||
def setUp(self):
|
||||
TestMailbox.setUp(self)
|
||||
if os.name == 'nt':
|
||||
if os.name in ('nt', 'os2'):
|
||||
self._box.colon = '!'
|
||||
|
||||
def test_add_MM(self):
|
||||
|
@ -520,7 +520,7 @@ class TestMaildir(TestMailbox):
|
|||
# Initialize an existing mailbox
|
||||
self.tearDown()
|
||||
for subdir in '', 'tmp', 'new', 'cur':
|
||||
os.mkdir(os.path.join(self._path, subdir))
|
||||
os.mkdir(os.path.normpath(os.path.join(self._path, subdir)))
|
||||
self._box = mailbox.Maildir(self._path)
|
||||
self._check_basics(factory=rfc822.Message)
|
||||
self._box = mailbox.Maildir(self._path, factory=None)
|
||||
|
|
Loading…
Reference in New Issue