/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #include #include #include #if !defined(__arm__) && !defined(__aarch64__) /* we have F_ARM_ANY(_fseeki64) in msvcrt.def.in */ int __cdecl _fseeki64(FILE* stream, __int64 offset, int whence) { fpos_t pos; if (whence == SEEK_CUR) { /* If stream is invalid, fgetpos sets errno. */ if (fgetpos (stream, &pos)) return (-1); pos += (fpos_t) offset; } else if (whence == SEEK_END) { /* If writing, we need to flush before getting file length. */ fflush (stream); pos = (fpos_t) (_filelengthi64 (_fileno (stream)) + offset); } else if (whence == SEEK_SET) pos = (fpos_t) offset; else { errno = EINVAL; return (-1); } return fsetpos (stream, &pos); } int __cdecl (*__MINGW_IMP_SYMBOL(_fseeki64))(FILE*, __int64, int) = _fseeki64; #endif /* !defined(__arm__) && !defined(__aarch64__) */ __int64 __cdecl _ftelli64(FILE* stream) { fpos_t pos; if (fgetpos (stream, &pos)) return -1LL; else return (__int64) pos; } __int64 __cdecl (*__MINGW_IMP_SYMBOL(_ftelli64))(FILE*) = _ftelli64;