]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/seekable.cpp
Remove deprecated things
[libs/core.git] / source / io / seekable.cpp
index 12ff6aa11dc26bc9bc4ffe5af5d5e07150e62443..6bc84855541c6f0974eb3c8ba29405fb67d8febd 100644 (file)
@@ -1,68 +1,17 @@
-#ifndef WIN32
-#define _LARGEFILE64_SOURCE
-#else
-#include <windows.h>
-#endif
-#include <stdexcept>
-#include <msp/core/systemerror.h>
-#include "handle.h"
-#include "handle_private.h"
+#include <msp/strings/format.h>
 #include "seekable.h"
 
 using namespace std;
 
-namespace {
-
-using namespace Msp::IO;
-
-int sys_seek_type(SeekType st)
-{
-#ifdef WIN32
-       if(st==S_BEG)
-               return FILE_BEGIN;
-       else if(st==S_CUR)
-               return FILE_CURRENT;
-       else if(st==S_END)
-               return FILE_END;
-#else
-       if(st==S_BEG)
-               return SEEK_SET;
-       else if(st==S_CUR)
-               return SEEK_CUR;
-       else if(st==S_END)
-               return SEEK_END;
-#endif
-
-       throw invalid_argument("sys_seek_type");
-}
-
-} // namespace
-
-
 namespace Msp {
 namespace IO {
 
-SeekOffset sys_seek(Handle &handle, SeekOffset offset, SeekType type)
-{
-#ifdef WIN32
-       LONG high = offset>>32;
-       DWORD ret = SetFilePointer(*handle, offset, &high, sys_seek_type(type));
-       if(ret==INVALID_SET_FILE_POINTER)
-       {
-               DWORD err = GetLastError();
-               if(err!=NO_ERROR)
-                       throw system_error("SetFilePointer");
-       }
-
-       return (SeekOffset(high)<<32) | ret;
-#else
-       off64_t ret = lseek64(*handle, offset, sys_seek_type(type));
-       if(ret==(off64_t)-1)
-               throw system_error("lseek64");
-
-       return ret;
-#endif
-}
+bad_seek::bad_seek(SeekOffset offset, SeekType type):
+       runtime_error(type==S_BEG ? lexical_cast<string>(offset) :
+               type==S_CUR ? format("CUR%+d", offset) :
+               type==S_END ? format("END%+d", offset) :
+               format("SeekType(%d)", type))
+{ }
 
 } // namespace IO
 } // namespace Msp