| /** |
| * 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 <stdio.h> |
| #include <io.h> |
| #include <errno.h> |
| |
| #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; |
| |