#include <TargetConditionals.h>
#endif
+#ifdef _WIN32
+# define llama_mmap_ftell _ftelli64
+# define llama_mmap_fseek _fseeki64
+#else
+# define llama_mmap_ftell ftello
+# define llama_mmap_fseek fseeko
+#endif
+
// TODO: consider moving to llama-impl.h if needed in more places
#if defined(_WIN32)
static std::string llama_format_win_err(DWORD err) {
size_t tell() const {
if (fd == -1) {
- long ret = std::ftell(fp);
+ off_t ret = llama_mmap_ftell(fp);
if (ret == -1) {
throw std::runtime_error(format("ftell error: %s", strerror(errno)));
}
void seek(size_t offset, int whence) const {
off_t ret = 0;
if (fd == -1) {
- ret = std::fseek(fp, (long) offset, whence);
+ ret = llama_mmap_fseek(fp, offset, whence);
} else {
ret = lseek(fd, offset, whence);
}