2 #define _LARGEFILE64_SOURCE
7 #include <msp/core/systemerror.h>
9 #include "handle_private.h"
16 using namespace Msp::IO;
18 int sys_seek_type(SeekType st)
36 throw invalid_argument("sys_seek_type");
45 SeekOffset sys_seek(Handle &handle, SeekOffset offset, SeekType type)
48 LONG high = offset>>32;
49 DWORD ret = SetFilePointer(*handle, offset, &high, sys_seek_type(type));
50 if(ret==INVALID_SET_FILE_POINTER)
52 DWORD err = GetLastError();
54 throw system_error("SetFilePointer");
57 return (SeekOffset(high)<<32) | ret;
59 off64_t ret = lseek64(*handle, offset, sys_seek_type(type));
61 throw system_error("lseek64");