On Aug 22 17:09, Pierre A. Humblet wrote: > In that case we can't reuse the code already present in ::write > because when ::write calls GetFileSize it will get the length > already updated by SetEndOfFile.
That's true. > The way ::write is written, it will restore the FilePointer at > the beginning of the 0 filled region if the disk gets full. But Erm... it restores to current_position, which is the position of the last lseek. That's the same position which ftruncate64 would set the EOF to. > 2004-08-23 Pierre Humblet <[EMAIL PROTECTED]> > > * syscalls.cc (ftruncate64): On 9x, call write with a zero length > to zero fill when the file is extended. > > Index: syscalls.cc > =================================================================== > RCS file: /cvs/src/src/winsup/cygwin/syscalls.cc,v > retrieving revision 1.342 > diff -u -p -r1.342 syscalls.cc > --- syscalls.cc 3 Aug 2004 14:37:26 -0000 1.342 > +++ syscalls.cc 22 Aug 2004 21:00:49 -0000 > @@ -1675,7 +1675,7 @@ setmode (int fd, int mode) > [...] > + /* In the lseek_bug case, this may restore the file to > + its initial length */ Except for this comment, which isn't valid (see above), please check it in. > if (!SetEndOfFile (h)) > __seterrno (); > else > - res = 0; > + res = res_bug; > > /* restore original file pointer location */ > cfd->lseek (prev_loc, SEEK_SET); Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader mailto:[EMAIL PROTECTED] Red Hat, Inc.
