text: #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 = (errno_t __cdecl (*)(int, long long))
  	    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;
  }
  