Paul H. Hargrove wrote:

Quoting from a different manpage for ftruncate:
       [T]he POSIX standard allows two behaviours for ftruncate
when length exceeds the file length [...]: either returning an error, or
       extending the file.
So, if that is to be trusted, it is not legal by POSIX to *silently* not extend the file.

On a Solaris system, the ftruncate man page says:

    truncate, ftruncate - set a file to a specified length

    The truncate() function causes the  regular  file  named  by
    path to have a size equal to length bytes.

    If the file previously was larger  than  length,  the  extra
    data  is  discarded. If the file was previously shorter than
    length, its size is increased, and the extended area appears
    as if it were zero-filled.

So, the sense is not of "truncating" (shortening) per se, but of fixing a new length, whether that length is longer or shorter.

I guess we could try to track down the ftruncate behavior on the systems in question, but (IMHO) this doesn't feel like the correct explanation.

Reply via email to