* win32 can flush it's file buffers (FlushFileBuffers()) * SetFilePointer knows about whence, win32 constants (values, not names) are the same as in linux.
remarks: FlushFileBuffers doesn't work for console handles, ms help file says: Windows NT: The function fails if hFile is a handle to console output. That is because console output is not buffered. The function returns FALSE, and GetLastError returns ERROR_INVALID_HANDLE. Windows 9x: The function does nothing if hFile is a handle to console output. That is because console output is not buffered. The function returns TRUE, but it does nothing. well done microsoft...but it doesn't sound like a big deal. so calling the function should be just fine. -daniel Index: io/io_win32.c =================================================================== RCS file: /cvs/public/parrot/io/io_win32.c,v retrieving revision 1.18 diff -u -r1.18 io_win32.c --- io/io_win32.c 8 Jun 2002 03:37:07 -0000 1.18 +++ io/io_win32.c 16 Jul 2002 00:01:31 -0000 @@ -201,7 +201,7 @@ void PIO_win32_flush(theINTERP, ParrotIOLayer *layer, ParrotIO *io) { - /* No op */ + FlushFileBuffers(io->fd); } @@ -268,7 +268,7 @@ offset.LowPart = lo; offset.HighPart = hi; p.LowPart = SetFilePointer(io->fd, offset.LowPart, - &offset.HighPart, FILE_CURRENT); + &offset.HighPart, whence); if (p.LowPart == 0xFFFFFFFF && (GetLastError() != NO_ERROR)) { /* Error - exception */ return -1;