Petri Lehtinen <pe...@digip.org> added the comment:

I looked at the source code of mutt to see how it rewrites mbox files. It does 
roughly this:

1. Block some signals.

2. Lock the mbox file (with dotlock, fcntl and flock).

3. Create a temporary file in /tmp.

4. Write messages to the temporary file, from the point where the first change 
is up to the end of the mbox file. This saves a lot of writing when the first 
change is near the end of the file.

5. Write changes from the temporary file to the mbox file, modifying the mbox 
file in-place.

6. Truncate the mbox file to the correct length.

7. Unblock signals.

If writing the changes back to the mbox file fails, the temporary file is 
copied from /tmp to near the mbox file.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15122>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to