/**
 * 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.
 */
#ifndef _INC_IO_S
#define _INC_IO_S

#include <io.h>

#if defined(MINGW_HAS_SECURE_API)

#ifdef __cplusplus
extern "C" {
#endif

  errno_t __cdecl _access_s (const char *_Filename,int _AccessMode);
  errno_t __cdecl _chsize_s (int _FileHandle,__int64 _Size);
  errno_t __cdecl _mktemp_s (char *_TemplateName,size_t _Size);
  errno_t __cdecl _umask_s (int _NewMode,int *_OldMode);

#ifndef _WIO_S_DEFINED
#define _WIO_S_DEFINED
  errno_t __cdecl _waccess_s (const wchar_t *_Filename,int _AccessMode);
  errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName, size_t _SizeInWords);
#endif

#ifdef __cplusplus
}
#endif

#endif
#endif
