// Copyright {Jagger Software Limited} 2003 #include "io/file_size.hpp" #include "io/auto_fsetpos.hpp" #include "c/stdio.hpp" namespace { std::fpos_t getpos(FILE * stream, int mode) { std::fpos_t position; c::fseek(stream, 0, mode); c::fgetpos(stream, &position); return position; } } namespace io { size_t file_size(FILE * stream) { const auto_fsetpos reset(stream); // WARNING: non-portable return static_cast(::getpos(stream, SEEK_END) - ::getpos(stream, SEEK_SET)); } }