/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER within this package. */ #ifndef _IO_H_ #define _IO_H_ #include #include #pragma pack(push,_CRT_PACKING) #ifndef _POSIX_ #ifdef __cplusplus extern "C" { #endif _Check_return_ _Ret_opt_z_ _CRTIMP char* __cdecl _getcwd( _Out_writes_opt_(_SizeInBytes) char *_DstBuf, _In_ int _SizeInBytes); #ifndef _FSIZE_T_DEFINED typedef unsigned long _fsize_t; #define _FSIZE_T_DEFINED #endif #ifndef _FINDDATA_T_DEFINED struct _finddata_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_write; _fsize_t size; char name[260]; }; struct _finddata32_t { unsigned attrib; __time32_t time_create; __time32_t time_access; __time32_t time_write; _fsize_t size; char name[260]; }; #if _INTEGRAL_MAX_BITS >= 64 struct _finddatai64_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_write; __MINGW_EXTENSION __int64 size; char name[260]; }; struct _finddata32i64_t { unsigned attrib; __time32_t time_create; __time32_t time_access; __time32_t time_write; __MINGW_EXTENSION __int64 size; char name[260]; }; struct _finddata64i32_t { unsigned attrib; __time64_t time_create; __time64_t time_access; __time64_t time_write; _fsize_t size; char name[260]; }; struct __finddata64_t { unsigned attrib; __time64_t time_create; __time64_t time_access; __time64_t time_write; __MINGW_EXTENSION __int64 size; char name[260]; }; #endif /* _INTEGRAL_MAX_BITS >= 64 */ #define _FINDDATA_T_DEFINED #endif #ifndef _WFINDDATA_T_DEFINED struct _wfinddata_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_write; _fsize_t size; wchar_t name[260]; }; struct _wfinddata32_t { unsigned attrib; __time32_t time_create; __time32_t time_access; __time32_t time_write; _fsize_t size; wchar_t name[260]; }; #if _INTEGRAL_MAX_BITS >= 64 struct _wfinddatai64_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_write; __MINGW_EXTENSION __int64 size; wchar_t name[260]; }; struct _wfinddata32i64_t { unsigned attrib; __time32_t time_create; __time32_t time_access; __time32_t time_write; __MINGW_EXTENSION __int64 size; wchar_t name[260]; }; struct _wfinddata64i32_t { unsigned attrib; __time64_t time_create; __time64_t time_access; __time64_t time_write; _fsize_t size; wchar_t name[260]; }; struct _wfinddata64_t { unsigned attrib; __time64_t time_create; __time64_t time_access; __time64_t time_write; __MINGW_EXTENSION __int64 size; wchar_t name[260]; }; #endif #define _WFINDDATA_T_DEFINED #endif #define _A_NORMAL 0x00 #define _A_RDONLY 0x01 #define _A_HIDDEN 0x02 #define _A_SYSTEM 0x04 #define _A_SUBDIR 0x10 #define _A_ARCH 0x20 /* Some defines for _access nAccessMode (MS doesn't define them, but * it doesn't seem to hurt to add them). */ #define F_OK 0 /* Check for file existence */ #define X_OK 1 /* Check for execute permission. */ #define W_OK 2 /* Check for write permission */ #define R_OK 4 /* Check for read permission */ _Check_return_ _CRTIMP int __cdecl _access( _In_z_ const char *_Filename, _In_ int _AccessMode); _Check_return_ _CRTIMP int __cdecl _chmod( _In_z_ const char *_Filename, _In_ int _Mode); _Check_return_ _CRTIMP int __cdecl _chsize( _In_ int _FileHandle, _In_ long _Size); _Check_return_opt_ _CRTIMP int __cdecl _close( _In_ int _FileHandle); _Check_return_opt_ _CRTIMP int __cdecl _commit( _In_ int _FileHandle); _Check_return_ _CRTIMP int __cdecl _creat( _In_z_ const char *_Filename, _In_ int _PermissionMode); _Check_return_ _CRTIMP int __cdecl _dup( _In_ int _FileHandle); _Check_return_ _CRTIMP int __cdecl _dup2( _In_ int _FileHandleSrc, _In_ int _FileHandleDst); _Check_return_ _CRTIMP int __cdecl _eof( _In_ int _FileHandle); _Check_return_ _CRTIMP long __cdecl _filelength( _In_ int _FileHandle); _CRTIMP intptr_t __cdecl _findfirst( const char *_Filename, struct _finddata_t *_FindData); _Check_return_ _CRTIMP intptr_t __cdecl _findfirst32( _In_z_ const char *_Filename, _Out_ struct _finddata32_t *_FindData); _CRTIMP int __cdecl _findnext( intptr_t _FindHandle, struct _finddata_t *_FindData); _Check_return_ _CRTIMP int __cdecl _findnext32( _In_ intptr_t _FindHandle, _Out_ struct _finddata32_t *_FindData); _Check_return_opt_ _CRTIMP int __cdecl _findclose( _In_ intptr_t _FindHandle); _Check_return_ _CRTIMP int __cdecl _isatty( _In_ int _FileHandle); _CRTIMP int __cdecl _locking( _In_ int _FileHandle, _In_ int _LockMode, _In_ long _NumOfBytes); _Check_return_opt_ _CRTIMP long __cdecl _lseek( _In_ int _FileHandle, _In_ long _Offset, _In_ int _Origin); _Check_return_ _CRTIMP char* __cdecl _mktemp( _Inout_z_ char *_TemplateName); _Check_return_ _CRTIMP int __cdecl _pipe( _Inout_updates_(2) int *_PtHandles, _In_ unsigned int _PipeSize, _In_ int _TextMode); _Check_return_ _CRTIMP int __cdecl _read( _In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount); #ifndef _CRT_DIRECTORY_DEFINED #define _CRT_DIRECTORY_DEFINED _Check_return_ int __cdecl remove( _In_z_ const char *_Filename); _Check_return_ int __cdecl rename( _In_z_ const char *_OldFilename, _In_z_ const char *_NewFilename); _Check_return_ _CRTIMP int __cdecl _unlink( _In_z_ const char *_Filename); #ifndef NO_OLDNAMES _Check_return_ _CRTIMP int __cdecl unlink( _In_z_ const char *_Filename); #endif #endif /* _CRT_DIRECTORY_DEFINED */ _Check_return_ _CRTIMP int __cdecl _setmode( _In_ int _FileHandle, _In_ int _Mode); _Check_return_ _CRTIMP long __cdecl _tell( _In_ int _FileHandle); _CRTIMP int __cdecl _umask( _In_ int _Mode); _CRTIMP int __cdecl _write( _In_ int _FileHandle, _In_reads_bytes_(_MaxCharCount) const void *_Buf, _In_ unsigned int _MaxCharCount); #if _INTEGRAL_MAX_BITS >= 64 _Check_return_ __MINGW_EXTENSION _CRTIMP __int64 __cdecl _filelengthi64( _In_ int _FileHandle); _Check_return_ _CRTIMP intptr_t __cdecl _findfirst32i64( _In_z_ const char *_Filename, _Out_ struct _finddata32i64_t *_FindData); _Check_return_ _CRTIMP intptr_t __cdecl _findfirst64i32( _In_z_ const char *_Filename, _Out_ struct _finddata64i32_t *_FindData); _Check_return_ _CRTIMP intptr_t __cdecl _findfirst64( _In_z_ const char *_Filename, _Out_ struct __finddata64_t *_FindData); _Check_return_ _CRTIMP int __cdecl _findnext32i64( _In_ intptr_t _FindHandle, _Out_ struct _finddata32i64_t *_FindData); _Check_return_ _CRTIMP int __cdecl _findnext64i32( _In_ intptr_t _FindHandle, _Out_ struct _finddata64i32_t *_FindData); _Check_return_ _CRTIMP int __cdecl _findnext64( _In_ intptr_t _FindHandle, _Out_ struct __finddata64_t *_FindData); _Check_return_opt_ __MINGW_EXTENSION _CRTIMP __int64 __cdecl _lseeki64( _In_ int _FileHandle, _In_ __int64 _Offset, _In_ int _Origin); _Check_return_ __MINGW_EXTENSION _CRTIMP __int64 __cdecl _telli64( _In_ int _FileHandle); #ifdef __cplusplus #include #endif __CRT_INLINE intptr_t __cdecl _findfirst64i32( const char *_Filename, struct _finddata64i32_t *_FindData) { struct __finddata64_t fd; intptr_t ret = _findfirst64(_Filename,&fd); _FindData->attrib=fd.attrib; _FindData->time_create=fd.time_create; _FindData->time_access=fd.time_access; _FindData->time_write=fd.time_write; _FindData->size=(_fsize_t) fd.size; strncpy(_FindData->name,fd.name,260); return ret; } __CRT_INLINE int __cdecl _findnext64i32( intptr_t _FindHandle, struct _finddata64i32_t *_FindData) { struct __finddata64_t fd; int ret = _findnext64(_FindHandle,&fd); _FindData->attrib=fd.attrib; _FindData->time_create=fd.time_create; _FindData->time_access=fd.time_access; _FindData->time_write=fd.time_write; _FindData->size=(_fsize_t) fd.size; strncpy(_FindData->name,fd.name,260); return ret; } #endif /* _INTEGRAL_MAX_BITS >= 64 */ #ifndef NO_OLDNAMES #ifndef _UWIN _Check_return_ _CRTIMP int __cdecl chdir( _In_z_ const char *_Path); _Check_return_ _Ret_opt_z_ _CRTIMP char* __cdecl getcwd( _Out_writes_opt_(_SizeInBytes) char *_DstBuf, _In_ int _SizeInBytes); _Check_return_ _CRTIMP int __cdecl mkdir( _In_z_ const char *_Path); _CRTIMP char* __cdecl mktemp( _Inout_z_ char *_TemplateName); _Check_return_ _CRTIMP int __cdecl rmdir( _In_z_ const char *_Path); _Check_return_ _CRTIMP int __cdecl chmod( _In_z_ const char *_Filename, _In_ int _AccessMode); #endif /* _UWIN */ #endif /* Not NO_OLDNAMES */ _Check_return_wat_ _CRTIMP errno_t __cdecl _sopen_s( _Out_ int *_FileHandle, _In_z_ const char *_Filename, _In_ int _OpenFlag, _In_ int _ShareFlag, _In_ int _PermissionMode); #ifndef __cplusplus _CRTIMP int __cdecl _open(const char *_Filename,int _OpenFlag,...); _CRTIMP int __cdecl _sopen(const char *_Filename,int _OpenFlag,int _ShareFlag,...); #else extern "C++" _CRTIMP int __cdecl _open(const char *_Filename,int _Openflag,int _PermissionMode = 0); extern "C++" _CRTIMP int __cdecl _sopen(const char *_Filename,int _Openflag,int _ShareFlag,int _PermissionMode = 0); #endif #ifndef _WIO_DEFINED #define _WIO_DEFINED _Check_return_ _CRTIMP int __cdecl _waccess( _In_z_ const wchar_t *_Filename, _In_ int _AccessMode); _Check_return_ _CRTIMP int __cdecl _wchmod( _In_z_ const wchar_t *_Filename, _In_ int _Mode); _Check_return_ _CRTIMP int __cdecl _wcreat( _In_z_ const wchar_t *_Filename, _In_ int _PermissionMode); _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst32( _In_z_ const wchar_t *_Filename, _Out_ struct _wfinddata32_t *_FindData); _Check_return_ _CRTIMP int __cdecl _wfindnext32( _In_ intptr_t _FindHandle, _Out_ struct _wfinddata32_t *_FindData); _Check_return_ _CRTIMP int __cdecl _wunlink( _In_z_ const wchar_t *_Filename); _Check_return_ _CRTIMP int __cdecl _wrename( _In_z_ const wchar_t *_NewFilename, _In_z_ const wchar_t *_OldFilename); _CRTIMP wchar_t* __cdecl _wmktemp( _Inout_z_ wchar_t *_TemplateName); #if _INTEGRAL_MAX_BITS >= 64 _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst32i64( _In_z_ const wchar_t *_Filename, _Out_ struct _wfinddata32i64_t *_FindData); _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst64i32( _In_z_ const wchar_t *_Filename, _Out_ struct _wfinddata64i32_t *_FindData); _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst64( _In_z_ const wchar_t *_Filename, _Out_ struct _wfinddata64_t *_FindData); _Check_return_ _CRTIMP int __cdecl _wfindnext32i64( _In_ intptr_t _FindHandle, _Out_ struct _wfinddata32i64_t *_FindData); _Check_return_ _CRTIMP int __cdecl _wfindnext64i32( _In_ intptr_t _FindHandle, _Out_ struct _wfinddata64i32_t *_FindData); _Check_return_ _CRTIMP int __cdecl _wfindnext64( _In_ intptr_t _FindHandle, _Out_ struct _wfinddata64_t *_FindData); #endif /* _INTEGRAL_MAX_BITS >= 64 */ _Check_return_wat_ _CRTIMP errno_t __cdecl _wsopen_s( _Out_ int *_FileHandle, _In_z_ const wchar_t *_Filename, _In_ int _OpenFlag, _In_ int _ShareFlag, _In_ int _PermissionFlag); #if !defined(__cplusplus) || !(defined(_X86_) && !defined(__x86_64)) _CRTIMP int __cdecl _wopen(const wchar_t *_Filename,int _OpenFlag,...); _CRTIMP int __cdecl _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,...); #else extern "C++" _CRTIMP int __cdecl _wopen(const wchar_t *_Filename,int _OpenFlag,int _PermissionMode = 0); extern "C++" _CRTIMP int __cdecl _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionMode = 0); #endif #endif /* !_WIO_DEFINED */ int __cdecl __lock_fhandle( _In_ int _Filehandle); void __cdecl _unlock_fhandle( _In_ int _Filehandle); _CRTIMP intptr_t __cdecl _get_osfhandle( _In_ int _FileHandle); _CRTIMP int __cdecl _open_osfhandle( _In_ intptr_t _OSFileHandle, _In_ int _Flags); #ifndef NO_OLDNAMES _Check_return_ _CRTIMP int __cdecl access( _In_z_ const char *_Filename, _In_ int _AccessMode); _Check_return_ _CRTIMP int __cdecl chmod( _In_z_ const char *_Filename, _In_ int _AccessMode); _Check_return_ _CRTIMP int __cdecl chsize( _In_ int _FileHandle, _In_ long _Size); _Check_return_opt_ _CRTIMP int __cdecl close( _In_ int _FileHandle); _Check_return_ _CRTIMP int __cdecl creat( _In_z_ const char *_Filename, _In_ int _PermissionMode); _Check_return_ _CRTIMP int __cdecl dup( _In_ int _FileHandle); _Check_return_ _CRTIMP int __cdecl dup2( _In_ int _FileHandleSrc, _In_ int _FileHandleDst); _Check_return_ _CRTIMP int __cdecl __cdecl eof( _In_ int _FileHandle); _Check_return_ _CRTIMP long __cdecl filelength( _In_ int _FileHandle); _Check_return_ _CRTIMP int __cdecl isatty( _In_ int _FileHandle); _Check_return_ _CRTIMP int __cdecl locking( _In_ int _FileHandle, _In_ int _LockMode, _In_ long _NumOfBytes); _Check_return_opt_ _CRTIMP long __cdecl lseek( _In_ int _FileHandle, _In_ long _Offset, _In_ int _Origin); _CRTIMP char* __cdecl mktemp( _Inout_z_ char *_TemplateName); _Check_return_ _CRTIMP int __cdecl open( _In_z_ const char *_Filename, _In_ int _OpenFlag, ...); _CRTIMP int __cdecl read( _In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount); _Check_return_ _CRTIMP int __cdecl setmode( _In_ int _FileHandle, _In_ int _Mode); _CRTIMP int __cdecl sopen( const char *_Filename, int _OpenFlag, int _ShareFlag, ...); _Check_return_ _CRTIMP long __cdecl tell( _In_ int _FileHandle); _CRTIMP int __cdecl umask( _In_ int _Mode); _Check_return_ _CRTIMP int __cdecl write( _In_ int _Filehandle, _In_reads_bytes_(_MaxCharCount) const void *_Buf, _In_ unsigned int _MaxCharCount); #endif /* NO_OLDNAMES */ #ifdef __cplusplus } #endif #endif #ifdef __cplusplus extern "C" { #endif /* Misc stuff */ char *getlogin(void); #ifdef __USE_MINGW_ALARM unsigned int alarm(unsigned int seconds); #endif #ifdef __USE_MINGW_ACCESS /* Old versions of MSVCRT access() just ignored X_OK, while the version shipped with Vista, returns an error code. This will restore the old behaviour */ static inline int __mingw_access (const char *__fname, int __mode) { return _access (__fname, __mode & ~X_OK); } #define access(__f,__m) __mingw_access (__f, __m) #endif #ifdef __cplusplus } #endif #pragma pack(pop) #include #endif /* End _IO_H_ */