- if os.path.exists(os.path.join(tmpdir, messagename)):
- time.sleep(2)
- attempts += 1
- else:
- break
- tmpmessagename = messagename.split(',')[0]
- ui.debug('maildir', 'savemessage: using temporary name %s' % tmpmessagename)
- file = open(os.path.join(tmpdir, tmpmessagename), "wt")
+ tmpmessagename = messagename.split(',')[0]
+ try:
+ fd = os.open(os.path.join(tmpdir, tmpmessagename),
+ os.O_WRONLY + os.O_CREAT + os.O_EXCL)
+ file = os.fdopen(fd, 'w')
+ ui.debug('maildir', 'savemessage: using temporary name %s' % tmpmessagename)
+ except OSError, e:
+ if e.errno == 17:
+ time.sleep(2)
+ attempts += 1
+ continue
+ raise
+