|  | #include <windows.h> | 
|  | #include <malloc.h> | 
|  | #include <errno.h> | 
|  | #include <msvcrt.h> | 
|  | #include <io.h> | 
|  |  | 
|  | static errno_t __cdecl _int_chsize_s (int, long long); | 
|  | static errno_t __cdecl _stub (int, long long); | 
|  |  | 
|  | errno_t __cdecl (*__MINGW_IMP_SYMBOL(_chsize_s))(int, long long) = | 
|  | _stub; | 
|  |  | 
|  | static errno_t __cdecl | 
|  | _stub (int fd, long long sz) | 
|  | { | 
|  | errno_t __cdecl (*f)(int, long long) = __MINGW_IMP_SYMBOL(_chsize_s); | 
|  |  | 
|  | if (f == _stub) | 
|  | { | 
|  | f = (void*) | 
|  | GetProcAddress (__mingw_get_msvcrt_handle (), "_chsize_s"); | 
|  | if (!f) | 
|  | f = _int_chsize_s; | 
|  | __MINGW_IMP_SYMBOL(_chsize_s) = f; | 
|  | } | 
|  | return (*f)(fd, sz); | 
|  | } | 
|  |  | 
|  | errno_t __cdecl | 
|  | _chsize_s (int fd, long long sz) | 
|  | { | 
|  | return _stub (fd, sz); | 
|  | } | 
|  |  | 
|  | static errno_t __cdecl | 
|  | _int_chsize_s (int fd, long long sz) | 
|  | { | 
|  | if (sz > 0x7fffffffll) | 
|  | { | 
|  | /* We can't set file bigger as 2GB, so return EACCES.  */ | 
|  | return (errno = EACCES); | 
|  | } | 
|  | if (!_chsize (fd, sz)) | 
|  | return 0; | 
|  | return errno; | 
|  | } |