[Python-Dev] Why do we flush before truncating? (original) (raw)

Neil Schemenauer nas-python at python.ca
Sat Sep 6 12:23:40 EDT 2003


On Sat, Sep 06, 2003 at 01:11:14PM -0400, Tim Peters wrote:

I don't understand why we're flushing the file. ftruncate() isn't a standard C function, so the standard sheds no light on why we might be doing that.

The fflush call as been there forever. The truncate method was added in 2.36 by Guido. I think the code was actually from Jim Roskind:

http://groups.google.com/groups?selm=199412070213.SAA06932%40infoseek.com

He says:

Note that since the underlying ftruncate operates on a file descriptor (believe it or not), it was necessary to fflush() the stream before performing the truncate. I thought about doing a seek() as well, but could not find compelling reason to move the stream pointer.

That still gives me no clue as to why the fflush() was deemed necessary. I found this posting:

http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=35E0DB62.1BDD2D30%40taraz.kz&rnum=1

but, AFACK, the reason the program is not working the way the poster expects is the missing fflush() call before the lseek() call (not the fflush() before the ftruncate()).

Neil



More information about the Python-Dev mailing list