Commit WIP. Part 1 of ??
authorSamuel Serapion <samuel.serapion@gmail.com>
Sat, 30 Aug 2008 16:47:26 +0000 (16:47 +0000)
committerSamuel Serapion <samuel.serapion@gmail.com>
Sat, 30 Aug 2008 16:47:26 +0000 (16:47 +0000)
Update mingw32 headers to mingw-w64 trunk
-Too many changes to list
-Important concepts:
-- _INTEGRAL_MAX_BITS
-- _USE_32BIT_TIME_T
-- _USE_64BIT_TIME_T
- adds crt secure API
- Fixes so many types its not even funny.

svn path=/branches/ros-amd64-bringup/; revision=35807

68 files changed:
reactos/include/crt/_mingw.h
reactos/include/crt/assert.h
reactos/include/crt/complex.h
reactos/include/crt/conio.h
reactos/include/crt/ctype.h
reactos/include/crt/direct.h
reactos/include/crt/dirent.h
reactos/include/crt/dos.h
reactos/include/crt/errno.h
reactos/include/crt/excpt.h
reactos/include/crt/fcntl.h
reactos/include/crt/fenv.h
reactos/include/crt/float.h
reactos/include/crt/inttypes.h
reactos/include/crt/io.h
reactos/include/crt/libgen.h [deleted file]
reactos/include/crt/limits.h
reactos/include/crt/locale.h
reactos/include/crt/malloc.h
reactos/include/crt/math.h
reactos/include/crt/mbctype.h
reactos/include/crt/mbstring.h
reactos/include/crt/mem.h
reactos/include/crt/memory.h
reactos/include/crt/mingw32/crtdbg.h [new file with mode: 0644]
reactos/include/crt/mingw32/stdarg.h
reactos/include/crt/mingw32/stddef.h
reactos/include/crt/mingw32/vadefs.h [new file with mode: 0644]
reactos/include/crt/process.h
reactos/include/crt/search.h
reactos/include/crt/sec_api/conio_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/crtdbg_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/io_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/mbstring_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/search_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/stdio_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/stdlib_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/stralign_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/string_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/sys/timeb_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/tchar_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/time_s.h [new file with mode: 0644]
reactos/include/crt/sec_api/wchar_s.h [new file with mode: 0644]
reactos/include/crt/setjmp.h
reactos/include/crt/share.h
reactos/include/crt/signal.h
reactos/include/crt/stdint.h
reactos/include/crt/stdio.h
reactos/include/crt/stdlib.h
reactos/include/crt/string.h
reactos/include/crt/strings.h
reactos/include/crt/sys/cdefs.h [new file with mode: 0644]
reactos/include/crt/sys/fcntl.h
reactos/include/crt/sys/file.h
reactos/include/crt/sys/ioctl.h [new file with mode: 0644]
reactos/include/crt/sys/locking.h
reactos/include/crt/sys/param.h
reactos/include/crt/sys/stat.h
reactos/include/crt/sys/time.h
reactos/include/crt/sys/timeb.h
reactos/include/crt/sys/types.h
reactos/include/crt/sys/unistd.h
reactos/include/crt/sys/utime.h
reactos/include/crt/time.h
reactos/include/crt/unistd.h
reactos/include/crt/utime.h
reactos/include/crt/wchar.h
reactos/include/crt/wctype.h

index dd0e13d..8ea779a 100644 (file)
@@ -1,56 +1,20 @@
-/*
- * _mingw.h
- *
- * Mingw specific macros included by ALL include files.
- *
- * This file is part of the Mingw32 package.
- *
- * Contributors:
- *  Created by Mumit Khan  <khan@xraylith.wisc.edu>
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
+/**
+ * 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 __MINGW_H
-#define __MINGW_H
+#ifndef _INC_CRTDEFS
+#define _INC_CRTDEFS
 
-#if __GNUC__ >= 3
-#pragma GCC system_header
+#ifndef MINGW64
+#define MINGW64
+#define MINGW64_VERSION        1.0
+#define MINGW64_VERSION_MAJOR  1
+#define MINGW64_VERSION_MINOR  0
+#define MINGW64_VERSION_STATE  "alpha"
 #endif
 
-/* These are defined by the user (or the compiler)
-   to specify how identifiers are imported from a DLL.
-
-   __DECLSPEC_SUPPORTED    Defined if dllimport attribute is supported.
-   __MINGW_IMPORT          The attribute definition to specify imported
-                           variables/functions.
-   _CRTIMP                 As above.  For MS compatibility.
-   __MINGW32_VERSION       Runtime version.
-   __MINGW32_MAJOR_VERSION Runtime major version.
-   __MINGW32_MINOR_VERSION Runtime minor version.
-   __MINGW32_BUILD_DATE    Runtime build date.
-
-   Other macros:
-
-   __int64                 define to be long long. Using a typedef doesn't
-                           work for "unsigned __int64"
-
-   All headers should include this first, and then use __DECLSPEC_SUPPORTED
-   to choose between the old ``__imp__name'' style or __MINGW_IMPORT
-   style declarations.  */
-
-/* Try to avoid problems with outdated checks for GCC __attribute__ support.  */
-#undef __attribute__
-
 #ifndef __GNUC__
 # ifndef __MINGW_IMPORT
 #  define __MINGW_IMPORT  __declspec(dllimport)
@@ -63,8 +27,8 @@
 #else /* __GNUC__ */
 # ifdef __declspec
 #  ifndef __MINGW_IMPORT
-   /* Note the extern. This is needed to work around GCC's
-      limitations in handling dllimport attribute.  */
+/* Note the extern. This is needed to work around GCC's
+limitations in handling dllimport attribute.  */
 #   define __MINGW_IMPORT  extern __attribute__ ((__dllimport__))
 #  endif
 #  ifndef _CRTIMP
 # ifndef __stdcall
 #  define __stdcall __attribute__ ((__stdcall__))
 # endif
-# ifndef __int64
-#  define __int64 long long
-# endif
-# ifndef __int32
-#  define __int32 long
-# endif
-# ifndef __int16
-#  define __int16 short
-# endif
-# ifndef __int8
-#  define __int8 char
-# endif
-# ifndef __small
-#  define __small char
-# endif
-# ifndef __hyper
-#  define __hyper long long
-# endif
-#endif /* __GNUC__ */
 
 #if defined (__GNUC__) && defined (__GNUC_MINOR__)
 #define __MINGW_GNUC_PREREQ(major, minor) \
 #define __MINGW_GNUC_PREREQ(major, minor)  0
 #endif
 
+#define USE___UUIDOF   0
+
 #ifdef __cplusplus
 # define __CRT_INLINE inline
 #else
-# if __GNUC_STDC_INLINE__
+# if ( __MINGW_GNUC_PREREQ(4, 3)  &&  __STDC_VERSION__ >= 199901L)
 #  define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
 # else
 #  define __CRT_INLINE extern __inline__
 
 #ifndef __MSVCRT_VERSION__
 /*  High byte is the major version, low byte is the minor. */
-# define __MSVCRT_VERSION__ 0x0600
+# define __MSVCRT_VERSION__ 0x0700
+#endif
+
+
+//#ifndef WINVER
+//#define WINVER 0x0502
+//#endif
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x502
+#endif
+
+#ifndef _INT128_DEFINED
+#define _INT128_DEFINED
+#ifdef __GNUC__
+#define __int8 char
+#define __int16 short
+#define __int32 int
+#define __int64 long long
+#ifdef _WIN64
+
+typedef int __int128 __attribute__ ((mode (TI)));
+
+#endif
+
+#define __ptr32
+#define __ptr64
+#define __unaligned __attribute ((packed))
+#define __forceinline extern __inline
+#endif
+#endif
+
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
+
+#if defined (__i386__)
+#define _ATTRIBUTES
+#else
+#define _ATTRIBUTES shared
+#endif
+
+#ifdef __cplusplus
+#ifndef __nothrow
+#define __nothrow __declspec(nothrow)
+#endif
+#else
+#ifndef __nothrow
+#define __nothrow
+#endif
+#endif
+
+#undef _CRT_PACKING
+#define _CRT_PACKING 8
+
+#ifdef _WIN64
+#undef USE_MINGW_SETJMP_TWO_ARGS
+#define USE_MINGW_SETJMP_TWO_ARGS
+#endif
+
+#pragma pack(push,_CRT_PACKING)
+
+#include <vadefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _CRT_STRINGIZE
+#define __CRT_STRINGIZE(_Value) #_Value
+#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
+#endif
+
+#ifndef _CRT_WIDE
+#define __CRT_WIDE(_String) L ## _String
+#define _CRT_WIDE(_String) __CRT_WIDE(_String)
+#endif
+
+#ifndef _W64
+#define _W64
+#endif
+
+#ifndef _CRTIMP_NOIA64
+#ifdef __ia64__
+#define _CRTIMP_NOIA64
+#else
+#define _CRTIMP_NOIA64 _CRTIMP
+#endif
+#endif
+
+#ifndef _CRTIMP2
+#define _CRTIMP2 _CRTIMP
+#endif
+
+#ifndef _CRTIMP_ALTERNATIVE
+#define _CRTIMP_ALTERNATIVE _CRTIMP
+#define _CRT_ALTERNATIVE_IMPORTED
+#endif
+
+#ifndef _MRTIMP2
+#define _MRTIMP2  _CRTIMP
+#endif
+
+#ifndef _DLL
+#define _DLL
+#endif
+
+#ifndef _MT
+#define _MT
+#endif
+
+#ifndef _MCRTIMP
+#define _MCRTIMP _CRTIMP
+#endif
+
+#ifndef _CRTIMP_PURE
+#define _CRTIMP_PURE _CRTIMP
+#endif
+
+#ifndef _PGLOBAL
+#define _PGLOBAL
+#endif
+
+#ifndef _AGLOBAL
+#define _AGLOBAL
+#endif
+
+#define __STDC_SECURE_LIB__ 200411L
+#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
+#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
+#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
+
+#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
+#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
+#endif
+#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
+#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
+#endif
+#ifndef _CRT_MANAGED_HEAP_DEPRECATE
+#define _CRT_MANAGED_HEAP_DEPRECATE
+#endif
+
+#ifndef _CRT_OBSOLETE
+#define _CRT_OBSOLETE(_NewItem)
 #endif
 
 #ifndef _SIZE_T_DEFINED
 #define _SIZE_T_DEFINED
 #undef size_t
 #ifdef _WIN64
+#define _INTEGRAL_MAX_BITS 64
 #if defined(__GNUC__) && defined(__STRICT_ANSI__)
   typedef unsigned int size_t __attribute__ ((mode (DI)));
 #else
   typedef unsigned __int64 size_t;
 #endif
 #else
+  #define _INTEGRAL_MAX_BITS 32
   typedef unsigned int size_t;
 #endif
 #endif
 
-#define __MINGW32_VERSION 3.13
-#define __MINGW32_MAJOR_VERSION 3
-#define __MINGW32_MINOR_VERSION 13
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+#undef ssize_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int ssize_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 ssize_t;
+#endif
+#else
+  typedef int ssize_t;
+#endif
+#endif
+
+#ifndef _INTPTR_T_DEFINED
+#define _INTPTR_T_DEFINED
+#ifndef __intptr_t_defined
+#define __intptr_t_defined
+#undef intptr_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int intptr_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 intptr_t;
+#endif
+#else
+  typedef int intptr_t;
+#endif
+#endif
+#endif
+
+#ifndef _UINTPTR_T_DEFINED
+#define _UINTPTR_T_DEFINED
+#ifndef __uintptr_t_defined
+#define __uintptr_t_defined
+#undef uintptr_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef unsigned int uintptr_t __attribute__ ((mode (DI)));
+#else
+  typedef unsigned __int64 uintptr_t;
+#endif
+#else
+  typedef unsigned int uintptr_t;
+#endif
+#endif
+#endif
+
+#ifndef _PTRDIFF_T_DEFINED
+#define _PTRDIFF_T_DEFINED
+#ifndef _PTRDIFF_T_
+#undef ptrdiff_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int ptrdiff_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 ptrdiff_t;
+#endif
+#else
+  typedef int ptrdiff_t;
+#endif
+#endif
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+  typedef unsigned short wchar_t;
+#endif
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+#define _WCTYPE_T_DEFINED
+  typedef unsigned short wint_t;
+  typedef unsigned short wctype_t;
+#endif
+
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+  typedef __builtin_va_list __gnuc_va_list;
+#endif
+
+#ifndef _VA_LIST_DEFINED
+#define _VA_LIST_DEFINED
+  typedef __gnuc_va_list va_list;
+#endif
+
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
+#undef _USE_32BIT_TIME_T
+#endif
+#else
+#if _INTEGRAL_MAX_BITS < 64
+#define _USE_32BIT_TIME_T
+#endif
+#endif
 
-#endif /* __MINGW_H */
+#ifndef _ERRCODE_DEFINED
+#define _ERRCODE_DEFINED
+  typedef int errcode;
+  typedef int errno_t;
+#endif
+
+#ifndef _TIME32_T_DEFINED
+#define _TIME32_T_DEFINED
+  typedef long __time32_t;
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#define _TIME64_T_DEFINED
+  typedef __int64 __time64_t;
+#endif
+
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+  typedef __time32_t time_t;
+#else
+  typedef __time64_t time_t;
+#endif
+#endif
+
+#ifndef _CONST_RETURN
+#define _CONST_RETURN
+#endif
+
+#ifndef __CRT_UNALIGNED
+#define __CRT_UNALIGNED
+#endif
+
+#ifndef UNALIGNED
+#if defined(__ia64__) || defined(__x86_64)
+#define UNALIGNED __CRT_UNALIGNED
+#else
+#define UNALIGNED
+#endif
+#endif
+
+#ifndef _CRT_ALIGN
+#define _CRT_ALIGN(x) __attribute__ ((aligned(x)))
+#endif
+
+#ifndef _CRTNOALIAS
+#define _CRTNOALIAS
+#endif
+
+#ifndef _CRTRESTRICT
+#define _CRTRESTRICT
+#endif
+
+#ifndef __CRTDECL
+#define __CRTDECL __cdecl
+#endif
+
+#define _ARGMAX 100
+
+#ifndef _TRUNCATE
+#define _TRUNCATE ((size_t)-1)
+#endif
+  struct threadlocaleinfostruct;
+  struct threadmbcinfostruct;
+  typedef struct threadlocaleinfostruct *pthreadlocinfo;
+  typedef struct threadmbcinfostruct *pthreadmbcinfo;
+  struct __lc_time_data;
+
+  typedef struct localeinfo_struct {
+    pthreadlocinfo locinfo;
+    pthreadmbcinfo mbcinfo;
+  } _locale_tstruct,*_locale_t;
+
+#ifndef _TAGLC_ID_DEFINED
+#define _TAGLC_ID_DEFINED
+  typedef struct tagLC_ID {
+    unsigned short wLanguage;
+    unsigned short wCountry;
+    unsigned short wCodePage;
+  } LC_ID,*LPLC_ID;
+#endif
+
+#ifndef _THREADLOCALEINFO
+#define _THREADLOCALEINFO
+  typedef struct threadlocaleinfostruct {
+    int refcount;
+    unsigned int lc_codepage;
+    unsigned int lc_collate_cp;
+    unsigned long lc_handle[6];
+    LC_ID lc_id[6];
+    struct {
+      char *locale;
+      wchar_t *wlocale;
+      int *refcount;
+      int *wrefcount;
+    } lc_category[6];
+    int lc_clike;
+    int mb_cur_max;
+    int *lconv_intl_refcount;
+    int *lconv_num_refcount;
+    int *lconv_mon_refcount;
+    struct lconv *lconv;
+    int *ctype1_refcount;
+    unsigned short *ctype1;
+    const unsigned short *pctype;
+    const unsigned char *pclmap;
+    const unsigned char *pcumap;
+    struct __lc_time_data *lc_time_curr;
+  } threadlocinfo;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#define __crt_typefix(ctype)
+
+#ifndef _CRT_UNUSED
+#define _CRT_UNUSED(x) (void)x
+#endif
+
+#pragma pack(pop)
+#endif
+
+#endif
index 1ff6690..a486eb1 100644 (file)
@@ -1,51 +1,58 @@
-/*
- * assert.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Define the assert macro for debug output.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef __ASSERT_H_
+#define __ASSERT_H_
 
-/* We should be able to include this file multiple times to allow the assert
-   macro to be enabled/disabled for different parts of code.  So don't add a
-   header guard.  */
-
-#ifndef RC_INVOKED
-
-/* All the headers include this file. */
 #include <_mingw.h>
-
-#undef assert
-
-#ifdef __cplusplus
-extern "C" {
+#ifdef __cplusplus
+#include <stdlib.h>
 #endif
 
 #ifdef NDEBUG
-/*
- * If not debugging, assert does nothing.
- */
-#define assert(x)      ((void)0)
+#ifndef assert
+#define assert(_Expression) ((void)0)
+#endif
+#else
+
+#ifndef _CRT_TERMINATE_DEFINED
+#define _CRT_TERMINATE_DEFINED
+__declspec(noreturn) void __cdecl exit(int _Code);
+_CRTIMP __declspec(noreturn) void __cdecl _exit(int _Code);
+#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
+/* C99 function name */
+void __cdecl __declspec(noreturn) _Exit(int); /* Declare to get noreturn attribute.  */
+__CRT_INLINE void __cdecl _Exit(int status)
+{  _exit(status); }
+#endif
 
-#else /* debugging enabled */
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma push_macro("abort")
+#undef abort
+#endif
+  void __cdecl __declspec(noreturn) abort(void);
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma pop_macro("abort")
+#endif
 
-/*
- * CRTDLL nicely supplies a function which does the actual output and
- * call to abort.
- */
-_CRTIMP void __cdecl __MINGW_NOTHROW _assert (const char*, const char*, int) __MINGW_ATTRIB_NORETURN;
+#endif
 
-/*
- * Definition of the assert macro.
- */
-#define assert(e)       ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-#endif /* NDEBUG */
+//extern void __cdecl _wassert(const wchar_t *_Message,const wchar_t *_File,unsigned _Line);
 
-#ifdef __cplusplus
+#ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifndef assert
+#define assert(_Expression) (void)((!!(_Expression)))// || (_wassert(_CRT_WIDE(#_Expression),_CRT_WIDE(__FILE__),__LINE__),0))
+#endif
+
+#endif
+
+#endif
index 2fd73a1..f659dd9 100644 (file)
@@ -1,3 +1,8 @@
+/**
+ * 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.
+ */
 /*
  * complex.h
  *
@@ -46,11 +51,11 @@ extern "C" {
 
 #ifndef RC_INVOKED
 
-double __MINGW_ATTRIB_CONST creal (double _Complex);
-double __MINGW_ATTRIB_CONST cimag (double _Complex);
-double __MINGW_ATTRIB_CONST carg (double _Complex);
-double __MINGW_ATTRIB_CONST cabs (double _Complex);
-double _Complex __MINGW_ATTRIB_CONST conj (double _Complex);
+double creal (double _Complex);
+double cimag (double _Complex);
+double carg (double _Complex);
+double cabs (double _Complex);
+double _Complex conj (double _Complex);
 double _Complex  cacos (double _Complex);
 double _Complex  casin (double _Complex);
 double _Complex  catan (double _Complex);
@@ -67,13 +72,13 @@ double _Complex  cexp (double _Complex);
 double _Complex  clog (double _Complex);
 double _Complex  cpow (double _Complex, double _Complex);
 double _Complex  csqrt (double _Complex);
-double _Complex __MINGW_ATTRIB_CONST cproj (double _Complex);
+double _Complex cproj (double _Complex);
 
-float __MINGW_ATTRIB_CONST crealf (float _Complex);
-float __MINGW_ATTRIB_CONST cimagf (float _Complex);
-float __MINGW_ATTRIB_CONST cargf (float _Complex);
-float __MINGW_ATTRIB_CONST cabsf (float _Complex);
-float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex);
+float crealf (float _Complex);
+float cimagf (float _Complex);
+float cargf (float _Complex);
+float cabsf (float _Complex);
+float _Complex conjf (float _Complex);
 float _Complex  cacosf (float _Complex);
 float _Complex  casinf (float _Complex);
 float _Complex  catanf (float _Complex);
@@ -90,13 +95,13 @@ float _Complex  cexpf (float _Complex);
 float _Complex  clogf (float _Complex);
 float _Complex  cpowf (float _Complex, float _Complex);
 float _Complex  csqrtf (float _Complex);
-float _Complex __MINGW_ATTRIB_CONST cprojf (float _Complex);
+float _Complex cprojf (float _Complex);
 
-long double __MINGW_ATTRIB_CONST creall (long double _Complex);
-long double __MINGW_ATTRIB_CONST cimagl (long double _Complex);
-long double __MINGW_ATTRIB_CONST cargl (long double _Complex);
-long double __MINGW_ATTRIB_CONST cabsl (long double _Complex);
-long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex);
+long double creall (long double _Complex);
+long double cimagl (long double _Complex);
+long double cargl (long double _Complex);
+long double cabsl (long double _Complex);
+long double _Complex conjl (long double _Complex);
 long double _Complex  cacosl (long double _Complex);
 long double _Complex  casinl (long double _Complex);
 long double _Complex  catanl (long double _Complex);
@@ -113,27 +118,27 @@ long double _Complex  cexpl (long double _Complex);
 long double _Complex  clogl (long double _Complex);
 long double _Complex  cpowl (long double _Complex, long double _Complex);
 long double _Complex  csqrtl (long double _Complex);
-long double _Complex __MINGW_ATTRIB_CONST cprojl (long double _Complex);
+long double _Complex cprojl (long double _Complex);
 
 #ifdef __GNUC__
 
 /* double */
-__CRT_INLINE double __MINGW_ATTRIB_CONST creal (double _Complex _Z)
+__CRT_INLINE double creal (double _Complex _Z)
 {
   return __real__ _Z;
 }
 
-__CRT_INLINE double __MINGW_ATTRIB_CONST cimag (double _Complex _Z)
+__CRT_INLINE double cimag (double _Complex _Z)
 {
   return __imag__ _Z;
 }
 
-__CRT_INLINE double _Complex __MINGW_ATTRIB_CONST conj (double _Complex _Z)
+__CRT_INLINE double _Complex conj (double _Complex _Z)
 {
   return __extension__ ~_Z;
 }
 
-__CRT_INLINE  double __MINGW_ATTRIB_CONST carg (double _Complex _Z)
+__CRT_INLINE  double carg (double _Complex _Z)
 {
   double res;
   __asm__  ("fpatan;"
@@ -143,22 +148,22 @@ __CRT_INLINE  double __MINGW_ATTRIB_CONST carg (double _Complex _Z)
 
 
 /* float */
-__CRT_INLINE float __MINGW_ATTRIB_CONST crealf (float _Complex _Z)
+__CRT_INLINE float crealf (float _Complex _Z)
 {
   return __real__ _Z;
 }
 
-__CRT_INLINE float __MINGW_ATTRIB_CONST cimagf (float _Complex _Z)
+__CRT_INLINE float cimagf (float _Complex _Z)
 {
   return __imag__ _Z;
 }
 
-__CRT_INLINE float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex _Z)
+__CRT_INLINE float _Complex conjf (float _Complex _Z)
 {
   return __extension__ ~_Z;
 }
 
-__CRT_INLINE  float __MINGW_ATTRIB_CONST cargf (float _Complex _Z)
+__CRT_INLINE  float cargf (float _Complex _Z)
 {
   float res;
   __asm__  ("fpatan;"
@@ -167,22 +172,22 @@ __CRT_INLINE  float __MINGW_ATTRIB_CONST cargf (float _Complex _Z)
 }
 
 /* long double */
-__CRT_INLINE long double __MINGW_ATTRIB_CONST creall (long double _Complex _Z)
+__CRT_INLINE long double creall (long double _Complex _Z)
 {
   return __real__ _Z;
 }
 
-__CRT_INLINE long double __MINGW_ATTRIB_CONST cimagl (long double _Complex _Z)
+__CRT_INLINE long double cimagl (long double _Complex _Z)
 {
   return __imag__ _Z;
 }
 
-__CRT_INLINE long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex _Z)
+__CRT_INLINE long double _Complex conjl (long double _Complex _Z)
 {
   return __extension__ ~_Z;
 }
 
-__CRT_INLINE  long double __MINGW_ATTRIB_CONST cargl (long double _Complex _Z)
+__CRT_INLINE  long double cargl (long double _Complex _Z)
 {
   long double res;
   __asm__  ("fpatan;"
index 8a821cb..2b71ce6 100644 (file)
-/*
- * conio.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Low level console I/O functions. Pretty please try to use the ANSI
- * standard ones if you are writing new code.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_CONIO
+#define _INC_CONIO
 
-#ifndef        _CONIO_H_
-#define        _CONIO_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#ifndef RC_INVOKED
-
-#ifdef __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _cgets (char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _cprintf (const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _cputs (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _cscanf (char*, ...);
+  _CRTIMP char *_cgets(char *_Buffer);
+  _CRTIMP int __cdecl _cprintf(const char *_Format,...);
+  _CRTIMP int __cdecl _cputs(const char *_Str);
+  _CRTIMP int __cdecl _cscanf(const char *_Format,...);
+  _CRTIMP int __cdecl _cscanf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _getch(void);
+  _CRTIMP int __cdecl _getche(void);
+  _CRTIMP int __cdecl _vcprintf(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_p(const char *_Format,...);
+  _CRTIMP int __cdecl _vcprintf_p(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_p_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _kbhit(void);
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _getch (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _getche (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _kbhit (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _putch (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _ungetch (int);
+#if defined(_X86_) && !defined(__x86_64)
+  int __cdecl _inp(unsigned short);
+  unsigned short __cdecl _inpw(unsigned short);
+  unsigned long __cdecl _inpd(unsigned short);
+  int __cdecl _outp(unsigned short,int);
+  unsigned short __cdecl _outpw(unsigned short,unsigned short);
+  unsigned long __cdecl _outpd(unsigned short,unsigned long);
+#endif
 
+  _CRTIMP int __cdecl _putch(int _Ch);
+  _CRTIMP int __cdecl _ungetch(int _Ch);
+  _CRTIMP int __cdecl _getch_nolock(void);
+  _CRTIMP int __cdecl _getche_nolock(void);
+  _CRTIMP int __cdecl _putch_nolock(int _Ch);
+  _CRTIMP int __cdecl _ungetch_nolock(int _Ch);
 
-#ifndef        _NO_OLDNAMES
+#ifndef _WCONIO_DEFINED
+#define _WCONIO_DEFINED
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    getch (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    getche (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    kbhit (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    putch (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    ungetch (int);
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
 
-#endif /* Not _NO_OLDNAMES */
+  _CRTIMP wchar_t *_cgetws(wchar_t *_Buffer);
+  _CRTIMP wint_t __cdecl _getwch(void);
+  _CRTIMP wint_t __cdecl _getwche(void);
+  _CRTIMP wint_t __cdecl _putwch(wchar_t _WCh);
+  _CRTIMP wint_t __cdecl _ungetwch(wint_t _WCh);
+  _CRTIMP int __cdecl _cputws(const wchar_t *_String);
+  _CRTIMP int __cdecl _cwprintf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vcwprintf_p(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP wint_t __cdecl _putwch_nolock(wchar_t _WCh);
+  _CRTIMP wint_t __cdecl _getwch_nolock(void);
+  _CRTIMP wint_t __cdecl _getwche_nolock(void);
+  _CRTIMP wint_t __cdecl _ungetwch_nolock(wint_t _WCh);
+#endif
 
+#ifndef        NO_OLDNAMES
+  char *__cdecl cgets(char *_Buffer);
+  int __cdecl cprintf(const char *_Format,...);
+  int __cdecl cputs(const char *_Str);
+  int __cdecl cscanf(const char *_Format,...);
+  int __cdecl getch(void);
+  int __cdecl getche(void);
+  int __cdecl kbhit(void);
+  int __cdecl putch(int _Ch);
+  int __cdecl ungetch(int _Ch);
 
-#ifdef __cplusplus
+#if (defined(_X86_) && !defined(__x86_64))
+  int __cdecl inp(unsigned short);
+  unsigned short __cdecl inpw(unsigned short);
+  int __cdecl outp(unsigned short,int);
+  unsigned short __cdecl outpw(unsigned short,unsigned short);
+#endif
+
+#endif
+#ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
+#include <sec_api/conio_s.h>
 
-#endif /* Not _CONIO_H_ */
+#endif
index 44a932b..45b6409 100644 (file)
-/* 
- * ctype.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Functions for testing character types and converting characters.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_CTYPE
+#define _INC_CTYPE
 
-#ifndef _CTYPE_H_
-#define _CTYPE_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#define        __need_wchar_t
-#define        __need_wint_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-
-/*
- * The following flags are used to tell iswctype and _isctype what character
- * types you are looking for.
- */
-#define        _UPPER          0x0001
-#define        _LOWER          0x0002
-#define        _DIGIT          0x0004
-#define        _SPACE          0x0008 /* HT  LF  VT  FF  CR  SP */
-#define        _PUNCT          0x0010
-#define        _CONTROL        0x0020
-/* _BLANK is set for SP and non-ASCII horizontal space chars (eg,
-   "no-break space", 0xA0, in CP1250) but not for HT.  */
-#define        _BLANK          0x0040 
-#define        _HEX            0x0080
-#define        _LEADBYTE       0x8000
-
-#define        _ALPHA          0x0103
-
-#ifndef RC_INVOKED
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW isalnum(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isalpha(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW iscntrl(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isdigit(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isgraph(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW islower(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isprint(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW ispunct(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isspace(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isupper(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isxdigit(int);
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined __STRICT_ANSI__
-int __cdecl __MINGW_NOTHROW isblank (int);
-#endif
-
-#ifndef __STRICT_ANSI__
-_CRTIMP int __cdecl __MINGW_NOTHROW _isctype (int, int);
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
 #endif
 
-/* These are the ANSI versions, with correct checking of argument */
-_CRTIMP int __cdecl __MINGW_NOTHROW tolower(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW toupper(int);
+#ifndef _CRT_CTYPEDATA_DEFINED
+#define _CRT_CTYPEDATA_DEFINED
+#ifndef _CTYPE_DISABLE_MACROS
 
-/*
- * NOTE: The above are not old name type wrappers, but functions exported
- * explicitly by MSVCRT/CRTDLL. However, underscored versions are also
- * exported.
- */
-#ifndef        __STRICT_ANSI__
-/*
- *  These are the cheap non-std versions: The return values are undefined
- *  if the argument is not ASCII char or is not of appropriate case
- */ 
-_CRTIMP int __cdecl __MINGW_NOTHROW _tolower(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _toupper(int);
+#ifndef __PCTYPE_FUNC
+#define __PCTYPE_FUNC __pctype_func()
+#ifdef _MSVCRT_
+#define __pctype_func()        (_pctype)
+#else
+#define __pctype_func()        (*_imp___pctype)
 #endif
-
-/* Also defined in stdlib.h */
-#ifndef MB_CUR_MAX
-#ifdef __DECLSPEC_SUPPORTED
-# ifdef __MSVCRT__
-#  define MB_CUR_MAX __mb_cur_max
-   __MINGW_IMPORT int __mb_cur_max;
-# else /* not __MSVCRT */
-#  define MB_CUR_MAX __mb_cur_max_dll
-   __MINGW_IMPORT int __mb_cur_max_dll;
-# endif        /* not __MSVCRT */
-
-#else          /* ! __DECLSPEC_SUPPORTED */
-# ifdef __MSVCRT__
-   extern int* _imp____mbcur_max;
-#  define MB_CUR_MAX (*_imp____mb_cur_max)
-# else         /* not __MSVCRT */
-   extern int*  _imp____mbcur_max_dll;
-#  define MB_CUR_MAX (*_imp____mb_cur_max_dll)
-# endif        /* not __MSVCRT */
-#endif         /*  __DECLSPEC_SUPPORTED */
-#endif  /* MB_CUR_MAX */
-
-#ifndef _WCTYPE_H_
-#ifdef __DECLSPEC_SUPPORTED
-# if __MSVCRT_VERSION__ <= 0x0700
-  __MINGW_IMPORT unsigned short _ctype[];
-# endif
-# ifdef __MSVCRT__
-  __MINGW_IMPORT const unsigned short* _pctype;
-# else /* CRTDLL */
-  __MINGW_IMPORT const unsigned short* _pctype_dll;
-# define  _pctype _pctype_dll
-# endif 
-
-#else          /*  __DECLSPEC_SUPPORTED */
-# if __MSVCRT_VERSION__ <= 0x0700
-  extern unsigned short** _imp___ctype;
-# define _ctype (*_imp___ctype)
-# endif
-# ifdef __MSVCRT__
-  extern unsigned short** _imp___pctype;
-# define _pctype (*_imp___pctype)
-# else /* CRTDLL */
-  extern unsigned short** _imp___pctype_dll;
-# define _pctype (*_imp___pctype_dll)
-# endif /* CRTDLL */
-#endif         /*  __DECLSPEC_SUPPORTED */
 #endif
 
-/*
- * Use inlines here rather than macros, because macros will upset 
- * C++ usage (eg, ::isalnum), and so usually get undefined
- *
- * According to standard for SB chars, these function are defined only
- * for input values representable by unsigned char or EOF.
- * Thus, there is no range test.
- * This reproduces behaviour of MSVCRT.dll lib implemention for SB chars.
- *
- * If no MB char support is needed, these can be simplified even
- * more by command line define -DMB_CUR_MAX=1.  The compiler will then
- * optimise away the constant condition.                       
- */
-
-#if !(defined (__NO_INLINE__)  || defined (__NO_CTYPE_INLINES) \
-       || defined (__STRICT_ANSI__))
-
-/* use  simple lookup if SB locale, else  _isctype()  */
-#define __ISCTYPE(c, mask)  (MB_CUR_MAX == 1 ? (_pctype[c] & mask) : _isctype(c, mask))
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isalnum(int c) {return __ISCTYPE(c, (_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isalpha(int c) {return __ISCTYPE(c, _ALPHA);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iscntrl(int c) {return __ISCTYPE(c, _CONTROL);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isdigit(int c) {return __ISCTYPE(c, _DIGIT);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isgraph(int c) {return __ISCTYPE(c, (_PUNCT|_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW islower(int c) {return __ISCTYPE(c, _LOWER);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isprint(int c) {return __ISCTYPE(c, (_BLANK|_PUNCT|_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW ispunct(int c) {return __ISCTYPE(c, _PUNCT);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isspace(int c) {return __ISCTYPE(c, _SPACE);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isupper(int c) {return __ISCTYPE(c, _UPPER);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isxdigit(int c) {return __ISCTYPE(c, _HEX);}
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined __STRICT_ANSI__
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isblank (int c)
-  {return (__ISCTYPE(c, _BLANK) || c == '\t');}
+#ifndef _pctype
+#ifdef _MSVCRT_
+  extern const unsigned short *_pctype;
+#else
+  extern const unsigned short **_imp___pctype;
+#define _pctype (*_imp___pctype)
 #endif
-
-/* these reproduce behaviour of lib underscored versions  */
-__CRT_INLINE int __cdecl __MINGW_NOTHROW _tolower(int c) {return ( c -'A'+'a');}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW _toupper(int c) {return ( c -'a'+'A');}
-
-/* TODO? Is it worth inlining ANSI tolower, toupper? Probably only
-   if we only want C-locale. */
-
-#endif /* _NO_CTYPE_INLINES */
-
-/* Wide character equivalents */
-
-#ifndef WEOF
-#define        WEOF    (wchar_t)(0xFFFF)
 #endif
 
-#ifndef _WCTYPE_T_DEFINED
-typedef wchar_t wctype_t;
-#define _WCTYPE_T_DEFINED
+#endif
 #endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW iswalnum(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswalpha(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswascii(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswcntrl(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswctype(wint_t, wctype_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW is_wctype(wint_t, wctype_t);       /* Obsolete! */
-_CRTIMP int __cdecl __MINGW_NOTHROW iswdigit(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswgraph(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswlower(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswprint(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswpunct(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswspace(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswupper(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW iswxdigit(wint_t);
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined __STRICT_ANSI__ || defined __cplusplus
-int __cdecl __MINGW_NOTHROW iswblank (wint_t);
+#ifndef _CRT_WCTYPEDATA_DEFINED
+#define _CRT_WCTYPEDATA_DEFINED
+#ifndef _CTYPE_DISABLE_MACROS
+#ifndef _wctype
+#ifdef _MSVCRT_
+  extern unsigned short *_wctype;
+#else
+  extern unsigned short **_imp___wctype;
+#define _wctype (*_imp___wctype)
+#endif
+#endif
+#ifdef _MSVCRT_
+#define __pwctype_func() (_pwctype)
+#ifndef _pwctype
+  extern const unsigned short *_pwctype;
+#endif
+#else
+#define __pwctype_func() (*_imp___pwctype)
+#ifndef _pwctype
+  extern const unsigned short **_imp___pwctype;
+#define _pwctype (*_imp___pwctype)
+#endif
+#endif
+#endif
 #endif
 
-/* Older MS docs uses wchar_t for arg and return type, while newer
-   online MS docs say arg is wint_t and return is int.
-   ISO C uses wint_t for both.  */
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW towlower (wint_t);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW towupper (wint_t);
+  /* CRT stuff */
+#if 1
+  extern const unsigned char __newclmap[];
+  extern const unsigned char __newcumap[];
+  extern pthreadlocinfo __ptlocinfo;
+  extern pthreadmbcinfo __ptmbcinfo;
+  extern int __globallocalestatus;
+  extern int __locale_changed;
+  extern struct threadlocaleinfostruct __initiallocinfo;
+  extern _locale_tstruct __initiallocalestructinfo;
+  pthreadlocinfo __cdecl __updatetlocinfo(void);
+  pthreadmbcinfo __cdecl __updatetmbcinfo(void);
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW isleadbyte (int);
+#define _UPPER 0x1
+#define _LOWER 0x2
+#define _DIGIT 0x4
+#define _SPACE 0x8
+
+#define _PUNCT 0x10
+#define _CONTROL 0x20
+#define _BLANK 0x40
+#define _HEX 0x80
+
+#define _LEADBYTE 0x8000
+#define _ALPHA (0x0100|_UPPER|_LOWER)
+
+#ifndef _CTYPE_DEFINED
+#define _CTYPE_DEFINED
+
+  _CRTIMP int __cdecl _isctype(int _C,int _Type);
+  _CRTIMP int __cdecl _isctype_l(int _C,int _Type,_locale_t _Locale);
+  _CRTIMP int __cdecl isalpha(int _C);
+  _CRTIMP int __cdecl _isalpha_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isupper(int _C);
+  _CRTIMP int __cdecl _isupper_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl islower(int _C);
+  _CRTIMP int __cdecl _islower_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isdigit(int _C);
+  _CRTIMP int __cdecl _isdigit_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isxdigit(int _C);
+  _CRTIMP int __cdecl _isxdigit_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isspace(int _C);
+  _CRTIMP int __cdecl _isspace_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl ispunct(int _C);
+  _CRTIMP int __cdecl _ispunct_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isalnum(int _C);
+  _CRTIMP int __cdecl _isalnum_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isprint(int _C);
+  _CRTIMP int __cdecl _isprint_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl isgraph(int _C);
+  _CRTIMP int __cdecl _isgraph_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl iscntrl(int _C);
+  _CRTIMP int __cdecl _iscntrl_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl toupper(int _C);
+  _CRTIMP int __cdecl tolower(int _C);
+  _CRTIMP int __cdecl _tolower(int _C);
+  _CRTIMP int __cdecl _tolower_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _toupper(int _C);
+  _CRTIMP int __cdecl _toupper_l(int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl __isascii(int _C);
+  _CRTIMP int __cdecl __toascii(int _C);
+  _CRTIMP int __cdecl __iscsymf(int _C);
+  _CRTIMP int __cdecl __iscsym(int _C);
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
+int __cdecl isblank(int _C);
+#endif
+#endif
 
-/* Also in wctype.h */
-#if ! (defined (__NO_INLINE__) || defined(__NO_CTYPE_INLINES) \
-       || defined(__WCTYPE_INLINES_DEFINED))
-#define __WCTYPE_INLINES_DEFINED
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalnum(wint_t wc) {return (iswctype(wc,_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalpha(wint_t wc) {return (iswctype(wc,_ALPHA));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswascii(wint_t wc) {return ((wc & ~0x7F) ==0);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswcntrl(wint_t wc) {return (iswctype(wc,_CONTROL));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswdigit(wint_t wc) {return (iswctype(wc,_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswgraph(wint_t wc) {return (iswctype(wc,_PUNCT|_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswlower(wint_t wc) {return (iswctype(wc,_LOWER));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswprint(wint_t wc) {return (iswctype(wc,_BLANK|_PUNCT|_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswpunct(wint_t wc) {return (iswctype(wc,_PUNCT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswspace(wint_t wc) {return (iswctype(wc,_SPACE));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswupper(wint_t wc) {return (iswctype(wc,_UPPER));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswxdigit(wint_t wc) {return (iswctype(wc,_HEX));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isleadbyte(int c) {return (_pctype[(unsigned char)(c)] & _LEADBYTE);}
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined __STRICT_ANSI__ || defined __cplusplus
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswblank (wint_t wc)
-  {return (iswctype(wc,_BLANK) || wc == L'\t');}
+#ifndef _WCTYPE_DEFINED
+#define _WCTYPE_DEFINED
+
+  int __cdecl iswalpha(wint_t _C);
+  _CRTIMP int __cdecl _iswalpha_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswupper(wint_t _C);
+  _CRTIMP int __cdecl _iswupper_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswlower(wint_t _C);
+  _CRTIMP int __cdecl _iswlower_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswdigit(wint_t _C);
+  _CRTIMP int __cdecl _iswdigit_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswxdigit(wint_t _C);
+  _CRTIMP int __cdecl _iswxdigit_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswspace(wint_t _C);
+  _CRTIMP int __cdecl _iswspace_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswpunct(wint_t _C);
+  _CRTIMP int __cdecl _iswpunct_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswalnum(wint_t _C);
+  _CRTIMP int __cdecl _iswalnum_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswprint(wint_t _C);
+  _CRTIMP int __cdecl _iswprint_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswgraph(wint_t _C);
+  _CRTIMP int __cdecl _iswgraph_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswcntrl(wint_t _C);
+  _CRTIMP int __cdecl _iswcntrl_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswascii(wint_t _C);
+  int __cdecl isleadbyte(int _C);
+  _CRTIMP int __cdecl _isleadbyte_l(int _C,_locale_t _Locale);
+  wint_t __cdecl towupper(wint_t _C);
+  _CRTIMP wint_t __cdecl _towupper_l(wint_t _C,_locale_t _Locale);
+  wint_t __cdecl towlower(wint_t _C);
+  _CRTIMP wint_t __cdecl _towlower_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswctype(wint_t _C,wctype_t _Type);
+  _CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
+  _CRTIMP int __cdecl __iswcsymf(wint_t _C);
+  _CRTIMP int __cdecl _iswcsymf_l(wint_t _C,_locale_t _Locale);
+  _CRTIMP int __cdecl __iswcsym(wint_t _C);
+  _CRTIMP int __cdecl _iswcsym_l(wint_t _C,_locale_t _Locale);
+  int __cdecl is_wctype(wint_t _C,wctype_t _Type);
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
+int __cdecl iswblank(wint_t _C);
+#endif
 #endif
 
-#endif /* !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED)) */
+#ifndef _CTYPE_DISABLE_MACROS
 
-#ifndef        __STRICT_ANSI__
-int __cdecl __MINGW_NOTHROW __isascii (int);
-int __cdecl __MINGW_NOTHROW __toascii (int);
-int __cdecl __MINGW_NOTHROW __iscsymf (int);           /* Valid first character in C symbol */
-int __cdecl __MINGW_NOTHROW __iscsym (int);            /* Valid character in C symbol (after first) */
+#ifndef MB_CUR_MAX
+#define MB_CUR_MAX ___mb_cur_max_func()
+#ifndef __mb_cur_max
+#ifdef _MSVCRT_
+  extern int __mb_cur_max;
+#else
+#define __mb_cur_max   (*_imp____mb_cur_max)
+  extern int *_imp____mb_cur_max;
+#endif
+#endif
+#ifdef _MSVCRT_
+#define ___mb_cur_max_func() (__mb_cur_max)
+#else
+#define ___mb_cur_max_func() (*_imp____mb_cur_max)
+#endif
+#endif
 
-#if !(defined (__NO_INLINE__) || defined (__NO_CTYPE_INLINES))
-__CRT_INLINE int __cdecl __MINGW_NOTHROW __isascii(int c) {return ((c & ~0x7F) == 0);} 
-__CRT_INLINE int __cdecl __MINGW_NOTHROW __toascii(int c) {return (c & 0x7F);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW __iscsymf(int c) {return (isalpha(c) || (c == '_'));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW __iscsym(int c)  {return  (isalnum(c) || (c == '_'));}
-#endif /* __NO_CTYPE_INLINES */
+#define __chvalidchk(a,b) (__PCTYPE_FUNC[(a)] & (b))
+#define _chvalidchk_l(_Char,_Flag,_Locale) (!_Locale ? __chvalidchk(_Char,_Flag) : ((_locale_t)_Locale)->locinfo->pctype[_Char] & (_Flag))
+#define _ischartype_l(_Char,_Flag,_Locale) (((_Locale)!=NULL && (((_locale_t)(_Locale))->locinfo->mb_cur_max) > 1) ? _isctype_l(_Char,(_Flag),_Locale) : _chvalidchk_l(_Char,_Flag,_Locale))
+#define _isalpha_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA,_Locale)
+#define _isupper_l(_Char,_Locale) _ischartype_l(_Char,_UPPER,_Locale)
+#define _islower_l(_Char,_Locale) _ischartype_l(_Char,_LOWER,_Locale)
+#define _isdigit_l(_Char,_Locale) _ischartype_l(_Char,_DIGIT,_Locale)
+#define _isxdigit_l(_Char,_Locale) _ischartype_l(_Char,_HEX,_Locale)
+#define _isspace_l(_Char,_Locale) _ischartype_l(_Char,_SPACE,_Locale)
+#define _ispunct_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT,_Locale)
+#define _isalnum_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA|_DIGIT,_Locale)
+#define _isprint_l(_Char,_Locale) _ischartype_l(_Char,_BLANK|_PUNCT|_ALPHA|_DIGIT,_Locale)
+#define _isgraph_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT|_ALPHA|_DIGIT,_Locale)
+#define _iscntrl_l(_Char,_Locale) _ischartype_l(_Char,_CONTROL,_Locale)
+#define _tolower(_Char) ((_Char)-'A'+'a')
+#define _toupper(_Char) ((_Char)-'a'+'A')
+#define __isascii(_Char) ((unsigned)(_Char) < 0x80)
+#define __toascii(_Char) ((_Char) & 0x7f)
+
+#ifndef _WCTYPE_INLINE_DEFINED
+#define _WCTYPE_INLINE_DEFINED
+
+#undef _CRT_WCTYPE_NOINLINE
+#ifndef __cplusplus
+#define iswalpha(_c) (iswctype(_c,_ALPHA))
+#define iswupper(_c) (iswctype(_c,_UPPER))
+#define iswlower(_c) (iswctype(_c,_LOWER))
+#define iswdigit(_c) (iswctype(_c,_DIGIT))
+#define iswxdigit(_c) (iswctype(_c,_HEX))
+#define iswspace(_c) (iswctype(_c,_SPACE))
+#define iswpunct(_c) (iswctype(_c,_PUNCT))
+#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
+#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
+#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
+#define iswcntrl(_c) (iswctype(_c,_CONTROL))
+#define iswascii(_c) ((unsigned)(_c) < 0x80)
+#define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
+#define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
+#define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
+#define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
+#define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
+#define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
+#define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
+#define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
+#define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
+#define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
+#define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
+#endif
+#endif
 
-#ifndef        _NO_OLDNAMES
-/* Not _CRTIMP */ 
-int __cdecl __MINGW_NOTHROW isascii (int);
-int __cdecl __MINGW_NOTHROW toascii (int);
-int __cdecl __MINGW_NOTHROW iscsymf (int);
-int __cdecl __MINGW_NOTHROW iscsym (int);
-#endif /* Not _NO_OLDNAMES */
+#define __iscsymf(_c) (isalpha(_c) || ((_c)=='_'))
+#define __iscsym(_c) (isalnum(_c) || ((_c)=='_'))
+#define __iswcsymf(_c) (iswalpha(_c) || ((_c)=='_'))
+#define __iswcsym(_c) (iswalnum(_c) || ((_c)=='_'))
+#define _iscsymf_l(_c,_p) (_isalpha_l(_c,_p) || ((_c)=='_'))
+#define _iscsym_l(_c,_p) (_isalnum_l(_c,_p) || ((_c)=='_'))
+#define _iswcsymf_l(_c,_p) (_iswalpha_l(_c,_p) || ((_c)=='_'))
+#define _iswcsym_l(_c,_p) (_iswalnum_l(_c,_p) || ((_c)=='_'))
+#endif
 
-#endif /* Not __STRICT_ANSI__ */
+#ifndef        NO_OLDNAMES
+#ifndef _CTYPE_DEFINED
+  int __cdecl isascii(int _C);
+  int __cdecl toascii(int _C);
+  int __cdecl iscsymf(int _C);
+  int __cdecl iscsym(int _C);
+#else
+#define isascii __isascii
+#define toascii __toascii
+#define iscsymf __iscsymf
+#define iscsym __iscsym
+#endif
+#endif
 
 #ifdef __cplusplus
 }
 #endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _CTYPE_H_ */
-
-
+#endif
index 86cd042..99ce69d 100644 (file)
@@ -1,73 +1,68 @@
-/*
- * direct.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Functions for manipulating paths and directories (included from io.h)
- * plus functions for setting the current drive.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-#ifndef        _DIRECT_H_
-#define        _DIRECT_H_
+#ifndef _INC_DIRECT
+#define _INC_DIRECT
 
-/* All the headers include this file. */
 #include <_mingw.h>
-
-#define __need_wchar_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
 #include <io.h>
 
-#ifndef RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
-#ifdef __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
 #ifndef _DISKFREE_T_DEFINED
-/* needed by _getdiskfree (also in dos.h) */
-struct _diskfree_t {
-       unsigned total_clusters;
-       unsigned avail_clusters;
-       unsigned sectors_per_cluster;
-       unsigned bytes_per_sector;
-};
 #define _DISKFREE_T_DEFINED
+  struct _diskfree_t {
+    unsigned total_clusters;
+    unsigned avail_clusters;
+    unsigned sectors_per_cluster;
+    unsigned bytes_per_sector;
+  };
 #endif
 
-/*
- * You really shouldn't be using these. Use the Win32 API functions instead.
- * However, it does make it easier to port older code.
- */
-_CRTIMP int __cdecl __MINGW_NOTHROW _getdrive (void);
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW _getdrives(void);
-_CRTIMP int __cdecl __MINGW_NOTHROW _chdrive (int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW _getdcwd (int, char*, int);
-_CRTIMP unsigned __cdecl __MINGW_NOTHROW _getdiskfree (unsigned, struct _diskfree_t *);
+  _CRTIMP char *__cdecl _getcwd(char *_DstBuf,int _SizeInBytes);
+  _CRTIMP char *__cdecl _getdcwd(int _Drive,char *_DstBuf,int _SizeInBytes);
+  char *__cdecl _getdcwd_nolock(int _Drive,char *_DstBuf,int _SizeInBytes);
+  _CRTIMP int __cdecl _chdir(const char *_Path);
+  _CRTIMP int __cdecl _mkdir(const char *_Path);
+  _CRTIMP int __cdecl _rmdir(const char *_Path);
+  _CRTIMP int __cdecl _chdrive(int _Drive);
+  _CRTIMP int __cdecl _getdrive(void);
+  _CRTIMP unsigned long __cdecl _getdrives(void);
 
-#ifndef        _NO_OLDNAMES
-# define diskfree_t _diskfree_t
+#ifndef _GETDISKFREE_DEFINED
+#define _GETDISKFREE_DEFINED
+  _CRTIMP unsigned __cdecl _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
 #endif
 
 #ifndef _WDIRECT_DEFINED
-/* wide character versions. Also in wchar.h */
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW _wchdir(const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wgetcwd(wchar_t*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wgetdcwd(int, wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wmkdir(const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wrmdir(const wchar_t*);
-#endif /* __MSVCRT__ */
 #define _WDIRECT_DEFINED
+  _CRTIMP wchar_t *__cdecl _wgetcwd(wchar_t *_DstBuf,int _SizeInWords);
+  _CRTIMP wchar_t *__cdecl _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
+  wchar_t *__cdecl _wgetdcwd_nolock(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
+  _CRTIMP int __cdecl _wchdir(const wchar_t *_Path);
+  _CRTIMP int __cdecl _wmkdir(const wchar_t *_Path);
+  _CRTIMP int __cdecl _wrmdir(const wchar_t *_Path);
 #endif
 
-#ifdef __cplusplus
-}
+#ifndef        NO_OLDNAMES
+
+#define diskfree_t _diskfree_t
+
+  char *__cdecl getcwd(char *_DstBuf,int _SizeInBytes);
+  int __cdecl chdir(const char *_Path);
+  int __cdecl mkdir(const char *_Path);
+  int __cdecl rmdir(const char *_Path);
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* Not _DIRECT_H_ */
+#pragma pack(pop)
+#endif
index e2a6689..cd31f59 100644 (file)
@@ -1,15 +1,18 @@
-/*
- * DIRENT.H (formerly DIRLIB.H)
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef        __STRICT_ANSI__
+
 #ifndef _DIRENT_H_
 #define _DIRENT_H_
 
-/* All the headers include this file. */
-#include <_mingw.h>
+
+#pragma pack(push,_CRT_PACKING)
 
 #include <io.h>
 
 extern "C" {
 #endif
 
-struct dirent
-{
-       long            d_ino;          /* Always zero. */
-       unsigned short  d_reclen;       /* Always zero. */
-       unsigned short  d_namlen;       /* Length of name in d_name. */
-       char            d_name[FILENAME_MAX]; /* File name. */
-};
-
-/*
- * This is an internal data structure. Good programmers will not use it
- * except as an argument to one of the functions below.
- * dd_stat field is now int (was short in older versions).
- */
-typedef struct
-{
-       /* disk transfer area for this dir */
-       struct _finddata_t      dd_dta;
-
-       /* dirent struct to return from dir (NOTE: this makes this thread
-        * safe as long as only one thread uses a particular DIR struct at
-        * a time) */
-       struct dirent           dd_dir;
-
-       /* _findnext handle */
-       long                    dd_handle;
-
-       /*
-         * Status of search:
-        *   0 = not started yet (next entry to read is first entry)
-        *  -1 = off the end
-        *   positive = 0 based index of next entry
-        */
-       int                     dd_stat;
-
-       /* given path for dir with search pattern (struct is extended) */
-       char                    dd_name[1];
-} DIR;
-
-DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
-struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
-int __cdecl __MINGW_NOTHROW closedir (DIR*);
-void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
-long __cdecl __MINGW_NOTHROW telldir (DIR*);
-void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);
-
-
-/* wide char versions */
-
-struct _wdirent
-{
-       long            d_ino;          /* Always zero. */
-       unsigned short  d_reclen;       /* Always zero. */
-       unsigned short  d_namlen;       /* Length of name in d_name. */
-       wchar_t         d_name[FILENAME_MAX]; /* File name. */
-};
-
-/*
- * This is an internal data structure. Good programmers will not use it
- * except as an argument to one of the functions below.
- */
-typedef struct
-{
-       /* disk transfer area for this dir */
-       struct _wfinddata_t     dd_dta;
-
-       /* dirent struct to return from dir (NOTE: this makes this thread
-        * safe as long as only one thread uses a particular DIR struct at
-        * a time) */
-       struct _wdirent         dd_dir;
-
-       /* _findnext handle */
-       long                    dd_handle;
-
-       /*
-         * Status of search:
-        *   0 = not started yet (next entry to read is first entry)
-        *  -1 = off the end
-        *   positive = 0 based index of next entry
-        */
-       int                     dd_stat;
-
-       /* given path for dir with search pattern (struct is extended) */
-       wchar_t                 dd_name[1];
-} _WDIR;
-
-
-
-_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
-struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
-int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
-void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
-long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
-void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
+  struct dirent
+  {
+    long               d_ino;          /* Always zero. */
+    unsigned short     d_reclen;       /* Always zero. */
+    unsigned short     d_namlen;       /* Length of name in d_name. */
+    char*              d_name;         /* File name. */
+    /* NOTE: The name in the dirent structure points to the name in the
+    *       finddata_t structure in the DIR. */
+  };
+
+  /*
+  * This is an internal data structure. Good programmers will not use it
+  * except as an argument to one of the functions below.
+  * dd_stat field is now int (was short in older versions).
+  */
+  typedef struct
+  {
+    /* disk transfer area for this dir */
+    struct _finddata_t dd_dta;
+
+    /* dirent struct to return from dir (NOTE: this makes this thread
+    * safe as long as only one thread uses a particular DIR struct at
+    * a time) */
+    struct dirent              dd_dir;
+
+    /* _findnext handle */
+    long                       dd_handle;
+
+    /*
+    * Status of search:
+    *   0 = not started yet (next entry to read is first entry)
+    *  -1 = off the end
+    *   positive = 0 based index of next entry
+    */
+    int                        dd_stat;
+
+    /* given path for dir with search pattern (struct is extended) */
+    char                       dd_name[1];
+  } DIR;
+
+  DIR* __cdecl opendir (const char*);
+  struct dirent* __cdecl readdir (DIR*);
+  int __cdecl closedir (DIR*);
+  void __cdecl rewinddir (DIR*);
+  long __cdecl telldir (DIR*);
+  void __cdecl seekdir (DIR*, long);
+
+
+  /* wide char versions */
+
+  struct _wdirent
+  {
+    long               d_ino;          /* Always zero. */
+    unsigned short     d_reclen;       /* Always zero. */
+    unsigned short     d_namlen;       /* Length of name in d_name. */
+    wchar_t*   d_name;         /* File name. */
+    /* NOTE: The name in the dirent structure points to the name in the         *       wfinddata_t structure in the _WDIR. */
+  };
+
+  /*
+  * This is an internal data structure. Good programmers will not use it
+  * except as an argument to one of the functions below.
+  */
+  typedef struct
+  {
+    /* disk transfer area for this dir */
+    struct _wfinddata_t        dd_dta;
+
+    /* dirent struct to return from dir (NOTE: this makes this thread
+    * safe as long as only one thread uses a particular DIR struct at
+    * a time) */
+    struct _wdirent            dd_dir;
+
+    /* _findnext handle */
+    long                       dd_handle;
+
+    /*
+    * Status of search:
+    *   0 = not started yet (next entry to read is first entry)
+    *  -1 = off the end
+    *   positive = 0 based index of next entry
+    */
+    int                        dd_stat;
+
+    /* given path for dir with search pattern (struct is extended) */
+    wchar_t                    dd_name[1];
+  } _WDIR;
+
+
+
+  _WDIR* __cdecl _wopendir (const wchar_t*);
+  struct _wdirent*  __cdecl _wreaddir (_WDIR*);
+  int __cdecl _wclosedir (_WDIR*);
+  void __cdecl _wrewinddir (_WDIR*);
+  long __cdecl _wtelldir (_WDIR*);
+  void __cdecl _wseekdir (_WDIR*, long);
 
 
 #ifdef __cplusplus
@@ -120,4 +126,10 @@ void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
 
 #endif /* Not RC_INVOKED */
 
+#pragma pack(pop)
+
 #endif /* Not _DIRENT_H_ */
+
+
+#endif /* Not __STRICT_ANSI__ */
+
index e6bf561..8530582 100644 (file)
@@ -1,89 +1,55 @@
-/*
- * dos.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * DOS-specific functions and structures.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_DOS
+#define _INC_DOS
 
-#ifndef        _DOS_H_
-#define        _DOS_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
-
-#define __need_wchar_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-/* For DOS file attributes */
 #include <io.h>
 
-#ifndef RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef __MSVCRT__ /* these are in CRTDLL, but not MSVCRT */
-#ifndef __DECLSPEC_SUPPORTED
-extern unsigned int *_imp___basemajor_dll;
-extern unsigned int *_imp___baseminor_dll;
-extern unsigned int *_imp___baseversion_dll;
-extern unsigned int *_imp___osmajor_dll;
-extern unsigned int *_imp___osminor_dll;
-extern unsigned int *_imp___osmode_dll;
-
-#define _basemajor (*_imp___basemajor_dll)
-#define _baseminor (*_imp___baseminor_dll)
-#define _baseversion (*_imp___baseversion_dll)
-#define _osmajor (*_imp___osmajor_dll)
-#define _osminor (*_imp___osminor_dll)
-#define _osmode (*_imp___osmode_dll)
-
-#else /* __DECLSPEC_SUPPORTED */
-
-__MINGW_IMPORT unsigned int _basemajor_dll;
-__MINGW_IMPORT unsigned int _baseminor_dll;
-__MINGW_IMPORT unsigned int _baseversion_dll;
-__MINGW_IMPORT unsigned int _osmajor_dll;
-__MINGW_IMPORT unsigned int _osminor_dll;
-__MINGW_IMPORT unsigned int _osmode_dll;
+#ifndef _DISKFREE_T_DEFINED
+#define _DISKFREE_T_DEFINED
 
-#define _basemajor _basemajor_dll
-#define _baseminor _baseminor_dll
-#define _baseversion _baseversion_dll
-#define _osmajor _osmajor_dll
-#define _osminor _osminor_dll
-#define _osmode _osmode_dll
+  struct _diskfree_t {
+    unsigned total_clusters;
+    unsigned avail_clusters;
+    unsigned sectors_per_cluster;
+    unsigned bytes_per_sector;
+  };
+#endif
 
-#endif /* __DECLSPEC_SUPPORTED */
-#endif /* ! __MSVCRT__ */
+#define _A_NORMAL 0x00
+#define _A_RDONLY 0x01
+#define _A_HIDDEN 0x02
+#define _A_SYSTEM 0x04
+#define _A_SUBDIR 0x10
+#define _A_ARCH 0x20
 
-#ifndef _DISKFREE_T_DEFINED
-/* needed by _getdiskfree (also in direct.h) */
-struct _diskfree_t {
-       unsigned total_clusters;
-       unsigned avail_clusters;
-       unsigned sectors_per_cluster;
-       unsigned bytes_per_sector;
-};
-#define _DISKFREE_T_DEFINED
+#ifndef _GETDISKFREE_DEFINED
+#define _GETDISKFREE_DEFINED
+  _CRTIMP unsigned __cdecl _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
 #endif
 
-_CRTIMP unsigned __cdecl __MINGW_NOTHROW _getdiskfree (unsigned, struct _diskfree_t *);
+//#if (defined(_X86_) && !defined(__x86_64))
+//  void __cdecl _disable(void);
+//  void __cdecl _enable(void);
+//#endif
 
-#ifndef        _NO_OLDNAMES
-# define diskfree_t _diskfree_t
+#ifndef        NO_OLDNAMES
+#define diskfree_t _diskfree_t
 #endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _DOS_H_ */
+#pragma pack(pop)
+#endif
index e3690a7..c2df015 100644 (file)
-/*
- * errno.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Error numbers and access to error reporting.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_ERRNO
+#define _INC_ERRNO
 
-#ifndef _ERRNO_H_
-#define        _ERRNO_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * Error numbers.
- * TODO: Can't be sure of some of these assignments, I guessed from the
- * names given by strerror and the defines in the Cygnus errno.h. A lot
- * of the names from the Cygnus errno.h are not represented, and a few
- * of the descriptions returned by strerror do not obviously match
- * their error naming.
- */
-#define EPERM          1       /* Operation not permitted */
-#define        ENOFILE         2       /* No such file or directory */
-#define        ENOENT          2
-#define        ESRCH           3       /* No such process */
-#define        EINTR           4       /* Interrupted function call */
-#define        EIO             5       /* Input/output error */
-#define        ENXIO           6       /* No such device or address */
-#define        E2BIG           7       /* Arg list too long */
-#define        ENOEXEC         8       /* Exec format error */
-#define        EBADF           9       /* Bad file descriptor */
-#define        ECHILD          10      /* No child processes */
-#define        EAGAIN          11      /* Resource temporarily unavailable */
-#define        ENOMEM          12      /* Not enough space */
-#define        EACCES          13      /* Permission denied */
-#define        EFAULT          14      /* Bad address */
-/* 15 - Unknown Error */
-#define        EBUSY           16      /* strerror reports "Resource device" */
-#define        EEXIST          17      /* File exists */
-#define        EXDEV           18      /* Improper link (cross-device link?) */
-#define        ENODEV          19      /* No such device */
-#define        ENOTDIR         20      /* Not a directory */
-#define        EISDIR          21      /* Is a directory */
-#define        EINVAL          22      /* Invalid argument */
-#define        ENFILE          23      /* Too many open files in system */
-#define        EMFILE          24      /* Too many open files */
-#define        ENOTTY          25      /* Inappropriate I/O control operation */
-/* 26 - Unknown Error */
-#define        EFBIG           27      /* File too large */
-#define        ENOSPC          28      /* No space left on device */
-#define        ESPIPE          29      /* Invalid seek (seek on a pipe?) */
-#define        EROFS           30      /* Read-only file system */
-#define        EMLINK          31      /* Too many links */
-#define        EPIPE           32      /* Broken pipe */
-#define        EDOM            33      /* Domain error (math functions) */
-#define        ERANGE          34      /* Result too large (possibly too small) */
-/* 35 - Unknown Error */
-#define        EDEADLOCK       36      /* Resource deadlock avoided (non-Cyg) */
-#define        EDEADLK         36
-/* 37 - Unknown Error */
-#define        ENAMETOOLONG    38      /* Filename too long (91 in Cyg?) */
-#define        ENOLCK          39      /* No locks available (46 in Cyg?) */
-#define        ENOSYS          40      /* Function not implemented (88 in Cyg?) */
-#define        ENOTEMPTY       41      /* Directory not empty (90 in Cyg?) */
-#define        EILSEQ          42      /* Illegal byte sequence */
-
-/*
- * NOTE: ENAMETOOLONG and ENOTEMPTY conflict with definitions in the
- *       sockets.h header provided with windows32api-0.1.2.
- *       You should go and put an #if 0 ... #endif around the whole block
- *       of errors (look at the comment above them).
- */
-
-#ifndef        RC_INVOKED
-
-#ifdef __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * Definitions of errno. For _doserrno, sys_nerr and * sys_errlist, see
- * stdlib.h.
- */
-#ifdef _UWIN
-#undef errno
-extern int errno;
-#else
-_CRTIMP int* __cdecl __MINGW_NOTHROW _errno(void);
-#define        errno           (*_errno())
+#ifndef _CRT_ERRNO_DEFINED
+#define _CRT_ERRNO_DEFINED
+  _CRTIMP extern int *__cdecl _errno(void);
+#define errno (*_errno())
+
+  errno_t __cdecl _set_errno(int _Value);
+  errno_t __cdecl _get_errno(int *_Value);
 #endif
 
-#ifdef __cplusplus
-}
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define EDEADLK 36
+#define ENAMETOOLONG 38
+#define ENOLCK 39
+#define ENOSYS 40
+#define ENOTEMPTY 41
+
+#ifndef RC_INVOKED
+#if !defined(_SECURECRT_ERRCODE_VALUES_DEFINED)
+#define _SECURECRT_ERRCODE_VALUES_DEFINED
+#define EINVAL 22
+#define ERANGE 34
+#define EILSEQ 42
+#define STRUNCATE 80
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#define EDEADLOCK EDEADLK
 
-#endif /* Not _ERRNO_H_ */
+#ifdef __cplusplus
+}
+#endif
+#endif
index 6be9b85..64893e3 100644 (file)
@@ -15,9 +15,7 @@
 #define        _EXCPT_H_
 
 /* All the headers include this file. */
-#if defined(__MINGW32__)
 #include <_mingw.h>
-#endif
 
 /*
  * NOTE: The constants structs and typedefs below should be defined in the
index 9bff935..607a1cb 100644 (file)
@@ -1,75 +1,52 @@
-/*
- * fcntl.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Access constants for _open. Note that the permissions constants are
- * in sys/stat.h (ick).
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-#ifndef _FCNTL_H_
-#define _FCNTL_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * It appears that fcntl.h should include io.h for compatibility...
- */
 #include <io.h>
 
-/* Specifiy one of these flags to define the access mode. */
-#define        _O_RDONLY       0
-#define _O_WRONLY      1
-#define _O_RDWR                2
-
-/* Mask for access mode bits in the _open flags. */
-#define _O_ACCMODE     (_O_RDONLY|_O_WRONLY|_O_RDWR)
-
-#define        _O_APPEND       0x0008  /* Writes will add to the end of the file. */
-
-#define        _O_RANDOM       0x0010
-#define        _O_SEQUENTIAL   0x0020
-#define        _O_TEMPORARY    0x0040  /* Make the file dissappear after closing.
-                                * WARNING: Even if not created by _open! */
-#define        _O_NOINHERIT    0x0080
-
-#define        _O_CREAT        0x0100  /* Create the file if it does not exist. */
-#define        _O_TRUNC        0x0200  /* Truncate the file if it does exist. */
-#define        _O_EXCL         0x0400  /* Open only if the file does not exist. */
+#ifndef _INC_FCNTL
+#define _INC_FCNTL
 
-#define _O_SHORT_LIVED  0x1000
+#define _O_RDONLY 0x0000
+#define _O_WRONLY 0x0001
+#define _O_RDWR 0x0002
 
-/* NOTE: Text is the default even if the given _O_TEXT bit is not on. */
-#define        _O_TEXT         0x4000  /* CR-LF in file becomes LF in memory. */
-#define        _O_BINARY       0x8000  /* Input and output is not translated. */
-#define        _O_RAW          _O_BINARY
-
-#if (__MSVCRT_VERSION__ >= 0x0800)
-#define _O_WTEXT       0x10000
-#define _O_U16TEXT     0x20000
-#define _O_U8TEXT      0x40000
+#define _O_ACCMODE     (_O_RDONLY|_O_WRONLY|_O_RDWR)
+#define _O_APPEND 0x0008
+#define _O_CREAT 0x0100
+#define _O_TRUNC 0x0200
+#define _O_EXCL 0x0400
+#define _O_TEXT 0x4000
+#define _O_BINARY 0x8000
+#define _O_WTEXT 0x10000
+#define _O_U16TEXT 0x20000
+#define _O_U8TEXT 0x40000
+
+#define _O_RAW _O_BINARY
+#define _O_NOINHERIT 0x0080
+#define _O_TEMPORARY 0x0040
+#define _O_SHORT_LIVED 0x1000
+
+#define _O_SEQUENTIAL 0x0020
+#define _O_RANDOM 0x0010
+
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+#define O_RDONLY _O_RDONLY
+#define O_WRONLY _O_WRONLY
+#define O_RDWR _O_RDWR
+#define O_APPEND _O_APPEND
+#define O_CREAT _O_CREAT
+#define O_TRUNC _O_TRUNC
+#define O_EXCL _O_EXCL
+#define O_TEXT _O_TEXT
+#define O_BINARY _O_BINARY
+#define O_RAW _O_BINARY
+#define O_TEMPORARY _O_TEMPORARY
+#define O_NOINHERIT _O_NOINHERIT
+#define O_SEQUENTIAL _O_SEQUENTIAL
+#define O_RANDOM _O_RANDOM
+#endif
 #endif
-
-#ifndef        _NO_OLDNAMES
-
-/* POSIX/Non-ANSI names for increased portability */
-#define        O_RDONLY        _O_RDONLY
-#define O_WRONLY       _O_WRONLY
-#define O_RDWR         _O_RDWR
-#define O_ACCMODE      _O_ACCMODE
-#define        O_APPEND        _O_APPEND
-#define        O_CREAT         _O_CREAT
-#define        O_TRUNC         _O_TRUNC
-#define        O_EXCL          _O_EXCL
-#define        O_TEXT          _O_TEXT
-#define        O_BINARY        _O_BINARY
-#define        O_TEMPORARY     _O_TEMPORARY
-#define O_NOINHERIT    _O_NOINHERIT
-#define O_SEQUENTIAL   _O_SEQUENTIAL
-#define        O_RANDOM        _O_RANDOM
-
-#endif /* Not _NO_OLDNAMES */
-
-#endif /* Not _FCNTL_H_ */
index ddae892..6a7d123 100644 (file)
@@ -1,8 +1,11 @@
+/**
+ * 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 _FENV_H_
 #define _FENV_H_
 
-#include <_mingw.h>
-
 /* FPU status word exception flags */
 #define FE_INVALID     0x01
 #define FE_DENORMAL    0x02
 #define __MXCSR_EXCEPT_FLAG_SHIFT 0
 
 /* How much to shift FE status word exception flags
-   to get the MXCSR exeptions masks,  */
-#define __MXCSR_EXCEPT_MASK_SHIFT 7
-
-/* How much to shift FE control word rounding flags
    to get MXCSR rounding flags,  */
 #define __MXCSR_ROUND_FLAG_SHIFT 3
 
@@ -55,9 +54,9 @@ typedef struct
   unsigned short __ip_selector;  
   unsigned short __opcode;
   unsigned int  __data_offset;
-  unsigned short __data_selector;
-  unsigned short  __unused3;
-  unsigned int __mxcsr; /* contents of the MXCSR register  */
+  unsigned short __data_selector;  
+  unsigned short __unused3;
+  unsigned int   __mxcsr; /* contents of the MXCSR register  */
 } fenv_t;
 
 
@@ -81,23 +80,23 @@ extern "C" {
 /*TODO: Some of these could be inlined */
 /* 7.6.2 Exception */
 
-extern int __cdecl __MINGW_NOTHROW feclearexcept (int);
-extern int __cdecl __MINGW_NOTHROW fegetexceptflag (fexcept_t * flagp, int excepts);
-extern int __cdecl __MINGW_NOTHROW feraiseexcept (int excepts );
-extern int __cdecl __MINGW_NOTHROW fesetexceptflag (const fexcept_t *, int);
-extern int __cdecl __MINGW_NOTHROW fetestexcept (int excepts);
+extern int __cdecl feclearexcept (int);
+extern int __cdecl fegetexceptflag (fexcept_t * flagp, int excepts);
+extern int __cdecl feraiseexcept (int excepts );
+extern int __cdecl fesetexceptflag (const fexcept_t *, int);
+extern int __cdecl fetestexcept (int excepts);
 
 /* 7.6.3 Rounding */
 
-extern int __cdecl __MINGW_NOTHROW fegetround (void);
-extern int __cdecl __MINGW_NOTHROW fesetround (int mode);
+extern int __cdecl fegetround (void);
+extern int __cdecl fesetround (int mode);
 
 /* 7.6.4 Environment */
 
-extern int __cdecl __MINGW_NOTHROW fegetenv (fenv_t * envp);
-extern int __cdecl __MINGW_NOTHROW fesetenv (const fenv_t * );
-extern int __cdecl __MINGW_NOTHROW feupdateenv (const fenv_t *);
-extern int __cdecl __MINGW_NOTHROW feholdexcept (fenv_t *);
+extern int __cdecl fegetenv(fenv_t * envp);
+extern int __cdecl fesetenv(const fenv_t * );
+extern int __cdecl feupdateenv(const fenv_t *);
+extern int __cdecl feholdexcept(fenv_t *);
 
 #ifdef __cplusplus
 }
index 3b1ca89..e8bf302 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/* 
  * float.h
  * This file has no copyright assigned and is placed in the Public Domain.
  * This file is a part of the mingw-runtime package.
@@ -12,7 +12,7 @@
  * NOTE: GCC provides float.h, but it doesn't include the non-standard
  *       stuff for accessing the fp controller. We include_next the
  *       GCC-supplied header and just define the MS-specific extensions
- *       here.
+ *       here.     
  *
  */
 
@@ -116,7 +116,7 @@ _CRTIMP unsigned int __cdecl __MINGW_NOTHROW _statusfp (void);      /* Report the FPU
    word to 0x37f (64 bit mantissa precison rather than 53 bit).
    By default, the mingw version of _fpreset sets fp control as
    per fninit. To use the MSVCRT.dll _fpreset, include CRT_fp8.o when
-   building your application.
+   building your application.   
 */
 void __cdecl __MINGW_NOTHROW _fpreset (void);
 void __cdecl __MINGW_NOTHROW fpreset (void);
@@ -148,6 +148,4 @@ _CRTIMP int __cdecl __MINGW_NOTHROW _isnan (double);
 
 #endif /* Not __STRICT_ANSI__ */
 
-#endif /* _FLOAT_H_ */
-
-
+#endif /* _MINGW_FLOAT_H_ */
index 0d42a07..1a5b555 100644 (file)
@@ -1,3 +1,8 @@
+/**
+ * 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.
+ */
 /* 7.8 Format conversion of integer types <inttypes.h> */
 
 #ifndef _INTTYPES_H_
@@ -20,7 +25,7 @@ typedef struct {
 #if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
 
 /* 7.8.1 Macros for format specifiers
- *
+ * 
  * MS runtime does not yet understand C9x standard "ll"
  * length specifier. It appears to treat "ll" as "l".
  * The non-standard I64 length specifier causes warning in GCC,
@@ -44,7 +49,6 @@ typedef struct {
 #define PRIdFAST64 "I64d"
 
 #define PRIdMAX "I64d"
-#define PRIdPTR "d"
 
 #define PRIi8 "i"
 #define PRIi16 "i"
@@ -62,7 +66,6 @@ typedef struct {
 #define PRIiFAST64 "I64i"
 
 #define PRIiMAX "I64i"
-#define PRIiPTR "i"
 
 #define PRIo8 "o"
 #define PRIo16 "o"
@@ -81,8 +84,6 @@ typedef struct {
 
 #define PRIoMAX "I64o"
 
-#define PRIoPTR "o"
-
 /* fprintf macros for unsigned types */
 #define PRIu8 "u"
 #define PRIu16 "u"
@@ -101,7 +102,6 @@ typedef struct {
 #define PRIuFAST64 "I64u"
 
 #define PRIuMAX "I64u"
-#define PRIuPTR "u"
 
 #define PRIx8 "x"
 #define PRIx16 "x"
@@ -119,7 +119,6 @@ typedef struct {
 #define PRIxFAST64 "I64x"
 
 #define PRIxMAX "I64x"
-#define PRIxPTR "x"
 
 #define PRIX8 "X"
 #define PRIX16 "X"
@@ -137,7 +136,6 @@ typedef struct {
 #define PRIXFAST64 "I64X"
 
 #define PRIXMAX "I64X"
-#define PRIXPTR "X"
 
 /*
  *   fscanf macros for signed int types
@@ -159,7 +157,6 @@ typedef struct {
 #define SCNdFAST64 "I64d"
 
 #define SCNdMAX "I64d"
-#define SCNdPTR "d"
 
 #define SCNi16 "hi"
 #define SCNi32 "i"
@@ -174,7 +171,6 @@ typedef struct {
 #define SCNiFAST64 "I64i"
 
 #define SCNiMAX "I64i"
-#define SCNiPTR "i"
 
 #define SCNo16 "ho"
 #define SCNo32 "o"
@@ -189,7 +185,6 @@ typedef struct {
 #define SCNoFAST64 "I64o"
 
 #define SCNoMAX "I64o"
-#define SCNoPTR "o"
 
 #define SCNx16 "hx"
 #define SCNx32 "x"
@@ -204,8 +199,6 @@ typedef struct {
 #define SCNxFAST64 "I64x"
 
 #define SCNxMAX "I64x"
-#define SCNxPTR "x"
-
 
 /* fscanf macros for unsigned int types */
 
@@ -222,12 +215,37 @@ typedef struct {
 #define SCNuFAST64 "I64u"
 
 #define SCNuMAX "I64u"
-#define SCNuPTR "u"
+
+#ifdef _WIN64
+#define PRIdPTR "I64d"
+#define PRIiPTR "I64i"
+#define PRIoPTR "I64o"
+#define PRIuPTR "I64u"
+#define PRIxPTR "I64x"
+#define PRIXPTR "I64X"
+#define SCNdPTR "I64d"
+#define SCNiPTR "I64i"
+#define SCNoPTR "I64o"
+#define SCNxPTR "I64x"
+#define SCNuPTR "I64u"
+#else
+#define PRIdPTR "d"
+#define PRIiPTR "i"
+#define PRIoPTR "o"
+#define PRIuPTR "u"
+#define PRIxPTR "x"
+#define PRIXPTR "X"
+#define SCNdPTR "d"
+#define SCNiPTR "i"
+#define SCNoPTR "o"
+#define SCNxPTR "x"
+ #define SCNuPTR "u"
+#endif
 
 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 /*
  * no length modifier for char types prior to C9x
- * MS runtime  scanf appears to treat "hh" as "h"
+ * MS runtime  scanf appears to treat "hh" as "h" 
  */
 
 /* signed char */
@@ -255,20 +273,21 @@ typedef struct {
 
 #endif /* !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) */
 
-__CRT_INLINE intmax_t __cdecl __MINGW_NOTHROW imaxabs (intmax_t j)
+intmax_t __cdecl imaxabs (intmax_t j);
+__CRT_INLINE intmax_t __cdecl imaxabs (intmax_t j)
        {return (j >= 0 ? j : -j);}
-imaxdiv_t __cdecl __MINGW_NOTHROW imaxdiv (intmax_t numer, intmax_t denom);
+imaxdiv_t __cdecl imaxdiv (intmax_t numer, intmax_t denom);
 
 /* 7.8.2 Conversion functions for greatest-width integer types */
 
-intmax_t __cdecl __MINGW_NOTHROW strtoimax (const char* __restrict__ nptr,
+intmax_t __cdecl strtoimax (const char* __restrict__ nptr,
                             char** __restrict__ endptr, int base);
-uintmax_t __cdecl __MINGW_NOTHROW strtoumax (const char* __restrict__ nptr,
+uintmax_t __cdecl strtoumax (const char* __restrict__ nptr,
                             char** __restrict__ endptr, int base);
 
-intmax_t __cdecl __MINGW_NOTHROW wcstoimax (const wchar_t* __restrict__ nptr,
+intmax_t __cdecl wcstoimax (const wchar_t* __restrict__ nptr,
                             wchar_t** __restrict__ endptr, int base);
-uintmax_t __cdecl __MINGW_NOTHROW wcstoumax (const wchar_t* __restrict__ nptr,
+uintmax_t __cdecl wcstoumax (const wchar_t* __restrict__ nptr,
                             wchar_t** __restrict__ endptr, int base);
 
 #ifdef __cplusplus
index 0d4a688..552dc47 100644 (file)
-/* 
- * io.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * System level I/O functions and types.
- *
+ * 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_
+#ifndef _IO_H_
+#define _IO_H_
 
-/* All the headers include this file. */
 #include <_mingw.h>
+#include <string.h>
 
-/* MSVC's io.h contains the stuff from dir.h, so I will too.
- * NOTE: This also defines off_t, the file offset type, through
- *       an inclusion of sys/types.h */
+#pragma pack(push,_CRT_PACKING)
 
-#include <sys/types.h> /* To get time_t.  */
+#ifndef _POSIX_
 
-/*
- * Attributes of files as returned by _findfirst et al.
- */
-#define        _A_NORMAL       0x00000000
-#define        _A_RDONLY       0x00000001
-#define        _A_HIDDEN       0x00000002
-#define        _A_SYSTEM       0x00000004
-#define        _A_VOLID        0x00000008
-#define        _A_SUBDIR       0x00000010
-#define        _A_ARCH         0x00000020
+#ifdef __cplusplus
+extern "C" {
+#endif
 
+_CRTIMP char* __cdecl _getcwd (char*, int);
+#ifndef _FSIZE_T_DEFINED
+  typedef unsigned long _fsize_t;
+#define _FSIZE_T_DEFINED
+#endif
 
-#ifndef RC_INVOKED
+#ifndef _FINDDATA_T_DEFINED
+
+  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 _finddata32i64_t {
+    unsigned attrib;
+    __time32_t time_create;
+    __time32_t time_access;
+    __time32_t time_write;
+    __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;
+    __int64 size;
+    char name[260];
+  };
+/* #endif */
+
+#ifdef _USE_32BIT_TIME_T
+#define _finddata_t _finddata32_t
+#define _finddatai64_t _finddata32i64_t
 
-#ifndef _INTPTR_T_DEFINED
-#define _INTPTR_T_DEFINED
 #ifdef _WIN64
-  typedef __int64 intptr_t;
+#define _findfirst _findfirst32
+#define _findnext _findnext32
 #else
-  typedef int intptr_t;
-#endif
+#define _findfirst32 _findfirst
+#define _findnext32 _findnext
 #endif
+#define _findfirsti64 _findfirst32i64
+#define _findnexti64 _findnext32i64
+#else
+#define _finddata_t _finddata64i32_t
+#define _finddatai64_t __finddata64_t
 
-#ifndef        _FSIZE_T_DEFINED
-typedef        unsigned long   _fsize_t;
-#define _FSIZE_T_DEFINED
+#define _findfirst _findfirst64i32
+#define _findnext _findnext64i32
+#define _findfirsti64 _findfirst64
+#define _findnexti64 _findnext64
 #endif
 
-/*
- * The maximum length of a file name. You should use GetVolumeInformation
- * instead of this constant. But hey, this works.
- * Also defined in stdio.h. 
- */
-#ifndef FILENAME_MAX
-#define        FILENAME_MAX    (260)
+#define _FINDDATA_T_DEFINED
 #endif
 
-/*
- * The following structure is filled in by _findfirst or _findnext when
- * they succeed in finding a match.
- */
-struct _finddata_t
-{
-       unsigned        attrib;         /* Attributes, see constants above. */
-       time_t          time_create;
-       time_t          time_access;    /* always midnight local time */
-       time_t          time_write;
-       _fsize_t        size;
-       char            name[FILENAME_MAX];     /* may include spaces. */
-};
-
-struct _finddatai64_t {
-    unsigned    attrib;
-    time_t      time_create;
-    time_t      time_access;
-    time_t      time_write;
-    __int64     size;
-    char        name[FILENAME_MAX];
-};
-
-struct __finddata64_t {
-        unsigned    attrib;
-        __time64_t  time_create;    
-        __time64_t  time_access;    
-        __time64_t  time_write;
-        _fsize_t    size;
-         char       name[FILENAME_MAX];
-};
-
 #ifndef _WFINDDATA_T_DEFINED
-struct _wfinddata_t {
-       unsigned        attrib;
-       time_t          time_create;    /* -1 for FAT file systems */
-       time_t          time_access;    /* -1 for FAT file systems */
-       time_t          time_write;
-       _fsize_t        size;
-       wchar_t         name[FILENAME_MAX];     /* may include spaces. */
-};
-
-struct _wfinddatai64_t {
-    unsigned    attrib;
-    time_t      time_create;
-    time_t      time_access;
-    time_t      time_write;
-    __int64     size;
-    wchar_t     name[FILENAME_MAX];
-};
-
-struct __wfinddata64_t {
-        unsigned    attrib;
-        __time64_t  time_create;    
-        __time64_t  time_access;
-        __time64_t  time_write;
-        _fsize_t    size;
-        wchar_t     name[FILENAME_MAX];
-};
+
+  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 _wfinddata32i64_t {
+    unsigned attrib;
+    __time32_t time_create;
+    __time32_t time_access;
+    __time32_t time_write;
+    __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;
+    __int64 size;
+    wchar_t name[260];
+  };
+/* #endif */
+
+#ifdef _USE_32BIT_TIME_T
+#define _wfinddata_t _wfinddata32_t
+#define _wfinddatai64_t _wfinddata32i64_t
+
+#define _wfindfirst _wfindfirst32
+#define _wfindnext _wfindnext32
+#define _wfindfirsti64 _wfindfirst32i64
+#define _wfindnexti64 _wfindnext32i64
+#else
+#define _wfinddata_t _wfinddata64i32_t
+#define _wfinddatai64_t _wfinddata64_t
+
+#define _wfindfirst _wfindfirst64i32
+#define _wfindnext _wfindnext64i32
+#define _wfindfirsti64 _wfindfirst64
+#define _wfindnexti64 _wfindnext64
+#endif
 
 #define _WFINDDATA_T_DEFINED
 #endif
 
-#ifdef __cplusplus
-extern "C" {
+#define _A_NORMAL 0x00
+#define _A_RDONLY 0x01
+#define _A_HIDDEN 0x02
+#define _A_SYSTEM 0x04
+#define _A_SUBDIR 0x10
+#define _A_ARCH 0x20
+
+#ifndef _SIZE_T_DEFINED
+#define _SIZE_T_DEFINED
+#undef size_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef unsigned int size_t __attribute__ ((mode (DI)));
+#else
+  typedef unsigned __int64 size_t;
+#endif
+#else
+  typedef unsigned int size_t;
+#endif
 #endif
 
-/*
- * Functions for searching for files. _findfirst returns -1 if no match
- * is found. Otherwise it returns a handle to be used in _findnext and
- * _findclose calls. _findnext also returns -1 if no match could be found,
- * and 0 if a match was found. Call _findclose when you are finished.
- */
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+#undef ssize_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int ssize_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 ssize_t;
+#endif
+#else
+  typedef int ssize_t;
+#endif
+#endif
 
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst (const char*, struct _finddata_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findnext (intptr_t, struct _finddata_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findclose (intptr_t);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _chdir (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW _getcwd (char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mkdir (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW _mktemp (char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _rmdir (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _chmod (const char*, int);
-
-#ifdef __MSVCRT__
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW _filelengthi64(int);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirsti64(const char*, struct _finddatai64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findnexti64(intptr_t, struct _finddatai64_t*);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW _lseeki64(int, __int64, int);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW _telli64(int);
-/* These require newer versions of msvcrt.dll (6.1 or higher). */ 
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst64(const char*, struct __finddata64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findnext64(intptr_t, struct __finddata64_t*); 
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-
-#ifndef __NO_MINGW_LFS
-__CRT_INLINE off64_t lseek64 (int, off64_t, int);
-__CRT_INLINE off64_t lseek64 (int fd, off64_t offset, int whence) 
-{
-  return _lseeki64(fd, (__int64) offset, whence);
-}
+#ifndef _OFF_T_DEFINED
+#define _OFF_T_DEFINED
+#ifndef _OFF_T_
+#define _OFF_T_
+  typedef long _off_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long off_t;
+#endif
+#endif
+#endif
+
+#ifndef _OFF64_T_DEFINED
+#define _OFF64_T_DEFINED
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int _off64_t __attribute__ ((mode (DI)));
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef int off64_t __attribute__ ((mode (DI)));
+#endif
+#else
+  typedef long long _off64_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long long off64_t;
+#endif
 #endif
+#endif
+
+  /* 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 */
 
-#endif /* __MSVCRT__ */
+  _CRTIMP int __cdecl _access(const char *_Filename,int _AccessMode);
+  _CRTIMP int __cdecl _chmod(const char *_Filename,int _Mode);
+  _CRTIMP int __cdecl _chsize(int _FileHandle,long _Size);
+  _CRTIMP int __cdecl _close(int _FileHandle);
+  _CRTIMP int __cdecl _commit(int _FileHandle);
+  _CRTIMP int __cdecl _creat(const char *_Filename,int _PermissionMode);
+  _CRTIMP int __cdecl _dup(int _FileHandle);
+  _CRTIMP int __cdecl _dup2(int _FileHandleSrc,int _FileHandleDst);
+  _CRTIMP int __cdecl _eof(int _FileHandle);
+  _CRTIMP long __cdecl _filelength(int _FileHandle);
+  _CRTIMP intptr_t __cdecl _findfirst32(const char *_Filename,struct _finddata32_t *_FindData);
+  _CRTIMP int __cdecl _findnext32(intptr_t _FindHandle,struct _finddata32_t *_FindData);
+  _CRTIMP int __cdecl _findclose(intptr_t _FindHandle);
+  _CRTIMP int __cdecl _isatty(int _FileHandle);
+  _CRTIMP int __cdecl _locking(int _FileHandle,int _LockMode,long _NumOfBytes);
+  _CRTIMP long __cdecl _lseek(int _FileHandle,long _Offset,int _Origin);
+  _off64_t lseek64(int fd,_off64_t offset, int whence);
+  _CRTIMP char *__cdecl _mktemp(char *_TemplateName);
+  _CRTIMP int __cdecl _pipe(int *_PtHandles,unsigned int _PipeSize,int _TextMode);
+  _CRTIMP int __cdecl _read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount);
+
+#ifndef _CRT_DIRECTORY_DEFINED
+#define _CRT_DIRECTORY_DEFINED
+  int __cdecl remove(const char *_Filename);
+  int __cdecl rename(const char *_OldFilename,const char *_NewFilename);
+  _CRTIMP int __cdecl _unlink(const char *_Filename);
+#ifndef        NO_OLDNAMES
+  int __cdecl unlink(const char *_Filename);
+#endif
+#endif
 
-#ifndef _NO_OLDNAMES
+  _CRTIMP int __cdecl _setmode(int _FileHandle,int _Mode);
+  _CRTIMP long __cdecl _tell(int _FileHandle);
+  _CRTIMP int __cdecl _umask(int _Mode);
+  _CRTIMP int __cdecl _write(int _FileHandle,const void *_Buf,unsigned int _MaxCharCount);
+
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP __int64 __cdecl _filelengthi64(int _FileHandle);
+  _CRTIMP intptr_t __cdecl _findfirst32i64(const char *_Filename,struct _finddata32i64_t *_FindData);
+  _CRTIMP intptr_t __cdecl _findfirst64(const char *_Filename,struct __finddata64_t *_FindData);
+#ifdef __cplusplus
+#include <string.h>
+#endif
+  intptr_t __cdecl _findfirst64i32(const char *_Filename,struct _finddata64i32_t *_FindData);
+  __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;
+  }
+  _CRTIMP int __cdecl _findnext32i64(intptr_t _FindHandle,struct _finddata32i64_t *_FindData);
+  _CRTIMP int __cdecl _findnext64(intptr_t _FindHandle,struct __finddata64_t *_FindData);
+  int __cdecl _findnext64i32(intptr_t _FindHandle,struct _finddata64i32_t *_FindData);
+  __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;
+  }
+  __int64 __cdecl _lseeki64(int _FileHandle,__int64 _Offset,int _Origin);
+  __int64 __cdecl _telli64(int _FileHandle);
+#endif
+#ifndef NO_OLDNAMES
 
 #ifndef _UWIN
-_CRTIMP int __cdecl __MINGW_NOTHROW chdir (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW getcwd (char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW mkdir (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW mktemp (char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW rmdir (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW chmod (const char*, int);
+  int __cdecl chdir (const char *);
+  char *__cdecl getcwd (char *, int);
+  int __cdecl mkdir (const char *);
+  char *__cdecl mktemp(char *);
+  int __cdecl rmdir (const char*);
+  int __cdecl chmod (const char *, int);
 #endif /* _UWIN */
 
-#endif /* Not _NO_OLDNAMES */
+#endif /* Not NO_OLDNAMES */
 
-#ifdef __cplusplus
-}
+  _CRTIMP errno_t __cdecl _sopen_s(int *_FileHandle,const char *_Filename,int _OpenFlag,int _ShareFlag,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
 
-#endif /* Not RC_INVOKED */
+#ifndef _WIO_DEFINED
+#define _WIO_DEFINED
+  _CRTIMP int __cdecl _waccess(const wchar_t *_Filename,int _AccessMode);
+  _CRTIMP int __cdecl _wchmod(const wchar_t *_Filename,int _Mode);
+  _CRTIMP int __cdecl _wcreat(const wchar_t *_Filename,int _PermissionMode);
+  _CRTIMP intptr_t __cdecl _wfindfirst32(const wchar_t *_Filename,struct _wfinddata32_t *_FindData);
+  _CRTIMP int __cdecl _wfindnext32(intptr_t _FindHandle,struct _wfinddata32_t *_FindData);
+  _CRTIMP int __cdecl _wunlink(const wchar_t *_Filename);
+  _CRTIMP int __cdecl _wrename(const wchar_t *_NewFilename,const wchar_t *_OldFilename);
+  _CRTIMP wchar_t *__cdecl _wmktemp(wchar_t *_TemplateName);
+
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP intptr_t __cdecl _wfindfirst32i64(const wchar_t *_Filename,struct _wfinddata32i64_t *_FindData);
+  intptr_t __cdecl _wfindfirst64i32(const wchar_t *_Filename,struct _wfinddata64i32_t *_FindData);
+  _CRTIMP intptr_t __cdecl _wfindfirst64(const wchar_t *_Filename,struct _wfinddata64_t *_FindData);
+  _CRTIMP int __cdecl _wfindnext32i64(intptr_t _FindHandle,struct _wfinddata32i64_t *_FindData);
+  int __cdecl _wfindnext64i32(intptr_t _FindHandle,struct _wfinddata64i32_t *_FindData);
+  _CRTIMP int __cdecl _wfindnext64(intptr_t _FindHandle,struct _wfinddata64_t *_FindData);
+#endif
 
-/* TODO: Maximum number of open handles has not been tested, I just set
- * it the same as FOPEN_MAX. */
-#define        HANDLE_MAX      FOPEN_MAX
+  _CRTIMP errno_t __cdecl _wsopen_s(int *_FileHandle,const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionFlag);
 
-/* 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 */
-/* Well maybe it does hurt.  On newer versions of MSVCRT, an access mode
-   of 1 causes invalid parameter error. */   
-#define        X_OK    1       /* MS access() doesn't check for execute permission. */
-#define        W_OK    2       /* Check for write permission */
-#define        R_OK    4       /* Check for read permission */
+#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
 
-#ifndef RC_INVOKED
+#endif
 
-#ifdef __cplusplus
-extern "C" {
+  int __cdecl __lock_fhandle(int _Filehandle);
+  void __cdecl _unlock_fhandle(int _Filehandle);
+  _CRTIMP intptr_t __cdecl _get_osfhandle(int _FileHandle);
+  _CRTIMP int __cdecl _open_osfhandle(intptr_t _OSFileHandle,int _Flags);
+
+#ifndef        NO_OLDNAMES
+  int __cdecl access(const char *_Filename,int _AccessMode);
+  int __cdecl chmod(const char *_Filename,int _AccessMode);
+  int __cdecl chsize(int _FileHandle,long _Size);
+  int __cdecl close(int _FileHandle);
+  int __cdecl creat(const char *_Filename,int _PermissionMode);
+  int __cdecl dup(int _FileHandle);
+  int __cdecl dup2(int _FileHandleSrc,int _FileHandleDst);
+  int __cdecl eof(int _FileHandle);
+  long __cdecl filelength(int _FileHandle);
+  int __cdecl isatty(int _FileHandle);
+  int __cdecl locking(int _FileHandle,int _LockMode,long _NumOfBytes);
+  long __cdecl lseek(int _FileHandle,long _Offset,int _Origin);
+  char *__cdecl mktemp(char *_TemplateName);
+  int __cdecl open(const char *_Filename,int _OpenFlag,...);
+  int __cdecl read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount);
+  int __cdecl setmode(int _FileHandle,int _Mode);
+  int __cdecl sopen(const char *_Filename,int _OpenFlag,int _ShareFlag,...);
+  long __cdecl tell(int _FileHandle);
+  int __cdecl umask(int _Mode);
+  int __cdecl write(int _Filehandle,const void *_Buf,unsigned int _MaxCharCount);
 #endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW _access (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _chsize (int, long);
-_CRTIMP int __cdecl __MINGW_NOTHROW _close (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _commit(int);
-
-/* NOTE: The only significant bit in unPermissions appears to be bit 7 (0x80),
- *       the "owner write permission" bit (on FAT). */
-_CRTIMP int __cdecl __MINGW_NOTHROW _creat (const char*, int);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _dup (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _dup2 (int, int);
-_CRTIMP long __cdecl __MINGW_NOTHROW _filelength (int);
-_CRTIMP long __cdecl __MINGW_NOTHROW _get_osfhandle (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _isatty (int);
-
-/* In a very odd turn of events this function is excluded from those
- * files which define _STREAM_COMPAT. This is required in order to
- * build GNU libio because of a conflict with _eof in streambuf.h
- * line 107. Actually I might just be able to change the name of
- * the enum member in streambuf.h... we'll see. TODO */
-#ifndef        _STREAM_COMPAT
-_CRTIMP int __cdecl __MINGW_NOTHROW _eof (int);
-#endif
-
-/* LK_... locking commands defined in sys/locking.h. */
-_CRTIMP int __cdecl __MINGW_NOTHROW _locking (int, int, long);
-
-_CRTIMP long __cdecl __MINGW_NOTHROW _lseek (int, long, int);
-
-/* Optional third argument is unsigned unPermissions. */
-_CRTIMP int __cdecl __MINGW_NOTHROW _open (const char*, int, ...);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _open_osfhandle (long, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _pipe (int *, unsigned int, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _read (int, void*, unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _setmode (int, int);
-/* MS puts remove & rename (but not wide versions) in io.h as well
-   as in stdio.h. */
-_CRTIMP int __cdecl __MINGW_NOTHROW    remove (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    rename (const char*, const char*);
-
-/* SH_... flags for nShFlags defined in share.h
- * Optional fourth argument is unsigned unPermissions */
-_CRTIMP int __cdecl __MINGW_NOTHROW _sopen (const char*, int, int, ...);
-
-_CRTIMP long __cdecl __MINGW_NOTHROW _tell (int);
-/* Should umask be in sys/stat.h and/or sys/types.h instead? */
-_CRTIMP int __cdecl __MINGW_NOTHROW _umask (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _unlink (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _write (int, const void*, unsigned int);
-
-/* Wide character versions. Also declared in wchar.h. */
-/* Not in crtdll.dll */
-#if !defined (_WIO_DEFINED)
-#if defined (__MSVCRT__)
-_CRTIMP int __cdecl __MINGW_NOTHROW _waccess(const wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wchmod(const wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wcreat(const wchar_t*, int);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst(const wchar_t*, struct _wfinddata_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindnext(intptr_t, struct _wfinddata_t *);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wunlink(const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wopen(const wchar_t*, int, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wsopen(const wchar_t*, int, int, ...);
-_CRTIMP wchar_t * __cdecl __MINGW_NOTHROW _wmktemp(wchar_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirsti64(const wchar_t*, struct _wfinddatai64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnexti64(intptr_t, struct _wfinddatai64_t*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst64(const wchar_t*, struct __wfinddata64_t*); 
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindnext64(intptr_t, struct __wfinddata64_t*);
-#endif
-#endif /* defined (__MSVCRT__) */
-#define _WIO_DEFINED
-#endif /* _WIO_DEFINED */
+#ifdef __cplusplus
+}
+#endif
+#endif
 
-#ifndef        _NO_OLDNAMES
-/*
- * Non-underscored versions of non-ANSI functions to improve portability.
- * These functions live in libmoldname.a.
- */
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-#ifndef _UWIN
-_CRTIMP int __cdecl __MINGW_NOTHROW access (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW chsize (int, long );
-_CRTIMP int __cdecl __MINGW_NOTHROW close (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW creat (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW dup (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW dup2 (int, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW eof (int);
-_CRTIMP long __cdecl __MINGW_NOTHROW filelength (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW isatty (int);
-_CRTIMP long __cdecl __MINGW_NOTHROW lseek (int, long, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW open (const char*, int, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW read (int, void*, unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW setmode (int, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW sopen (const char*, int, int, ...);
-_CRTIMP long __cdecl __MINGW_NOTHROW tell (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW umask (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW unlink (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW write (int, const void*, unsigned int);
-#endif /* _UWIN */
+/* Misc stuff */
+char *getlogin(void);
+unsigned int alarm(unsigned int seconds);
 
 #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
+static inline int __mingw_access (const char *__fname, int __mode) {
+  return  _access (__fname, __mode & ~X_OK);
+}
 
-/* Wide character versions. Also declared in wchar.h. */
-/* Where do these live? Not in libmoldname.a nor in libmsvcrt.a */
-#if 0
-int            waccess(const wchar_t *, int);
-int            wchmod(const wchar_t *, int);
-int            wcreat(const wchar_t *, int);
-long           wfindfirst(wchar_t *, struct _wfinddata_t *);
-int            wfindnext(long, struct _wfinddata_t *);
-int            wunlink(const wchar_t *);
-int            wrename(const wchar_t *, const wchar_t *);
-int            wopen(const wchar_t *, int, ...);
-int            wsopen(const wchar_t *, int, int, ...);
-wchar_t *      wmktemp(wchar_t *);
+#define access(__f,__m)  __mingw_access (__f, __m)
 #endif
 
-#endif /* Not _NO_OLDNAMES */
 
-#ifdef __cplusplus
+#ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
 
-#endif /* _IO_H_ not defined */
+#pragma pack(pop)
+
+#include <sec_api/io_s.h>
+
+#endif /* End _IO_H_ */
+
diff --git a/reactos/include/crt/libgen.h b/reactos/include/crt/libgen.h
deleted file mode 100644 (file)
index db89e1e..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _LIBGEN_H_
-/* 
- * libgen.h
- *
- * $Id: libgen.h,v 1.2 2007/06/23 07:34:15 dannysmith Exp $
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Functions for splitting pathnames into dirname and basename components.
- *
- */
-#define _LIBGEN_H_
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern __cdecl __MINGW_NOTHROW char *basename (char *);
-extern __cdecl __MINGW_NOTHROW char *dirname  (char *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _LIBGEN_H_: end of file */
-
index 06fd723..fafb04a 100644 (file)
-/*
- * limits.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Functions for manipulating paths and directories (included from io.h)
- * plus functions for setting the current drive.
- *
- * Defines constants for the sizes of integral types.
- *
- * NOTE: GCC should supply a version of this header and it should be safe to
- *       use that version instead of this one (maybe safer).
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-
-#ifndef _LIMITS_H_
-#define _LIMITS_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * File system limits
- *
- * TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the
- *       same as FILENAME_MAX and FOPEN_MAX from stdio.h?
- * NOTE: Apparently the actual size of PATH_MAX is 260, but a space is
- *       required for the NUL. TODO: Test?
- */
-#define PATH_MAX       259
+#ifndef _INC_LIMITS
+#define _INC_LIMITS
 
 /*
- * Characteristics of the char data type.
- */
-#define CHAR_BIT       8
-#define MB_LEN_MAX     2
-
-#define SCHAR_MIN      (-128)
-#define SCHAR_MAX      127
-
-#define UCHAR_MAX      255
-
-/* TODO: Is this safe? I think it might just be testing the preprocessor,
- *       not the compiler itself... */
-#if    ('\x80' < 0)
-#define CHAR_MIN       SCHAR_MIN
-#define CHAR_MAX       SCHAR_MAX
-#else
-#define CHAR_MIN       0
-#define CHAR_MAX       UCHAR_MAX
+* File system limits
+*
+* TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the
+*       same as FILENAME_MAX and FOPEN_MAX from stdio.h?
+* NOTE: Apparently the actual size of PATH_MAX is 260, but a space is
+*       required for the NUL. TODO: Test?
+*/
+#define PATH_MAX       (259)
+
+#define CHAR_BIT 8
+#define SCHAR_MIN (-128)
+#define SCHAR_MAX 127
+#define UCHAR_MAX 0xff
+
+#define CHAR_MIN SCHAR_MIN
+#define CHAR_MAX SCHAR_MAX
+
+#define MB_LEN_MAX 5
+#define SHRT_MIN (-32768)
+#define SHRT_MAX 32767
+#define USHRT_MAX 0xffff
+#define INT_MIN (-2147483647 - 1)
+#define INT_MAX 2147483647
+#define UINT_MAX 0xffffffff
+#define LONG_MIN (-2147483647L - 1)
+#define LONG_MAX 2147483647L
+#define ULONG_MAX 0xffffffffUL
+#define LLONG_MAX 9223372036854775807ll
+#define LLONG_MIN (-9223372036854775807ll - 1)
+#define ULLONG_MAX 0xffffffffffffffffull
+
+#if _INTEGRAL_MAX_BITS >= 8
+#define _I8_MIN (-127 - 1)
+#define _I8_MAX 127i8
+#define _UI8_MAX 0xffu
 #endif
 
-/*
- * Maximum and minimum values for ints.
- */
-#define INT_MAX                2147483647
-#define INT_MIN                (-INT_MAX-1)
-
-#define UINT_MAX       0xffffffff
-
-/*
- * Maximum and minimum values for shorts.
- */
-#define SHRT_MAX       32767
-#define SHRT_MIN       (-SHRT_MAX-1)
-
-#define USHRT_MAX      0xffff
-
-/*
- * Maximum and minimum values for longs and unsigned longs.
- *
- * TODO: This is not correct for Alphas, which have 64 bit longs.
- */
-#define LONG_MAX       2147483647L
-#define LONG_MIN       (-LONG_MAX-1)
-
-#define ULONG_MAX      0xffffffffUL
-
-#ifndef __STRICT_ANSI__
-/* POSIX wants this.  */
-#define SSIZE_MAX LONG_MAX
+#if _INTEGRAL_MAX_BITS >= 16
+#define _I16_MIN (-32767 - 1)
+#define _I16_MAX 32767i16
+#define _UI16_MAX 0xffffu
 #endif
 
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined(__STRICT_ANSI__)
-/* ISO C9x macro names */
-#define LLONG_MAX 9223372036854775807LL
-#define LLONG_MIN (-LLONG_MAX - 1)
-#define ULLONG_MAX (2ULL * LLONG_MAX + 1)
+#if _INTEGRAL_MAX_BITS >= 32
+#define _I32_MIN (-2147483647 - 1)
+#define _I32_MAX 2147483647
+#define _UI32_MAX 0xffffffffu
 #endif
 
-/*
- * The GNU C compiler also allows 'long long int'
- */
-#if !defined(__STRICT_ANSI__) && defined(__GNUC__)
-
-#define LONG_LONG_MAX  9223372036854775807LL
-#define LONG_LONG_MIN  (-LONG_LONG_MAX-1)
-#define ULONG_LONG_MAX (2ULL * LONG_LONG_MAX + 1)
-
-/* MSVC compatibility */
-#define _I64_MIN LONG_LONG_MIN
-#define _I64_MAX LONG_LONG_MAX
-#define _UI64_MAX ULONG_LONG_MAX
+#if defined(__GNUC__)
+#undef LONG_LONG_MAX
+#define LONG_LONG_MAX 9223372036854775807ll
+#undef LONG_LONG_MIN
+#define LONG_LONG_MIN (-LONG_LONG_MAX-1)
+#undef ULONG_LONG_MAX
+#define ULONG_LONG_MAX (2ull * LONG_LONG_MAX + 1ull)
+#endif
 
-#endif /* Not Strict ANSI and GNU C compiler */
+#if _INTEGRAL_MAX_BITS >= 64
+#define _I64_MIN (-9223372036854775807ll - 1)
+#define _I64_MAX 9223372036854775807ll
+#define _UI64_MAX 0xffffffffffffffffull
+#endif
 
+#ifndef SIZE_MAX
+#ifdef _WIN64
+#define SIZE_MAX _UI64_MAX
+#else
+#define SIZE_MAX UINT_MAX
+#endif
+#endif
 
-#endif /* not _LIMITS_H_ */
+#ifdef _POSIX_
+#define _POSIX_ARG_MAX 4096
+#define _POSIX_CHILD_MAX 6
+#define _POSIX_LINK_MAX 8
+#define _POSIX_MAX_CANON 255
+#define _POSIX_MAX_INPUT 255
+#define _POSIX_NAME_MAX 14
+#define _POSIX_NGROUPS_MAX 0
+#define _POSIX_OPEN_MAX 16
+#define _POSIX_PATH_MAX 255
+#define _POSIX_PIPE_BUF 512
+#define _POSIX_SSIZE_MAX 32767
+#define _POSIX_STREAM_MAX 8
+#define _POSIX_TZNAME_MAX 3
+#define ARG_MAX 14500
+#define LINK_MAX 1024
+#define MAX_CANON _POSIX_MAX_CANON
+#define MAX_INPUT _POSIX_MAX_INPUT
+#define NAME_MAX 255
+#define NGROUPS_MAX 16
+#define OPEN_MAX 32
+#define PATH_MAX 512
+#define PIPE_BUF _POSIX_PIPE_BUF
+#define SSIZE_MAX _POSIX_SSIZE_MAX
+#define STREAM_MAX 20
+#define TZNAME_MAX 10
+#endif
+#endif
index f80ccf3..686aa9b 100644 (file)
@@ -1,89 +1,91 @@
-/*
- * locale.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Functions and types for localization (ie. changing the appearance of
- * output based on the standards of a certain country).
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_LOCALE
+#define _INC_LOCALE
 
-#ifndef        _LOCALE_H_
-#define        _LOCALE_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * NOTE: I have tried to test this, but I am limited by my knowledge of
- *       locale issues. The structure does not bomb if you look at the
- *       values, and 'decimal_point' even seems to be correct. But the
- *       rest of the values are, by default, not particularly useful
- *       (read meaningless and not related to the international settings
- *       of the system).
- */
+#pragma pack(push,_CRT_PACKING)
 
-#define        LC_ALL          0
-#define LC_COLLATE     1
-#define LC_CTYPE       2
-#define        LC_MONETARY     3
-#define        LC_NUMERIC      4
-#define        LC_TIME         5
-#define        LC_MIN          LC_ALL
-#define        LC_MAX          LC_TIME
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-#ifndef RC_INVOKED
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
 
-/* According to C89 std, NULL is defined in locale.h too.  */
-#define __need_NULL
-#include <stddef.h>
+#define LC_ALL 0
+#define LC_COLLATE 1
+#define LC_CTYPE 2
+#define LC_MONETARY 3
+#define LC_NUMERIC 4
+#define LC_TIME 5
 
-/*
- * The structure returned by 'localeconv'.
- */
-struct lconv
-{
-       char*   decimal_point;
-       char*   thousands_sep;
-       char*   grouping;
-       char*   int_curr_symbol;
-       char*   currency_symbol;
-       char*   mon_decimal_point;
-       char*   mon_thousands_sep;
-       char*   mon_grouping;
-       char*   positive_sign;
-       char*   negative_sign;
-       char    int_frac_digits;
-       char    frac_digits;
-       char    p_cs_precedes;
-       char    p_sep_by_space;
-       char    n_cs_precedes;
-       char    n_sep_by_space;
-       char    p_sign_posn;
-       char    n_sign_posn;
-};
+#define LC_MIN LC_ALL
+#define LC_MAX LC_TIME
 
-#ifdef __cplusplus
-extern "C" {
+#ifndef _LCONV_DEFINED
+#define _LCONV_DEFINED
+  struct lconv {
+    char *decimal_point;
+    char *thousands_sep;
+    char *grouping;
+    char *int_curr_symbol;
+    char *currency_symbol;
+    char *mon_decimal_point;
+    char *mon_thousands_sep;
+    char *mon_grouping;
+    char *positive_sign;
+    char *negative_sign;
+    char int_frac_digits;
+    char frac_digits;
+    char p_cs_precedes;
+    char p_sep_by_space;
+    char n_cs_precedes;
+    char n_sep_by_space;
+    char p_sign_posn;
+    char n_sign_posn;
+  };
 #endif
 
-_CRTIMP  char* __cdecl __MINGW_NOTHROW setlocale (int, const char*);
-_CRTIMP struct lconv* __cdecl __MINGW_NOTHROW localeconv (void);
+#ifndef _CONFIG_LOCALE_SWT
+#define _CONFIG_LOCALE_SWT
 
-#ifndef _WLOCALE_DEFINED  /* also declared in wchar.h */
-# define __need_wchar_t
-# include <stddef.h>
-  _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wsetlocale(int, const wchar_t*);
-# define _WLOCALE_DEFINED
-#endif /* ndef _WLOCALE_DEFINED */
+#define _ENABLE_PER_THREAD_LOCALE 0x1
+#define _DISABLE_PER_THREAD_LOCALE 0x2
+#define _ENABLE_PER_THREAD_LOCALE_GLOBAL 0x10
+#define _DISABLE_PER_THREAD_LOCALE_GLOBAL 0x20
+#define _ENABLE_PER_THREAD_LOCALE_NEW 0x100
+#define _DISABLE_PER_THREAD_LOCALE_NEW 0x200
 
-#ifdef __cplusplus
-}
 #endif
 
-#endif /* Not RC_INVOKED */
+  int __cdecl _configthreadlocale(int _Flag);
+  char *__cdecl setlocale(int _Category,const char *_Locale);
+  _CRTIMP struct lconv *__cdecl localeconv(void);
+  _locale_t __cdecl _get_current_locale(void);
+  _locale_t __cdecl _create_locale(int _Category,const char *_Locale);
+  void __cdecl _free_locale(_locale_t _Locale);
+  _locale_t __cdecl __get_current_locale(void);
+  _locale_t __cdecl __create_locale(int _Category,const char *_Locale);
+  void __cdecl __free_locale(_locale_t _Locale);
 
-#endif /* Not _LOCALE_H_ */
+#ifndef _WLOCALE_DEFINED
+#define _WLOCALE_DEFINED
+  _CRTIMP wchar_t *__cdecl _wsetlocale(int _Category,const wchar_t *_Locale);
+#endif
 
+#ifdef __cplusplus
+}
+#endif
 
+#pragma pack(pop)
+#endif
index 9d2c33f..9c4bf2f 100644 (file)
-/*
- * malloc.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Support for programs which want to use malloc.h to get memory management
- * functions. Unless you absolutely need some of these functions and they are
- * not in the ANSI headers you should use the ANSI standard header files
- * instead.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-
 #ifndef _MALLOC_H_
 #define _MALLOC_H_
 
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#include <stdlib.h>
+#pragma pack(push,_CRT_PACKING)
 
-#ifndef RC_INVOKED
+#ifndef _MM_MALLOC_H_INCLUDED
+#define _MM_MALLOC_H_INCLUDED
+#endif
 
-/*
- * The structure used to walk through the heap with _heapwalk.
- */
-typedef        struct _heapinfo
-{
-       int*    _pentry;
-       size_t  _size;
-       int     _useflag;
-} _HEAPINFO;
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WIN64
+#define _HEAP_MAXREQ 0xFFFFFFFFFFFFFFE0
+#else
+#define _HEAP_MAXREQ 0xFFFFFFE0
+#endif
+
+#ifndef _STATIC_ASSERT
+#define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr)]
+#endif
+
+/* Return codes for _heapwalk()  */
+#define _HEAPEMPTY (-1)
+#define _HEAPOK (-2)
+#define _HEAPBADBEGIN (-3)
+#define _HEAPBADNODE (-4)
+#define _HEAPEND (-5)
+#define _HEAPBADPTR (-6)
 
 /* Values for _heapinfo.useflag */
 #define _FREEENTRY 0
 #define _USEDENTRY 1
 
-/* Return codes for _heapwalk()  */
-#define _HEAPEMPTY     (-1)
-#define _HEAPOK                (-2)
-#define _HEAPBADBEGIN  (-3)
-#define _HEAPBADNODE   (-4)
-#define _HEAPEND       (-5)
-#define _HEAPBADPTR    (-6)
-
-#ifdef __cplusplus
-extern "C" {
+#ifndef _HEAPINFO_DEFINED
+#define _HEAPINFO_DEFINED
+ /* The structure used to walk through the heap with _heapwalk.  */
+  typedef struct _heapinfo {
+    int *_pentry;
+    size_t _size;
+    int _useflag;
+  } _HEAPINFO;
 #endif
-/*
-   The _heap* memory allocation functions are supported on NT
-   but not W9x. On latter, they always set errno to ENOSYS.
-*/
-_CRTIMP int __cdecl __MINGW_NOTHROW _heapwalk (_HEAPINFO*);
+
+  extern unsigned int _amblksiz;
+
+#define _mm_free(a) _aligned_free(a)
+#define _mm_malloc(a,b) _aligned_malloc(a,b)
+
+#ifndef _CRT_ALLOCATION_DEFINED
+#define _CRT_ALLOCATION_DEFINED
+  void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements);
+  void __cdecl free(void *_Memory);
+  void *__cdecl malloc(size_t _Size);
+  void *__cdecl realloc(void *_Memory,size_t _NewSize);
+  _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
+  /*   _CRTIMP void __cdecl _aligned_free(void *_Memory);
+  _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment); */
+  _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset);
+  _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment);
+  _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment);
+  _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset);
+  _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset);
+#endif
+
+#define _MAX_WAIT_MALLOC_CRT 60000
+
+  _CRTIMP int __cdecl _resetstkoflw (void);
+  _CRTIMP unsigned long __cdecl _set_malloc_crt_max_wait(unsigned long _NewValue);
+
+  _CRTIMP void *__cdecl _expand(void *_Memory,size_t _NewSize);
+  _CRTIMP size_t __cdecl _msize(void *_Memory);
 #ifdef __GNUC__
+#undef _alloca
 #define _alloca(x) __builtin_alloca((x))
+#else
+  void *__cdecl _alloca(size_t _Size);
+#endif
+  _CRTIMP size_t __cdecl _get_sbh_threshold(void);
+  _CRTIMP int __cdecl _set_sbh_threshold(size_t _NewValue);
+  _CRTIMP errno_t __cdecl _set_amblksiz(size_t _Value);
+  _CRTIMP errno_t __cdecl _get_amblksiz(size_t *_Value);
+  _CRTIMP int __cdecl _heapadd(void *_Memory,size_t _Size);
+  _CRTIMP int __cdecl _heapchk(void);
+  _CRTIMP int __cdecl _heapmin(void);
+  _CRTIMP int __cdecl _heapset(unsigned int _Fill);
+  _CRTIMP int __cdecl _heapwalk(_HEAPINFO *_EntryInfo);
+  _CRTIMP size_t __cdecl _heapused(size_t *_Used,size_t *_Commit);
+  _CRTIMP intptr_t __cdecl _get_heap_handle(void);
+
+#define _ALLOCA_S_THRESHOLD 1024
+#define _ALLOCA_S_STACK_MARKER 0xCCCC
+#define _ALLOCA_S_HEAP_MARKER 0xDDDD
+
+#if(defined(_X86_) && !defined(__x86_64))
+#define _ALLOCA_S_MARKER_SIZE 8
+#elif defined(__ia64__) || defined(__x86_64)
+#define _ALLOCA_S_MARKER_SIZE 16
 #endif
 
-#ifndef        _NO_OLDNAMES
-_CRTIMP int __cdecl __MINGW_NOTHROW heapwalk (_HEAPINFO*);
-#ifdef __GNUC__
-#define alloca(x) __builtin_alloca((x))
+#if !defined(RC_INVOKED)
+  static __inline void *_MarkAllocaS(void *_Ptr,unsigned int _Marker) {
+    if(_Ptr) {
+      *((unsigned int*)_Ptr) = _Marker;
+      _Ptr = (char*)_Ptr + _ALLOCA_S_MARKER_SIZE;
+    }
+    return _Ptr;
+  }
 #endif
-#endif /* Not _NO_OLDNAMES */
 
-_CRTIMP int __cdecl __MINGW_NOTHROW _heapchk (void);   /* Verify heap integrety. */
-_CRTIMP int __cdecl __MINGW_NOTHROW _heapmin (void);   /* Return unused heap to the OS. */
-_CRTIMP int __cdecl __MINGW_NOTHROW _heapset (unsigned int);
+#undef _malloca
+#define _malloca(size) \
+  ((((size) + _ALLOCA_S_MARKER_SIZE) <= _ALLOCA_S_THRESHOLD) ? \
+    _MarkAllocaS(_alloca((size) + _ALLOCA_S_MARKER_SIZE),_ALLOCA_S_STACK_MARKER) : \
+    _MarkAllocaS(malloc((size) + _ALLOCA_S_MARKER_SIZE),_ALLOCA_S_HEAP_MARKER))
+#undef _FREEA_INLINE
+#define _FREEA_INLINE
 
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _msize (void*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _get_sbh_threshold (void); 
-_CRTIMP int __cdecl __MINGW_NOTHROW _set_sbh_threshold (size_t);
-_CRTIMP void* __cdecl __MINGW_NOTHROW _expand (void*, size_t); 
+#ifndef RC_INVOKED
+#undef _freea
+  static __inline void __cdecl _freea(void *_Memory) {
+    unsigned int _Marker;
+    if(_Memory) {
+      _Memory = (char*)_Memory - _ALLOCA_S_MARKER_SIZE;
+      _Marker = *(unsigned int *)_Memory;
+      if(_Marker==_ALLOCA_S_HEAP_MARKER) {
+       free(_Memory);
+      }
+#ifdef _ASSERTE
+      else if(_Marker!=_ALLOCA_S_STACK_MARKER) {
+       _ASSERTE(("Corrupted pointer passed to _freea",0));
+      }
+#endif
+    }
+  }
+#endif /* RC_INVOKED */
 
-/* These require msvcr70.dll or higher. */ 
-#if __MSVCRT_VERSION__ >= 0x0700
-_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_malloc(size_t, size_t, size_t);
-_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_realloc(void*, size_t, size_t, size_t);
+#ifndef        NO_OLDNAMES
+#undef alloca
+#ifdef __GNUC__
+#define alloca(x) __builtin_alloca((x))
+#else
+#define alloca _alloca
+#endif
+#endif
 
-_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_malloc (size_t, size_t);
-_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_realloc (void*, size_t, size_t);
-_CRTIMP void __cdecl __MINGW_NOTHROW _aligned_free (void*);
-#endif /* __MSVCRT_VERSION__ >= 0x0700 */
+#ifdef HEAPHOOK
+#ifndef _HEAPHOOK_DEFINED
+#define _HEAPHOOK_DEFINED
+  typedef int (__cdecl *_HEAPHOOK)(int,size_t,void *,void **);
+#endif
 
-/* These require libmingwex.a. */ 
-void * __cdecl __MINGW_NOTHROW __mingw_aligned_offset_malloc (size_t, size_t, size_t);
-void * __cdecl __MINGW_NOTHROW __mingw_aligned_offset_realloc (void*, size_t, size_t, size_t);
+  _CRTIMP _HEAPHOOK __cdecl _setheaphook(_HEAPHOOK _NewHook);
 
-void * __cdecl __MINGW_NOTHROW __mingw_aligned_malloc (size_t, size_t);
-void * __cdecl __MINGW_NOTHROW __mingw_aligned_realloc (void*, size_t, size_t);
-void __cdecl __MINGW_NOTHROW __mingw_aligned_free (void*);
+#define _HEAP_MALLOC 1
+#define _HEAP_CALLOC 2
+#define _HEAP_FREE 3
+#define _HEAP_REALLOC 4
+#define _HEAP_MSIZE 5
+#define _HEAP_EXPAND 6
+#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* RC_INVOKED */
+#pragma pack(pop)
 
-#endif /* Not _MALLOC_H_ */
+#endif /* _MALLOC_H_ */
index 0d60c6f..fd8a3b3 100644 (file)
@@ -1,14 +1,8 @@
-/*
- * math.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Mathematical functions.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-
-
 #ifndef _MATH_H_
 #define _MATH_H_
 
 #pragma GCC system_header
 #endif
 
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * Types for the _exception structure.
- */
-
-#define        _DOMAIN         1       /* domain error in argument */
-#define        _SING           2       /* singularity */
-#define        _OVERFLOW       3       /* range overflow */
-#define        _UNDERFLOW      4       /* range underflow */
-#define        _TLOSS          5       /* total loss of precision */
-#define        _PLOSS          6       /* partial loss of precision */
-
-/*
- * Exception types with non-ANSI names for compatibility.
- */
-
-#ifndef        __STRICT_ANSI__
-#ifndef        _NO_OLDNAMES
-
-#define        DOMAIN          _DOMAIN
-#define        SING            _SING
-#define        OVERFLOW        _OVERFLOW
-#define        UNDERFLOW       _UNDERFLOW
-#define        TLOSS           _TLOSS
-#define        PLOSS           _PLOSS
-
-#endif /* Not _NO_OLDNAMES */
-#endif /* Not __STRICT_ANSI__ */
-
+struct exception;
 
-/* Traditional/XOPEN math constants (double precison) */
-#ifndef __STRICT_ANSI__
-#define M_E            2.7182818284590452354
-#define M_LOG2E                1.4426950408889634074
-#define M_LOG10E       0.43429448190325182765
-#define M_LN2          0.69314718055994530942
-#define M_LN10         2.30258509299404568402
-#define M_PI           3.14159265358979323846
-#define M_PI_2         1.57079632679489661923
-#define M_PI_4         0.78539816339744830962
-#define M_1_PI         0.31830988618379067154
-#define M_2_PI         0.63661977236758134308
-#define M_2_SQRTPI     1.12837916709551257390
-#define M_SQRT2                1.41421356237309504880
-#define M_SQRT1_2      0.70710678118654752440
-#endif
-
-/* These are also defined in Mingw float.h; needed here as well to work
-   around GCC build issues.  */
-#ifndef        __STRICT_ANSI__
-#ifndef __MINGW_FPCLASS_DEFINED
-#define __MINGW_FPCLASS_DEFINED 1
-/* IEEE 754 classication */
-#define        _FPCLASS_SNAN   0x0001  /* Signaling "Not a Number" */
-#define        _FPCLASS_QNAN   0x0002  /* Quiet "Not a Number" */
-#define        _FPCLASS_NINF   0x0004  /* Negative Infinity */
-#define        _FPCLASS_NN     0x0008  /* Negative Normal */
-#define        _FPCLASS_ND     0x0010  /* Negative Denormal */
-#define        _FPCLASS_NZ     0x0020  /* Negative Zero */
-#define        _FPCLASS_PZ     0x0040  /* Positive Zero */
-#define        _FPCLASS_PD     0x0080  /* Positive Denormal */
-#define        _FPCLASS_PN     0x0100  /* Positive Normal */
-#define        _FPCLASS_PINF   0x0200  /* Positive Infinity */
-#endif /* __MINGW_FPCLASS_DEFINED */
-#endif /* Not __STRICT_ANSI__ */
-
-#ifndef RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * HUGE_VAL is returned by strtod when the value would overflow the
- * representation of 'double'. There are other uses as well.
- *
- * __imp__HUGE is a pointer to the actual variable _HUGE in
- * MSVCRT.DLL. If we used _HUGE directly we would get a pointer
- * to a thunk function.
- *
- * NOTE: The CRTDLL version uses _HUGE_dll instead.
- */
-
-#if __MINGW_GNUC_PREREQ(3, 3)
-#define        HUGE_VAL __builtin_huge_val()
-#else
-
-#ifndef __DECLSPEC_SUPPORTED
+#ifndef _EXCEPTION_DEFINED
+#define _EXCEPTION_DEFINED
+  struct _exception {
+    int type;
+    char *name;
+    double arg1;
+    double arg2;
+    double retval;
+  };
+#endif
 
-#ifdef __MSVCRT__
-extern double* _imp___HUGE;
-#define        HUGE_VAL        (*_imp___HUGE)
-#else
-/* CRTDLL */
-extern double* _imp___HUGE_dll;
-#define        HUGE_VAL        (*_imp___HUGE_dll)
+#ifndef _COMPLEX_DEFINED
+#define _COMPLEX_DEFINED
+  struct _complex {
+    double x,y;
+  };
 #endif
 
-#else /* __DECLSPEC_SUPPORTED */
+#define _DOMAIN 1
+#define _SING 2
+#define _OVERFLOW 3
+#define _UNDERFLOW 4
+#define _TLOSS 5
+#define _PLOSS 6
 
-#ifdef __MSVCRT__
-__MINGW_IMPORT double  _HUGE;
-#define        HUGE_VAL        _HUGE
+#define EDOM 33
+#define ERANGE 34
+
+#ifndef _HUGE
+#ifdef _MSVCRT_
+  extern double *_HUGE;
 #else
-/* CRTDLL */
-__MINGW_IMPORT double  _HUGE_dll;
-#define        HUGE_VAL        _HUGE_dll
+  extern double *_imp___HUGE;
+#define _HUGE  (*_imp___HUGE)
+#endif
 #endif
 
-#endif /* __DECLSPEC_SUPPORTED */
-#endif /* __MINGW_GNUC_PREREQ(3, 3) */
-
-
-struct _exception
-{
-       int     type;
-       char    *name;
-       double  arg1;
-       double  arg2;
-       double  retval;
-};
-
-_CRTIMP double __cdecl sin (double);
-_CRTIMP double __cdecl cos (double);
-_CRTIMP double __cdecl tan (double);
-_CRTIMP double __cdecl sinh (double);
-_CRTIMP double __cdecl cosh (double);
-_CRTIMP double __cdecl tanh (double);
-_CRTIMP double __cdecl asin (double);
-_CRTIMP double __cdecl acos (double);
-_CRTIMP double __cdecl atan (double);
-_CRTIMP double __cdecl atan2 (double, double);
-_CRTIMP double __cdecl exp (double);
-_CRTIMP double __cdecl log (double);
-_CRTIMP double __cdecl log10 (double);
-_CRTIMP        double __cdecl pow (double, double);
-_CRTIMP double __cdecl sqrt (double);
-_CRTIMP double __cdecl ceil (double);
-_CRTIMP double __cdecl floor (double);
-_CRTIMP double __cdecl fabs (double);
-_CRTIMP double __cdecl ldexp (double, int);
-_CRTIMP double __cdecl frexp (double, int*);
-_CRTIMP double __cdecl modf (double, double*);
-_CRTIMP double __cdecl fmod (double, double);
-
-/* Excess precision when using a 64-bit mantissa for FPU math ops can
-   cause unexpected results with some of the MSVCRT math functions.  For
-   example, unless the function return value is stored (truncating to
-   53-bit mantissa), calls to pow with both x and y as integral values
-   sometimes produce a non-integral result.
-   One workaround is to reset the FPU env to 53-bit mantissa
-   by a call to fesetenv (FE_PC53_ENV).  Amother is to force storage
-   of the return value of individual math functions using wrappers.
-   NB, using these wrappers will disable builtin math functions and
-   hence disable the folding of function results at compile time when
-   arguments are constant.  */
-
-#if 0
-#define __DEFINE_FLOAT_STORE_MATHFN_D1(fn1)    \
-static __inline__ double                       \
-__float_store_ ## fn1 (double x)               \
-{                                              \
-   __volatile__ double res = (fn1) (x);                \
-  return res;                                  \
-}
+#define HUGE_VAL _HUGE
 
-#define __DEFINE_FLOAT_STORE_MATHFN_D2(fn2)    \
-static __inline__ double                       \
-__float_store_ ## fn2 (double x, double y)     \
-{                                              \
-  __volatile__ double res = (fn2) (x, y);      \
-  return res;                                  \
-}
+#ifndef _CRT_ABS_DEFINED
+#define _CRT_ABS_DEFINED
+  int __cdecl abs(int _X);
+  long __cdecl labs(long _X);
 #endif
-
-/* For example, here is how to force the result of the pow function
-   to be stored:   */
-#if 0
-#undef pow
-/* Define the ___float_store_pow function and use it instead of pow().  */
-__DEFINE_FLOAT_STORE_MATHFN_D2 (pow)
-#define pow __float_store_pow
+  double __cdecl acos(double _X);
+  double __cdecl asin(double _X);
+  double __cdecl atan(double _X);
+  double __cdecl atan2(double _Y,double _X);
+#ifndef _SIGN_DEFINED
+#define _SIGN_DEFINED
+  _CRTIMP double __cdecl _copysign (double _Number,double _Sign);
+  _CRTIMP double __cdecl _chgsign (double _X);
+#endif
+  double __cdecl cos(double _X);
+  double __cdecl cosh(double _X);
+  double __cdecl exp(double _X);
+  double __cdecl fabs(double _X);
+  double __cdecl fmod(double _X,double _Y);
+  double __cdecl log(double _X);
+  double __cdecl log10(double _X);
+  double __cdecl pow(double _X,double _Y);
+  double __cdecl sin(double _X);
+  double __cdecl sinh(double _X);
+  double __cdecl tan(double _X);
+  double __cdecl tanh(double _X);
+  double __cdecl sqrt(double _X);
+#ifndef _CRT_ATOF_DEFINED
+#define _CRT_ATOF_DEFINED
+  double __cdecl atof(const char *_String);
+  double __cdecl _atof_l(const char *_String,_locale_t _Locale);
 #endif
 
-#ifndef __STRICT_ANSI__
-
-/* Complex number (for _cabs). This is the MS version. The ISO
-   C99 counterpart _Complex is an intrinsic type in GCC and
-   'complex' is defined as a macro.  See complex.h  */
-struct _complex
-{
-       double  x;      /* Real part */
-       double  y;      /* Imaginary part */
-};
-
-_CRTIMP double __cdecl _cabs (struct _complex);
-
-_CRTIMP double __cdecl _hypot (double, double);
-_CRTIMP double __cdecl _j0 (double);
-_CRTIMP double __cdecl _j1 (double);
-_CRTIMP double __cdecl _jn (int, double);
-_CRTIMP double __cdecl _y0 (double);
-_CRTIMP double __cdecl _y1 (double);
-_CRTIMP double __cdecl _yn (int, double);
-_CRTIMP int __cdecl _matherr (struct _exception *);
-
-/* These are also declared in Mingw float.h; needed here as well to work
-   around GCC build issues.  */
-/* BEGIN FLOAT.H COPY */
-/*
- * IEEE recommended functions
- */
-
-_CRTIMP double __cdecl _chgsign (double);
-_CRTIMP double __cdecl _copysign (double, double);
-_CRTIMP double __cdecl _logb (double);
-_CRTIMP double __cdecl _nextafter (double, double);
-_CRTIMP double __cdecl _scalb (double, long);
-
-_CRTIMP int __cdecl _finite (double);
-_CRTIMP int __cdecl _fpclass (double);
-_CRTIMP int __cdecl _isnan (double);
-
-/* END FLOAT.H COPY */
-
-
-/*
- * Non-underscored versions of non-ANSI functions.
- * These reside in liboldnames.a.
- */
-
-#if !defined (_NO_OLDNAMES)
-
-_CRTIMP double __cdecl j0 (double);
-_CRTIMP double __cdecl j1 (double);
-_CRTIMP double __cdecl jn (int, double);
-_CRTIMP double __cdecl y0 (double);
-_CRTIMP double __cdecl y1 (double);
-_CRTIMP double __cdecl yn (int, double);
-
-_CRTIMP double __cdecl chgsign (double);
-_CRTIMP double __cdecl scalb (double, long);
-_CRTIMP int __cdecl finite (double);
-_CRTIMP int __cdecl fpclass (double);
-
-#define FP_SNAN    _FPCLASS_SNAN
-#define FP_QNAN    _FPCLASS_QNAN
-#define FP_NINF    _FPCLASS_NINF
-#define FP_PINF    _FPCLASS_PINF
-#define FP_NDENORM _FPCLASS_ND
-#define FP_PDENORM _FPCLASS_PD
-#define FP_NZERO   _FPCLASS_NZ
-#define FP_PZERO   _FPCLASS_PZ
-#define FP_NNORM   _FPCLASS_NN
-#define FP_PNORM   _FPCLASS_PN
-
-#endif /* Not _NO_OLDNAMES */
-
-/* This require msvcr70.dll or higher. */
-#if __MSVCRT_VERSION__ >= 0x0700
-_CRTIMP int __cdecl _set_SSE2_enable (int);
-#endif /* __MSVCRT_VERSION__ >= 0x0700 */
+  _CRTIMP double __cdecl _cabs(struct _complex _ComplexA);
+  double __cdecl ceil(double _X);
+  double __cdecl floor(double _X);
+  double __cdecl frexp(double _X,int *_Y);
+  double __cdecl _hypot(double _X,double _Y);
+  _CRTIMP double __cdecl _j0(double _X);
+  _CRTIMP double __cdecl _j1(double _X);
+  _CRTIMP double __cdecl _jn(int _X,double _Y);
+  double __cdecl ldexp(double _X,int _Y);
+#ifndef _CRT_MATHERR_DEFINED
+#define _CRT_MATHERR_DEFINED
+  int __cdecl _matherr(struct _exception *_Except);
+#endif
+  double __cdecl modf(double _X,double *_Y);
+  _CRTIMP double __cdecl _y0(double _X);
+  _CRTIMP double __cdecl _y1(double _X);
+  _CRTIMP double __cdecl _yn(int _X,double _Y);
+
+#if(defined(_X86_) && !defined(__x86_64))
+  _CRTIMP int __cdecl _set_SSE2_enable(int _Flag);
+  /* from libmingwex */
+  float __cdecl _hypotf(float _X,float _Y);
+#endif
 
+  float frexpf(float _X,int *_Y);
+  float __cdecl ldexpf(float _X,int _Y);
+  long double __cdecl ldexpl(long double _X,int _Y);
+  float __cdecl acosf(float _X);
+  float __cdecl asinf(float _X);
+   float __cdecl atanf(float _X);
+   float __cdecl atan2f(float _X,float _Y);
+   float __cdecl cosf(float _X);
+   float __cdecl sinf(float _X);
+   float __cdecl tanf(float _X);
+   float __cdecl coshf(float _X);
+   float __cdecl sinhf(float _X);
+   float __cdecl tanhf(float _X);
+   float __cdecl expf(float _X);
+   float __cdecl logf(float _X);
+   float __cdecl log10f(float _X);
+   float __cdecl modff(float _X,float *_Y);
+   float __cdecl powf(float _X,float _Y);
+   float __cdecl sqrtf(float _X);
+   float __cdecl ceilf(float _X);
+   float __cdecl floorf(float _X);
+  float __cdecl fmodf(float _X,float _Y);
+   float __cdecl _hypotf(float _X,float _Y);
+  float __cdecl fabsf(float _X);
+#if !defined(__ia64__)
+   /* from libmingwex */
+   float __cdecl _copysignf (float _Number,float _Sign);
+   float __cdecl _chgsignf (float _X);
+   float __cdecl _logbf(float _X);
+   float __cdecl _nextafterf(float _X,float _Y);
+   int __cdecl _finitef(float _X);
+   int __cdecl _isnanf(float _X);
+   int __cdecl _fpclassf(float _X);
+#endif
 
-#endif /* __STRICT_ANSI__ */
+#ifndef __cplusplus
+  __CRT_INLINE long double __cdecl fabsl (long double x)
+  {
+    long double res;
+    __asm__ ("fabs;" : "=t" (res) : "0" (x));
+    return res;
+  }
+#define _hypotl(x,y) ((long double)_hypot((double)(x),(double)(y)))
+#define _matherrl _matherr
+  __CRT_INLINE long double _chgsignl(long double _Number) { return _chgsign((double)(_Number)); }
+  __CRT_INLINE long double _copysignl(long double _Number,long double _Sign) { return _copysign((double)(_Number),(double)(_Sign)); }
+  __CRT_INLINE float frexpf(float _X,int *_Y) { return ((float)frexp((double)_X,_Y)); }
+
+#if !defined (__ia64__)
+  __CRT_INLINE float __cdecl fabsf (float x)
+  {
+    float res;
+    __asm__ ("fabs;" : "=t" (res) : "0" (x));
+    return res;
+  }
+
+  __CRT_INLINE float __cdecl ldexpf (float x, int expn) { return (float) ldexp (x, expn); }
+#endif
+#else
+  // cplusplus
+  __CRT_INLINE long double __cdecl fabsl (long double x)
+  {
+    long double res;
+    __asm__ ("fabs;" : "=t" (res) : "0" (x));
+    return res;
+  }
+  __CRT_INLINE long double modfl(long double _X,long double *_Y) {
+    double _Di,_Df = modf((double)_X,&_Di);
+    *_Y = (long double)_Di;
+    return (_Df);
+  }
+  __CRT_INLINE long double _chgsignl(long double _Number) { return _chgsign(static_cast<double>(_Number)); }
+  __CRT_INLINE long double _copysignl(long double _Number,long double _Sign) { return _copysign(static_cast<double>(_Number),static_cast<double>(_Sign)); }
+  __CRT_INLINE float frexpf(float _X,int *_Y) { return ((float)frexp((double)_X,_Y)); }
+#ifndef __ia64__
+  __CRT_INLINE float __cdecl fabsf (float x)
+  {
+    float res;
+    __asm__ ("fabs;" : "=t" (res) : "0" (x));
+    return res;
+  }
+  __CRT_INLINE float __cdecl ldexpf (float x, int expn) { return (float) ldexp (x, expn); }
+#ifndef __x86_64
+  __CRT_INLINE float acosf(float _X) { return ((float)acos((double)_X)); }
+  __CRT_INLINE float asinf(float _X) { return ((float)asin((double)_X)); }
+  __CRT_INLINE float atanf(float _X) { return ((float)atan((double)_X)); }
+  __CRT_INLINE float atan2f(float _X,float _Y) { return ((float)atan2((double)_X,(double)_Y)); }
+  __CRT_INLINE float ceilf(float _X) { return ((float)ceil((double)_X)); }
+  __CRT_INLINE float cosf(float _X) { return ((float)cos((double)_X)); }
+  __CRT_INLINE float coshf(float _X) { return ((float)cosh((double)_X)); }
+  __CRT_INLINE float expf(float _X) { return ((float)exp((double)_X)); }
+  __CRT_INLINE float floorf(float _X) { return ((float)floor((double)_X)); }
+  __CRT_INLINE float fmodf(float _X,float _Y) { return ((float)fmod((double)_X,(double)_Y)); }
+  __CRT_INLINE float logf(float _X) { return ((float)log((double)_X)); }
+  __CRT_INLINE float log10f(float _X) { return ((float)log10((double)_X)); }
+  __CRT_INLINE float modff(float _X,float *_Y) {
+    double _Di,_Df = modf((double)_X,&_Di);
+    *_Y = (float)_Di;
+    return ((float)_Df);
+  }
+  __CRT_INLINE float powf(float _X,float _Y) { return ((float)pow((double)_X,(double)_Y)); }
+  __CRT_INLINE float sinf(float _X) { return ((float)sin((double)_X)); }
+  __CRT_INLINE float sinhf(float _X) { return ((float)sinh((double)_X)); }
+  __CRT_INLINE float sqrtf(float _X) { return ((float)sqrt((double)_X)); }
+  __CRT_INLINE float tanf(float _X) { return ((float)tan((double)_X)); }
+  __CRT_INLINE float tanhf(float _X) { return ((float)tanh((double)_X)); }
+#endif
+#endif
+#endif
 
+#ifndef        NO_OLDNAMES
+#define DOMAIN _DOMAIN
+#define SING _SING
+#define OVERFLOW _OVERFLOW
+#define UNDERFLOW _UNDERFLOW
+#define TLOSS _TLOSS
+#define PLOSS _PLOSS
+#define matherr _matherr
+
+#define HUGE   _HUGE
+  /*   double __cdecl cabs(struct _complex _X); */
+  double __cdecl hypot(double _X,double _Y);
+  _CRTIMP double __cdecl j0(double _X);
+  _CRTIMP double __cdecl j1(double _X);
+  _CRTIMP double __cdecl jn(int _X,double _Y);
+  _CRTIMP double __cdecl y0(double _X);
+  _CRTIMP double __cdecl y1(double _X);
+  _CRTIMP double __cdecl yn(int _X,double _Y);
+#endif
 
 #ifndef __NO_ISOCEXT
 #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-       || !defined __STRICT_ANSI__ || defined __cplusplus
+  || !defined __STRICT_ANSI__ || defined __GLIBCPP__
+
+#define NAN (0.0F/0.0F)
+#define HUGE_VALF (1.0F/0.0F)
+#define HUGE_VALL (1.0L/0.0L)
+#define INFINITY (1.0F/0.0F)
+
 
-#if __MINGW_GNUC_PREREQ(3, 3)
-#define HUGE_VALF      __builtin_huge_valf()
-#define HUGE_VALL      __builtin_huge_vall()
-#define INFINITY       __builtin_inf()
-#define NAN            __builtin_nan("")
-#else
-extern const float __INFF;
-#define HUGE_VALF __INFF
-extern const long double  __INFL;
-#define HUGE_VALL __INFL
-#define INFINITY HUGE_VALF
-extern const double __QNAN;
-#define NAN __QNAN
-#endif /* __MINGW_GNUC_PREREQ(3, 3) */
-
-/* 7.12.3.1 */
-/*
-   Return values for fpclassify.
-   These are based on Intel x87 fpu condition codes
-   in the high byte of status word and differ from
-   the return values for MS IEEE 754 extension _fpclass()
-*/
 #define FP_NAN         0x0100
 #define FP_NORMAL      0x0400
 #define FP_INFINITE    (FP_NAN | FP_NORMAL)
 #define FP_ZERO                0x4000
 #define FP_SUBNORMAL   (FP_NORMAL | FP_ZERO)
-/* 0x0200 is signbit mask */
+  /* 0x0200 is signbit mask */
 
 
-/*
-  We can't inline float or double, because we want to ensure truncation
-  to semantic type before classification.
-  (A normal long double value might become subnormal when
+  /*
+  We can't __CRT_INLINE float or double, because we want to ensure truncation
+  to semantic type before classification. 
+  (A normal long double value might become subnormal when 
   converted to double, and zero when converted to float.)
-*/
+  */
 
-extern int __cdecl __fpclassifyf (float);
-extern int __cdecl __fpclassify (double);
+  extern int __cdecl __fpclassifyf (float);
+  extern int __cdecl __fpclassify (double);
 
-__CRT_INLINE int __cdecl __fpclassifyl (long double x){
-  unsigned short sw;
-  __asm__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
-  return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
-}
+  __CRT_INLINE int __cdecl __fpclassifyl (long double x){
+    unsigned short sw;
+    __asm__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
+    return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
+  }
 
 #define fpclassify(x) (sizeof (x) == sizeof (float) ? __fpclassifyf (x)          \
-                      : sizeof (x) == sizeof (double) ? __fpclassify (x) \
-                      : __fpclassifyl (x))
+  : sizeof (x) == sizeof (double) ? __fpclassify (x) \
+  : __fpclassifyl (x))
 
-/* 7.12.3.2 */
+  /* 7.12.3.2 */
 #define isfinite(x) ((fpclassify(x) & FP_NAN) == 0)
 
-/* 7.12.3.3 */
+  /* 7.12.3.3 */
 #define isinf(x) (fpclassify(x) == FP_INFINITE)
 
-/* 7.12.3.4 */
-/* We don't need to worry about trucation here:
-   A NaN stays a NaN. */
-
-__CRT_INLINE int __cdecl __isnan (double _x)
-{
-  unsigned short sw;
-  __asm__ ("fxam;"
-          "fstsw %%ax": "=a" (sw) : "t" (_x));
-  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
-    == FP_NAN;
-}
-
-__CRT_INLINE int __cdecl __isnanf (float _x)
-{
-  unsigned short sw;
-  __asm__ ("fxam;"
-           "fstsw %%ax": "=a" (sw) : "t" (_x));
-  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
-    == FP_NAN;
-}
-
-__CRT_INLINE int __cdecl __isnanl (long double _x)
-{
-  unsigned short sw;
-  __asm__ ("fxam;"
-           "fstsw %%ax": "=a" (sw) : "t" (_x));
-  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
-    == FP_NAN;
-}
+  /* 7.12.3.4 */
+  /* We don't need to worry about trucation here:
+  A NaN stays a NaN. */
+
+  __CRT_INLINE int __cdecl __isnan (double _x)
+  {
+    unsigned short sw;
+    __asm__ ("fxam;"
+      "fstsw %%ax": "=a" (sw) : "t" (_x));
+    return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+      == FP_NAN;
+  }
+
+  __CRT_INLINE int __cdecl __isnanf (float _x)
+  {
+    unsigned short sw;
+    __asm__ ("fxam;"
+      "fstsw %%ax": "=a" (sw) : "t" (_x));
+    return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+      == FP_NAN;
+  }
+
+  __CRT_INLINE int __cdecl __isnanl (long double _x)
+  {
+    unsigned short sw;
+    __asm__ ("fxam;"
+      "fstsw %%ax": "=a" (sw) : "t" (_x));
+    return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+      == FP_NAN;
+  }
 
 
 #define isnan(x) (sizeof (x) == sizeof (float) ? __isnanf (x)  \
-                 : sizeof (x) == sizeof (double) ? __isnan (x) \
-                 : __isnanl (x))
+  : sizeof (x) == sizeof (double) ? __isnan (x)        \
+  : __isnanl (x))
 
-/* 7.12.3.5 */
+  /* 7.12.3.5 */
 #define isnormal(x) (fpclassify(x) == FP_NORMAL)
 
-/* 7.12.3.6 The signbit macro */
-__CRT_INLINE int __cdecl __signbit (double x) {
-  unsigned short stw;
-  __asm__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
-  return (stw & 0x0200) != 0;
-}
+  /* 7.12.3.6 The signbit macro */
+  __CRT_INLINE int __cdecl __signbit (double x) {
+    unsigned short stw;
+    __asm__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+    return stw & 0x0200;
+  }
+
+  __CRT_INLINE int __cdecl __signbitf (float x) {
+    unsigned short stw;
+    __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+    return stw & 0x0200;
+  }
+
+  __CRT_INLINE int __cdecl __signbitl (long double x) {
+    unsigned short stw;
+    __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+    return stw & 0x0200;
+  }
 
-__CRT_INLINE int __cdecl __signbitf (float x) {
-  unsigned short stw;
-  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
-  return (stw & 0x0200) != 0;
-}
+#define signbit(x) (sizeof (x) == sizeof (float) ? __signbitf (x)      \
+  : sizeof (x) == sizeof (double) ? __signbit (x)      \
+  : __signbitl (x))
 
-__CRT_INLINE int __cdecl __signbitl (long double x) {
-  unsigned short stw;
-  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
-  return (stw & 0x0200) != 0;
-}
+  extern double __cdecl exp2(double);
+  extern float __cdecl exp2f(float);
+  extern long double __cdecl exp2l(long double);
 
-#define signbit(x) (sizeof (x) == sizeof (float) ? __signbitf (x)      \
-                   : sizeof (x) == sizeof (double) ? __signbit (x)     \
-                   : __signbitl (x))
-
-/* 7.12.4 Trigonometric functions: Double in C89 */
-extern float __cdecl sinf (float);
-extern long double __cdecl sinl (long double);
-
-extern float __cdecl cosf (float);
-extern long double __cdecl cosl (long double);
-
-extern float __cdecl tanf (float);
-extern long double __cdecl tanl (long double);
-
-extern float __cdecl asinf (float);
-extern long double __cdecl asinl (long double);
-
-extern float __cdecl acosf (float);
-extern long double __cdecl acosl (long double);
-
-extern float __cdecl atanf (float);
-extern long double __cdecl atanl (long double);
-
-extern float __cdecl atan2f (float, float);
-extern long double __cdecl atan2l (long double, long double);
-
-/* 7.12.5 Hyperbolic functions: Double in C89  */
-__CRT_INLINE float __cdecl sinhf (float x)
-  {return (float) sinh (x);}
-extern long double __cdecl sinhl (long double);
-
-__CRT_INLINE float __cdecl coshf (float x)
-  {return (float) cosh (x);}
-extern long double __cdecl coshl (long double);
-
-__CRT_INLINE float __cdecl tanhf (float x)
-  {return (float) tanh (x);}
-extern long double __cdecl tanhl (long double);
-
-/* Inverse hyperbolic trig functions  */
-/* 7.12.5.1 */
-extern double __cdecl acosh (double);
-extern float __cdecl acoshf (float);
-extern long double __cdecl acoshl (long double);
-
-/* 7.12.5.2 */
-extern double __cdecl asinh (double);
-extern float __cdecl asinhf (float);
-extern long double __cdecl asinhl (long double);
-
-/* 7.12.5.3 */
-extern double __cdecl atanh (double);
-extern float __cdecl atanf  (float);
-extern long double __cdecl atanhl (long double);
-
-/* Exponentials and logarithms  */
-/* 7.12.6.1 Double in C89 */
-__CRT_INLINE float __cdecl expf (float x)
-  {return (float) exp (x);}
-extern long double __cdecl expl (long double);
-
-/* 7.12.6.2 */
-extern double __cdecl exp2(double);
-extern float __cdecl exp2f(float);
-extern long double __cdecl exp2l(long double);
-
-/* 7.12.6.3 The expm1 functions */
-/* TODO: These could be inlined */
-extern double __cdecl expm1(double);
-extern float __cdecl expm1f(float);
-extern long double __cdecl expm1l(long double);
-
-/* 7.12.6.4 Double in C89 */
-__CRT_INLINE float __cdecl frexpf (float x, int* expn)
-  {return (float) frexp (x, expn);}
-extern long double __cdecl frexpl (long double, int*);
-
-/* 7.12.6.5 */
 #define FP_ILOGB0 ((int)0x80000000)
 #define FP_ILOGBNAN ((int)0x80000000)
-extern int __cdecl ilogb (double);
-extern int __cdecl ilogbf (float);
-extern int __cdecl ilogbl (long double);
-
-/* 7.12.6.6  Double in C89 */
-__CRT_INLINE float __cdecl ldexpf (float x, int expn)
-  {return (float) ldexp (x, expn);}
-extern long double __cdecl ldexpl (long double, int);
-
-/* 7.12.6.7 Double in C89 */
-extern float __cdecl logf (float);
-extern long double __cdecl logl (long double);
-
-/* 7.12.6.8 Double in C89 */
-extern float __cdecl log10f (float);
-extern long double __cdecl log10l (long double);
-
-/* 7.12.6.9 */
-extern double __cdecl log1p(double);
-extern float __cdecl log1pf(float);
-extern long double __cdecl log1pl(long double);
-
-/* 7.12.6.10 */
-extern double __cdecl log2 (double);
-extern float __cdecl log2f (float);
-extern long double __cdecl log2l (long double);
-
-/* 7.12.6.11 */
-extern double __cdecl logb (double);
-extern float __cdecl logbf (float);
-extern long double __cdecl logbl (long double);
-
-/* Inline versions.  GCC-4.0+ can do a better fast-math optimization
-   with __builtins. */
-#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
-__CRT_INLINE double __cdecl logb (double x)
-{
-  double res;
-  __asm__ ("fxtract\n\t"
-       "fstp   %%st" : "=t" (res) : "0" (x));
-  return res;
-}
-
-__CRT_INLINE float __cdecl logbf (float x)
-{
-  float res;
-  __asm__ ("fxtract\n\t"
-       "fstp   %%st" : "=t" (res) : "0" (x));
-  return res;
-}
-
-__CRT_INLINE long double __cdecl logbl (long double x)
-{
-  long double res;
-  __asm__ ("fxtract\n\t"
-       "fstp   %%st" : "=t" (res) : "0" (x));
-  return res;
-}
-#endif /* !defined __FAST_MATH__ || !__MINGW_GNUC_PREREQ (4, 0) */
-
-/* 7.12.6.12  Double in C89 */
-extern float __cdecl modff (float, float*);
-extern long double __cdecl modfl (long double, long double*);
-
-/* 7.12.6.13 */
-extern double __cdecl scalbn (double, int);
-extern float __cdecl scalbnf (float, int);
-extern long double __cdecl scalbnl (long double, int);
-
-extern double __cdecl scalbln (double, long);
-extern float __cdecl scalblnf (float, long);
-extern long double __cdecl scalblnl (long double, long);
-
-/* 7.12.7.1 */
-/* Implementations adapted from Cephes versions */
-extern double __cdecl cbrt (double);
-extern float __cdecl cbrtf (float);
-extern long double __cdecl cbrtl (long double);
-
-/* 7.12.7.2 The fabs functions: Double in C89 */
-extern  float __cdecl fabsf (float x);
-extern long double __cdecl fabsl (long double x);
-
-/* 7.12.7.3  */
-extern double __cdecl hypot (double, double); /* in libmoldname.a */
-__CRT_INLINE float __cdecl hypotf (float x, float y)
+  extern int __cdecl ilogb (double);
+  extern int __cdecl ilogbf (float);
+  extern int __cdecl ilogbl (long double);
+
+  extern double __cdecl log1p(double);
+  extern float __cdecl log1pf(float);
+  extern long double __cdecl log1pl(long double);
+
+  extern double __cdecl log2 (double);
+  extern float __cdecl log2f (float);
+  extern long double __cdecl log2l (long double);
+
+  extern double __cdecl logb (double);
+  extern float __cdecl logbf (float);
+  extern long double __cdecl logbl (long double);
+
+  __CRT_INLINE double __cdecl logb (double x)
+  {
+    double res;
+    __asm__ ("fxtract\n\t"
+      "fstp    %%st" : "=t" (res) : "0" (x));
+    return res;
+  }
+
+  __CRT_INLINE float __cdecl logbf (float x)
+  {
+    float res;
+    __asm__ ("fxtract\n\t"
+      "fstp    %%st" : "=t" (res) : "0" (x));
+    return res;
+  }
+
+  __CRT_INLINE long double __cdecl logbl (long double x)
+  {
+    long double res;
+    __asm__ ("fxtract\n\t"
+      "fstp    %%st" : "=t" (res) : "0" (x));
+    return res;
+  }
+
+  extern long double __cdecl modfl (long double, long double*);
+
+  /* 7.12.6.13 */
+  extern double __cdecl scalbn (double, int);
+  extern float __cdecl scalbnf (float, int);
+  extern long double __cdecl scalbnl (long double, int);
+
+  extern double __cdecl scalbln (double, long);
+  extern float __cdecl scalblnf (float, long);
+  extern long double __cdecl scalblnl (long double, long);
+
+  /* 7.12.7.1 */
+  /* Implementations adapted from Cephes versions */ 
+  extern double __cdecl cbrt (double);
+  extern float __cdecl cbrtf (float);
+  extern long double __cdecl cbrtl (long double);
+
+  __CRT_INLINE float __cdecl hypotf (float x, float y)
   { return (float) hypot (x, y);}
-extern long double __cdecl hypotl (long double, long double);
-
-/* 7.12.7.4 The pow functions. Double in C89 */
-__CRT_INLINE float __cdecl powf (float x, float y)
-  {return (float) pow (x, y);}
-extern long double __cdecl powl (long double, long double);
-
-/* 7.12.7.5 The sqrt functions. Double in C89. */
-extern float __cdecl sqrtf (float);
-extern long double __cdecl sqrtl (long double);
-
-/* 7.12.8.1 The erf functions  */
-extern double __cdecl erf (double);
-extern float __cdecl erff (float);
-extern long double __cdecl erfl (long double);
-
-/* 7.12.8.2 The erfc functions  */
-extern double __cdecl erfc (double);
-extern float __cdecl erfcf (float);
-extern long double __cdecl erfcl (long double);
-
-/* 7.12.8.3 The lgamma functions */
-extern double __cdecl lgamma (double);
-extern float __cdecl lgammaf (float);
-extern long double __cdecl lgammal (long double);
-
-/* 7.12.8.4 The tgamma functions */
-extern double __cdecl tgamma (double);
-extern float __cdecl tgammaf (float);
-extern long double __cdecl tgammal (long double);
-
-/* 7.12.9.1 Double in C89 */
-extern float __cdecl ceilf (float);
-extern long double __cdecl ceill (long double);
-
-/* 7.12.9.2 Double in C89 */
-extern float __cdecl floorf (float);
-extern long double __cdecl floorl (long double);
-
-/* 7.12.9.3 */
-extern double __cdecl nearbyint ( double);
-extern float __cdecl nearbyintf (float);
-extern long double __cdecl nearbyintl (long double);
-
-/* 7.12.9.4 */
-/* round, using fpu control word settings */
-extern double __cdecl rint (double);
-extern float __cdecl rintf (float);
-extern long double __cdecl rintl (long double);
-
-/* 7.12.9.5 */
-extern long __cdecl lrint (double);
-extern long __cdecl lrintf (float);
-extern long __cdecl lrintl (long double);
-
-extern long long __cdecl llrint (double);
-extern long long __cdecl llrintf (float);
-extern long long __cdecl llrintl (long double);
-
-/* Inline versions of above.
-   GCC 4.0+ can do a better fast-math job with __builtins. */
-#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
-__CRT_INLINE double __cdecl rint (double x)
-{
-  double retval;
-  __asm__ ("frndint;": "=t" (retval) : "0" (x));
-  return retval;
-}
-
-__CRT_INLINE float __cdecl rintf (float x)
-{
-  float retval;
-  __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
-  return retval;
-}
-
-__CRT_INLINE long double __cdecl rintl (long double x)
-{
-  long double retval;
-  __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
-  return retval;
-}
-
-__CRT_INLINE long __cdecl lrint (double x)
-{
-  long retval;
-  __asm__ __volatile__
-    ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");
-  return retval;
-}
-
-__CRT_INLINE long __cdecl lrintf (float x)
-{
-  long retval;
-  __asm__ __volatile__
-    ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");
-  return retval;
-}
-
-__CRT_INLINE long __cdecl lrintl (long double x)
-{
-  long retval;
-  __asm__ __volatile__
-    ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");
-  return retval;
-}
-
-__CRT_INLINE long long __cdecl llrint (double x)
-{
-  long long retval;
-  __asm__ __volatile__
-    ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");
-  return retval;
-}
-
-__CRT_INLINE long long __cdecl llrintf (float x)
-{
-  long long retval;
-  __asm__ __volatile__
-    ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");
-  return retval;
-}
-
-__CRT_INLINE long long __cdecl llrintl (long double x)
-{
-  long long retval;
-  __asm__ __volatile__
-    ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");
-  return retval;
-}
-#endif /* !__FAST_MATH__ || !__MINGW_GNUC_PREREQ (4,0)  */
-
-/* 7.12.9.6 */
-/* round away from zero, regardless of fpu control word settings */
-extern double __cdecl round (double);
-extern float __cdecl roundf (float);
-extern long double __cdecl roundl (long double);
-
-/* 7.12.9.7  */
-extern long __cdecl lround (double);
-extern long __cdecl lroundf (float);
-extern long __cdecl lroundl (long double);
-
-extern long long __cdecl llround (double);
-extern long long __cdecl llroundf (float);
-extern long long __cdecl llroundl (long double);
-
-/* 7.12.9.8 */
-/* round towards zero, regardless of fpu control word settings */
-extern double __cdecl trunc (double);
-extern float __cdecl truncf (float);
-extern long double __cdecl truncl (long double);
-
-/* 7.12.10.1 Double in C89 */
-extern float __cdecl fmodf (float, float);
-extern long double __cdecl fmodl (long double, long double);
-
-/* 7.12.10.2 */
-extern double __cdecl remainder (double, double);
-extern float __cdecl remainderf (float, float);
-extern long double __cdecl remainderl (long double, long double);
-
-/* 7.12.10.3 */
-extern double __cdecl remquo(double, double, int *);
-extern float __cdecl remquof(float, float, int *);
-extern long double __cdecl remquol(long double, long double, int *);
-
-/* 7.12.11.1 */
-extern double __cdecl copysign (double, double); /* in libmoldname.a */
-extern float __cdecl copysignf (float, float);
-extern long double __cdecl copysignl (long double, long double);
-
-/* 7.12.11.2 Return a NaN */
-extern double __cdecl nan(const char *tagp);
-extern float __cdecl nanf(const char *tagp);
-extern long double __cdecl nanl(const char *tagp);
+  extern long double __cdecl hypotl (long double, long double);
+
+  extern long double __cdecl powl (long double, long double);
+  extern long double __cdecl expl(long double);
+  extern long double __cdecl coshl(long double);
+  extern long double __cdecl fabsl (long double);
+  extern long double __cdecl acosl(long double);
+  extern long double __cdecl asinl(long double);
+  extern long double __cdecl atanl(long double);
+  extern long double __cdecl atan2l(long double,long double);
+  extern long double __cdecl sinhl(long double);
+  extern long double __cdecl tanhl(long double);
+
+  /* 7.12.8.1 The erf functions  */
+  extern double __cdecl erf (double);
+  extern float __cdecl erff (float);
+  /* TODO
+  extern long double __cdecl erfl (long double);
+  */ 
+
+  /* 7.12.8.2 The erfc functions  */
+  extern double __cdecl erfc (double);
+  extern float __cdecl erfcf (float);
+  /* TODO
+  extern long double __cdecl erfcl (long double);
+  */ 
+
+  /* 7.12.8.3 The lgamma functions */
+  extern double __cdecl lgamma (double);
+  extern float __cdecl lgammaf (float);
+  extern long double __cdecl lgammal (long double);
+
+  /* 7.12.8.4 The tgamma functions */
+  extern double __cdecl tgamma (double);
+  extern float __cdecl tgammaf (float);
+  extern long double __cdecl tgammal (long double);
+
+  extern long double __cdecl ceill (long double);
+  extern long double __cdecl floorl (long double);
+  extern long double __cdecl frexpl(long double,int *);
+  extern long double __cdecl log10l(long double);
+  extern long double __cdecl logl(long double);
+  extern long double __cdecl cosl(long double);
+  extern long double __cdecl sinl(long double);
+  extern long double __cdecl tanl(long double);
+  extern long double sqrtl(long double);
+
+  /* 7.12.9.3 */
+  extern double __cdecl nearbyint ( double);
+  extern float __cdecl nearbyintf (float);
+  extern long double __cdecl nearbyintl (long double);
+
+  /* 7.12.9.4 */
+  /* round, using fpu control word settings */
+  __CRT_INLINE double __cdecl rint (double x)
+  {
+    double retval;
+    __asm__ ("frndint;": "=t" (retval) : "0" (x));
+    return retval;
+  }
+
+  __CRT_INLINE float __cdecl rintf (float x)
+  {
+    float retval;
+    __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
+    return retval;
+  }
+
+  __CRT_INLINE long double __cdecl rintl (long double x)
+  {
+    long double retval;
+    __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
+    return retval;
+  }
+
+  /* 7.12.9.5 */
+  __CRT_INLINE long __cdecl lrint (double x) 
+  {
+    long retval;  
+    __asm__ __volatile__                                                             \
+      ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");                               \
+      return retval;
+  }
+
+  __CRT_INLINE long __cdecl lrintf (float x) 
+  {
+    long retval;
+    __asm__ __volatile__                                                             \
+      ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");                               \
+      return retval;
+  }
+
+  __CRT_INLINE long __cdecl lrintl (long double x) 
+  {
+    long retval;
+    __asm__ __volatile__                                                             \
+      ("fistpl %0"  : "=m" (retval) : "t" (x) : "st");                               \
+      return retval;
+  }
+
+  __CRT_INLINE long long __cdecl llrint (double x) 
+  {
+    long long retval;
+    __asm__ __volatile__                                                             \
+      ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");                                      \
+      return retval;
+  }
+
+  __CRT_INLINE long long __cdecl llrintf (float x) 
+  {
+    long long retval;
+    __asm__ __volatile__                                                             \
+      ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");                                      \
+      return retval;
+  }
+
+  __CRT_INLINE long long __cdecl llrintl (long double x) 
+  {
+    long long retval;
+    __asm__ __volatile__                                                             \
+      ("fistpll %0"  : "=m" (retval) : "t" (x) : "st");                                      \
+      return retval;
+  }
+
+  /* 7.12.9.6 */
+  /* round away from zero, regardless of fpu control word settings */
+  extern double __cdecl round (double);
+  extern float __cdecl roundf (float);
+  extern long double __cdecl roundl (long double);
+
+  /* 7.12.9.7  */
+  extern long __cdecl lround (double);
+  extern long __cdecl lroundf (float);
+  extern long __cdecl lroundl (long double);
+
+  extern long long __cdecl llround (double);
+  extern long long __cdecl llroundf (float);
+  extern long long __cdecl llroundl (long double);
+
+  /* 7.12.9.8 */
+  /* round towards zero, regardless of fpu control word settings */
+  extern double __cdecl trunc (double);
+  extern float __cdecl truncf (float);
+  extern long double __cdecl truncl (long double);
+
+  extern long double __cdecl fmodl (long double, long double);
+
+  /* 7.12.10.2 */ 
+  extern double __cdecl remainder (double, double);
+  extern float __cdecl remainderf (float, float);
+  extern long double __cdecl remainderl (long double, long double);
+
+  /* 7.12.10.3 */
+  extern double __cdecl remquo(double, double, int *);
+  extern float __cdecl remquof(float, float, int *);
+  extern long double __cdecl remquol(long double, long double, int *);
+
+  /* 7.12.11.1 */
+  extern double __cdecl copysign (double, double); /* in libmoldname.a */
+  extern float __cdecl copysignf (float, float);
+  extern long double __cdecl copysignl (long double, long double);
+
+  /* 7.12.11.2 Return a NaN */
+  extern double __cdecl nan(const char *tagp);
+  extern float __cdecl nanf(const char *tagp);
+  extern long double __cdecl nanl(const char *tagp);
 
 #ifndef __STRICT_ANSI__
 #define _nan() nan("")
@@ -753,50 +590,143 @@ extern long double __cdecl nanl(const char *tagp);
 #define _nanl() nanl("")
 #endif
 
-/* 7.12.11.3 */
-extern double __cdecl nextafter (double, double); /* in libmoldname.a */
-extern float __cdecl nextafterf (float, float);
-extern long double __cdecl nextafterl (long double, long double);
+  /* 7.12.11.3 */
+  extern double __cdecl nextafter (double, double); /* in libmoldname.a */
+  extern float __cdecl nextafterf (float, float);
+  extern long double __cdecl nextafterl (long double, long double);
+
+  /* 7.12.11.4 The nexttoward functions: TODO */
+
+  /* 7.12.12.1 */
+  /*  x > y ? (x - y) : 0.0  */
+  extern double __cdecl fdim (double x, double y);
+  extern float __cdecl fdimf (float x, float y);
+  extern long double __cdecl fdiml (long double x, long double y);
+
+  /* fmax and fmin.
+  NaN arguments are treated as missing data: if one argument is a NaN
+  and the other numeric, then these functions choose the numeric
+  value. */
+
+  /* 7.12.12.2 */
+  extern double __cdecl fmax  (double, double);
+  extern float __cdecl fmaxf (float, float);
+  extern long double __cdecl fmaxl (long double, long double);
+
+  /* 7.12.12.3 */
+  extern double __cdecl fmin (double, double);
+  extern float __cdecl fminf (float, float);
+  extern long double __cdecl fminl (long double, long double);
+
+  /* 7.12.13.1 */
+  /* return x * y + z as a ternary op */ 
+  extern double __cdecl fma (double, double, double);
+  extern float __cdecl fmaf (float, float, float);
+  extern long double __cdecl fmal (long double, long double, long double);
+
+
+  /* 7.12.14 */
+  /* 
+  *  With these functions, comparisons involving quiet NaNs set the FP
+  *  condition code to "unordered".  The IEEE floating-point spec
+  *  dictates that the result of floating-point comparisons should be
+  *  false whenever a NaN is involved, with the exception of the != op, 
+  *  which always returns true: yes, (NaN != NaN) is true).
+  */
 
-/* 7.12.11.4 The nexttoward functions */
-extern double __cdecl nexttoward (double,  long double);
-extern float __cdecl nexttowardf (float,  long double);
-extern long double __cdecl nexttowardl (long double, long double);
+#if __GNUC__ >= 3
 
-/* 7.12.12.1 */
-/*  x > y ? (x - y) : 0.0  */
-extern double __cdecl fdim (double x, double y);
-extern float __cdecl fdimf (float x, float y);
-extern long double __cdecl fdiml (long double x, long double y);
+#define isgreater(x, y) __builtin_isgreater(x, y)
+#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+#define isless(x, y) __builtin_isless(x, y)
+#define islessequal(x, y) __builtin_islessequal(x, y)
+#define islessgreater(x, y) __builtin_islessgreater(x, y)
+#define isunordered(x, y) __builtin_isunordered(x, y)
 
-/* fmax and fmin.
-   NaN arguments are treated as missing data: if one argument is a NaN
-   and the other numeric, then these functions choose the numeric
-   value. */
+#else
+  /*  helper  */
+  __CRT_INLINE int  __cdecl
+    __fp_unordered_compare (long double x, long double y){
+      unsigned short retval;
+      __asm__ ("fucom %%st(1);"
+       "fnstsw;": "=a" (retval) : "t" (x), "u" (y));
+      return retval;
+  }
 
-/* 7.12.12.2 */
-extern double __cdecl fmax  (double, double);
-extern float __cdecl fmaxf (float, float);
-extern long double __cdecl fmaxl (long double, long double);
+#define isgreater(x, y) ((__fp_unordered_compare(x, y) \
+  & 0x4500) == 0)
+#define isless(x, y) ((__fp_unordered_compare (y, x) \
+  & 0x4500) == 0)
+#define isgreaterequal(x, y) ((__fp_unordered_compare (x, y) \
+  & FP_INFINITE) == 0)
+#define islessequal(x, y) ((__fp_unordered_compare(y, x) \
+  & FP_INFINITE) == 0)
+#define islessgreater(x, y) ((__fp_unordered_compare(x, y) \
+  & FP_SUBNORMAL) == 0)
+#define isunordered(x, y) ((__fp_unordered_compare(x, y) \
+  & 0x4500) == 0x4500)
 
-/* 7.12.12.3 */
-extern double __cdecl fmin (double, double);
-extern float __cdecl fminf (float, float);
-extern long double __cdecl fminl (long double, long double);
+#endif
 
-/* 7.12.13.1 */
-/* return x * y + z as a ternary op */
-extern double __cdecl fma (double, double, double);
-extern float __cdecl fmaf (float, float, float);
-extern long double __cdecl fmal (long double, long double, long double);
 
+#endif /* __STDC_VERSION__ >= 199901L */
+#endif /* __NO_ISOCEXT */
+
+#ifdef __cplusplus
+}
+extern "C++" {
+  template<class _Ty> inline _Ty _Pow_int(_Ty _X,int _Y) {
+    unsigned int _N;
+    if(_Y >= 0) _N = (unsigned int)_Y;
+    else _N = (unsigned int)(-_Y);
+    for(_Ty _Z = _Ty(1);;_X *= _X) {
+      if((_N & 1)!=0) _Z *= _X;
+      if((_N >>= 1)==0) return (_Y < 0 ? _Ty(1) / _Z : _Z); 
+    }
+  }
+}
+#endif
+
+#pragma pack(pop)
+
+#if !defined(__STRICT_ANSI__) && !defined(_MATH_DEFINES_DEFINED)
+#define _MATH_DEFINES_DEFINED
+
+#define M_E 2.71828182845904523536
+#define M_LOG2E 1.44269504088896340736
+#define M_LOG10E 0.434294481903251827651
+#define M_LN2 0.693147180559945309417
+#define M_LN10 2.30258509299404568402
+#define M_PI 3.14159265358979323846
+#define M_PI_2 1.57079632679489661923
+#define M_PI_4 0.785398163397448309616
+#define M_1_PI 0.318309886183790671538
+#define M_2_PI 0.636619772367581343076
+#define M_2_SQRTPI 1.12837916709551257390
+#define M_SQRT2 1.41421356237309504880
+#define M_SQRT1_2 0.707106781186547524401
+#endif
+
+#ifndef __MINGW_FPCLASS_DEFINED
+#define __MINGW_FPCLASS_DEFINED 1
+#define        _FPCLASS_SNAN   0x0001  /* Signaling "Not a Number" */
+#define        _FPCLASS_QNAN   0x0002  /* Quiet "Not a Number" */
+#define        _FPCLASS_NINF   0x0004  /* Negative Infinity */
+#define        _FPCLASS_NN     0x0008  /* Negative Normal */
+#define        _FPCLASS_ND     0x0010  /* Negative Denormal */
+#define        _FPCLASS_NZ     0x0020  /* Negative Zero */
+#define        _FPCLASS_PZ     0x0040  /* Positive Zero */
+#define        _FPCLASS_PD     0x0080  /* Positive Denormal */
+#define        _FPCLASS_PN     0x0100  /* Positive Normal */
+#define        _FPCLASS_PINF   0x0200  /* Positive Infinity */
+#endif /* __MINGW_FPCLASS_DEFINED */
 
 /* 7.12.14 */
-/*
+/* 
  *  With these functions, comparisons involving quiet NaNs set the FP
  *  condition code to "unordered".  The IEEE floating-point spec
  *  dictates that the result of floating-point comparisons should be
- *  false whenever a NaN is involved, with the exception of the != op,
+ *  false whenever a NaN is involved, with the exception of the != op, 
  *  which always returns true: yes, (NaN != NaN) is true).
  */
 
@@ -834,15 +764,5 @@ __fp_unordered_compare (long double x, long double y){
 
 #endif
 
+#endif /* End _MATH_H_ */
 
-#endif /* __STDC_VERSION__ >= 199901L */
-#endif /* __NO_ISOCEXT */
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* Not RC_INVOKED */
-
-
-#endif /* Not _MATH_H_ */
index ffc9a37..a30de52 100644 (file)
-/*
- * mbctype.h
- *
- * Functions for testing multibyte character types and converting characters.
- *
- * This file is part of the Mingw32 package.
- *
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
+/**
+ * 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 _INC_MBCTYPE
+#define _INC_MBCTYPE
 
-#ifndef _MBCTYPE_H_
-#define _MBCTYPE_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
-
-/* return values for _mbsbtype  and  _mbbtype in mbstring.h */
-#define _MBC_SINGLE 0
-#define _MBC_LEAD 1
-#define _MBC_TRAIL 2
-#define _MBC_ILLEGAL (-1)
-
-/*  args for setmbcp (in lieu of actual codepage)  */
-#define _MB_CP_SBCS 0
-#define _MB_CP_OEM (-2)
-#define _MB_CP_ANSI (-3)
-#define _MB_CP_LOCALE (-4)
-
-#define _MS     0x01
-#define _MP     0x02
-#define _M1     0x04
-#define _M2     0x08
-
-#define _SBUP   0x10
-#define _SBLOW  0x20
-
-
-#ifndef RC_INVOKED
+#include <ctype.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef        __STRICT_ANSI__
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _setmbcp (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _getmbcp (void);
+  /* CRT stuff */
+#if 1
+#if defined (_DLL) && defined (_M_IX86)
+  /* Retained for compatibility with VC++ 5.0 and earlier versions */
+  _CRTIMP unsigned char * __cdecl __p__mbctype(void);
+  _CRTIMP unsigned char * __cdecl __p__mbcasemap(void);
+#endif  /* defined (_DLL) && defined (_M_IX86) */
+#endif
+#ifndef _mbctype
+#ifdef _MSVCRT_
+  extern unsigned char _mbctype[257];
+#else
+#define _mbctype       (*_imp___mbctype)
+  extern unsigned char **_imp___mbctype;
+#endif
+#endif
+#ifndef _mbcasemap
+#ifdef _MSVCRT_
+  extern unsigned char *_mbcasemap;
+#else
+#define _mbcasemap     (*_imp___mbcasemap)
+  extern unsigned char **_imp___mbcasemap;
+#endif
+#endif
 
-/* byte classification  */
-/* NB: Corresponding _ismbc* functions are in mbstring.h */
+  /* CRT stuff */
+#if 1
+  extern pthreadmbcinfo __ptmbcinfo;
+  extern int __globallocalestatus;
+  extern int __locale_changed;
+  extern struct threadmbcinfostruct __initialmbcinfo;
+  pthreadmbcinfo __cdecl __updatetmbcinfo(void);
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbalpha (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbalnum (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbgraph (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbprint (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbpunct (unsigned int);
+#define _MS 0x01
+#define _MP 0x02
+#define _M1 0x04
+#define _M2 0x08
 
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkana (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkalnum (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkprint (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbkpunct (unsigned int);
+#define _SBUP 0x10
+#define _SBLOW 0x20
 
+#define _MBC_SINGLE 0
+#define _MBC_LEAD 1
+#define _MBC_TRAIL 2
+#define _MBC_ILLEGAL (-1)
 
-/* these are also in mbstring.h */
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbblead (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbtrail (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbslead (const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbstrail (const unsigned char*, const unsigned char*);
+#define _KANJI_CP 932
 
-#ifdef __DECLSPEC_SUPPORTED
-__MINGW_IMPORT unsigned char _mbctype[];
-__MINGW_IMPORT unsigned char _mbcasemap[];
+#define _MB_CP_SBCS 0
+#define _MB_CP_OEM -2
+#define _MB_CP_ANSI -3
+#define _MB_CP_LOCALE -4
+
+#ifndef _MBCTYPE_DEFINED
+#define _MBCTYPE_DEFINED
+
+  _CRTIMP int __cdecl _setmbcp(int _CodePage);
+  _CRTIMP int __cdecl _getmbcp(void);
+  _CRTIMP int __cdecl _ismbbkalnum(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbkalnum_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbkana(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbkana_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbkpunct(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbkpunct_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbkprint(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbkprint_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbalpha(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbalpha_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbpunct(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbpunct_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbalnum(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbalnum_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbprint(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbprint_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbgraph(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbgraph_l(unsigned int _C,_locale_t _Locale);
+#ifndef _MBLEADTRAIL_DEFINED
+#define _MBLEADTRAIL_DEFINED
+  _CRTIMP int __cdecl _ismbblead(unsigned int _C);
+  _CRTIMP int __cdecl _ismbblead_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbtrail(unsigned int _C);
+  _CRTIMP int __cdecl _ismbbtrail_l(unsigned int _C,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbslead(const unsigned char *_Str,const unsigned char *_Pos);
+  _CRTIMP int __cdecl _ismbslead_l(const unsigned char *_Str,const unsigned char *_Pos,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbstrail(const unsigned char *_Str,const unsigned char *_Pos);
+  _CRTIMP int __cdecl _ismbstrail_l(const unsigned char *_Str,const unsigned char *_Pos,_locale_t _Locale);
+#endif
 #endif
-
-/* TODO : _MBCS_ mappings go in tchar.h */
-
-#endif /* Not strict ANSI */
 
 #ifdef __cplusplus
 }
 #endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _MCTYPE_H_ */
-
-
+#endif
index 4428b60..d5363b1 100644 (file)
-/*
- * mbstring.h
- *
- * Protototypes for string functions supporting multibyte characters.
- *
- * This file is part of the Mingw32 package.
- *
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
+/**
+ * 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 _INC_MBSTRING
+#define _INC_MBSTRING
 
-#ifndef _MBSTRING_H_
-#define _MBSTRING_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#ifndef RC_INVOKED
-
-#define __need_size_t
-#include <stddef.h>
+#pragma pack(push,_CRT_PACKING)
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef        __STRICT_ANSI__
-
-/* character classification */
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcalnum (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcalpha (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcdigit (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcgraph (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcprint (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcpunct (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcspace (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbclower (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcupper (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbclegal (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcsymbol (unsigned int);
-
-
-/* also in mbctype.h */
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbblead (unsigned int );
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbbtrail (unsigned int );
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbslead ( const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbstrail ( const unsigned char*, const unsigned char*);
-
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctolower (unsigned int);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctoupper (unsigned int);
-
-_CRTIMP void __cdecl __MINGW_NOTHROW _mbccpy (unsigned char*, const unsigned char*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbclen (const unsigned char*);
-
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbbtombc (unsigned int);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctombb (unsigned int);
+#ifndef _FILE_DEFINED
+  struct _iobuf {
+    char *_ptr;
+    int _cnt;
+    char *_base;
+    int _flag;
+    int _file;
+    int _charbuf;
+    int _bufsiz;
+    char *_tmpfname;
+  };
+  typedef struct _iobuf FILE;
+#define _FILE_DEFINED
+#endif
 
-/* Return value constants for these are defined in mbctype.h.  */
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbbtype (unsigned char, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsbtype (const unsigned char*, size_t);
+#ifndef _MBSTRING_DEFINED
+#define _MBSTRING_DEFINED
+  _CRTIMP unsigned char *__cdecl _mbsdup(const unsigned char *_Str);
+  _CRTIMP unsigned int __cdecl _mbbtombc(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbbtombc_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbbtype(unsigned char _Ch,int _CType);
+  _CRTIMP int __cdecl _mbbtype_l(unsigned char _Ch,int _CType,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbctombb(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbctombb_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsbtype(const unsigned char *_Str,size_t _Pos);
+  _CRTIMP int __cdecl _mbsbtype_l(const unsigned char *_Str,size_t _Pos,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbscat(unsigned char *_Dest,const unsigned char *_Source);
+  _CRTIMP unsigned char *_mbscat_l(unsigned char *_Dest,const unsigned char *_Source,_locale_t _Locale);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbschr(const unsigned char *_Str,unsigned int _Ch);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbschr_l(const unsigned char *_Str,unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbscmp(const unsigned char *_Str1,const unsigned char *_Str2);
+  _CRTIMP int __cdecl _mbscmp_l(const unsigned char *_Str1,const unsigned char *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbscoll(const unsigned char *_Str1,const unsigned char *_Str2);
+  _CRTIMP int __cdecl _mbscoll_l(const unsigned char *_Str1,const unsigned char *_Str2,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbscpy(unsigned char *_Dest,const unsigned char *_Source);
+  _CRTIMP unsigned char *_mbscpy_l(unsigned char *_Dest,const unsigned char *_Source,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbscspn(const unsigned char *_Str,const unsigned char *_Control);
+  _CRTIMP size_t __cdecl _mbscspn_l(const unsigned char *_Str,const unsigned char *_Control,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsdec(const unsigned char *_Start,const unsigned char *_Pos);
+  _CRTIMP unsigned char *__cdecl _mbsdec_l(const unsigned char *_Start,const unsigned char *_Pos,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsicmp(const unsigned char *_Str1,const unsigned char *_Str2);
+  _CRTIMP int __cdecl _mbsicmp_l(const unsigned char *_Str1,const unsigned char *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsicoll(const unsigned char *_Str1,const unsigned char *_Str2);
+  _CRTIMP int __cdecl _mbsicoll_l(const unsigned char *_Str1,const unsigned char *_Str2,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsinc(const unsigned char *_Ptr);
+  _CRTIMP unsigned char *__cdecl _mbsinc_l(const unsigned char *_Ptr,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbslen(const unsigned char *_Str);
+  _CRTIMP size_t __cdecl _mbslen_l(const unsigned char *_Str,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbsnlen(const unsigned char *_Str,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _mbsnlen_l(const unsigned char *_Str,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbslwr(unsigned char *_String);
+  _CRTIMP unsigned char *_mbslwr_l(unsigned char *_String,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsnbcat(unsigned char *_Dest,const unsigned char *_Source,size_t _Count);
+  _CRTIMP unsigned char *__cdecl _mbsnbcat_l(unsigned char *_Dest,const unsigned char *_Source,size_t _Count,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsnbcmp(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsnbcmp_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsnbcoll(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsnbcoll_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbsnbcnt(const unsigned char *_Str,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _mbsnbcnt_l(const unsigned char *_Str,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsnbcpy(unsigned char *_Dest,const unsigned char *_Source,size_t _Count);
+  _CRTIMP unsigned char *__cdecl _mbsnbcpy_l(unsigned char *_Dest,const unsigned char *_Source,size_t _Count,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsnbicmp(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsnbicmp_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsnbicoll(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsnbicoll_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsnbset(unsigned char *_Str,unsigned int _Ch,size_t _MaxCount);
+  _CRTIMP unsigned char *__cdecl _mbsnbset_l(unsigned char *_Str,unsigned int _Ch,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsncat(unsigned char *_Dest,const unsigned char *_Source,size_t _Count);
+  _CRTIMP unsigned char *__cdecl _mbsncat_l(unsigned char *_Dest,const unsigned char *_Source,size_t _Count,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbsnccnt(const unsigned char *_Str,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _mbsnccnt_l(const unsigned char *_Str,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsncmp(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsncmp_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsncoll(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsncoll_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsncpy(unsigned char *_Dest,const unsigned char *_Source,size_t _Count);
+  _CRTIMP unsigned char *__cdecl _mbsncpy_l(unsigned char *_Dest,const unsigned char *_Source,size_t _Count,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbsnextc (const unsigned char *_Str);
+  _CRTIMP unsigned int __cdecl _mbsnextc_l(const unsigned char *_Str,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsnicmp(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsnicmp_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _mbsnicoll(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _mbsnicoll_l(const unsigned char *_Str1,const unsigned char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsninc(const unsigned char *_Str,size_t _Count);
+  _CRTIMP unsigned char *__cdecl _mbsninc_l(const unsigned char *_Str,size_t _Count,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsnset(unsigned char *_Dst,unsigned int _Val,size_t _MaxCount);
+  _CRTIMP unsigned char *__cdecl _mbsnset_l(unsigned char *_Dst,unsigned int _Val,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbspbrk(const unsigned char *_Str,const unsigned char *_Control);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbspbrk_l(const unsigned char *_Str,const unsigned char *_Control,_locale_t _Locale);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbsrchr(const unsigned char *_Str,unsigned int _Ch);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbsrchr_l(const unsigned char *_Str,unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsrev(unsigned char *_Str);
+  _CRTIMP unsigned char *__cdecl _mbsrev_l(unsigned char *_Str,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsset(unsigned char *_Str,unsigned int _Val);
+  _CRTIMP unsigned char *__cdecl _mbsset_l(unsigned char *_Str,unsigned int _Val,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbsspn(const unsigned char *_Str,const unsigned char *_Control);
+  _CRTIMP size_t __cdecl _mbsspn_l(const unsigned char *_Str,const unsigned char *_Control,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsspnp(const unsigned char *_Str1,const unsigned char *_Str2);
+  _CRTIMP unsigned char *__cdecl _mbsspnp_l(const unsigned char *_Str1,const unsigned char *_Str2,_locale_t _Locale);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbsstr(const unsigned char *_Str,const unsigned char *_Substr);
+  _CRTIMP _CONST_RETURN unsigned char *__cdecl _mbsstr_l(const unsigned char *_Str,const unsigned char *_Substr,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbstok(unsigned char *_Str,const unsigned char *_Delim);
+  _CRTIMP unsigned char *__cdecl _mbstok_l(unsigned char *_Str,const unsigned char *_Delim,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbsupr(unsigned char *_String);
+  _CRTIMP unsigned char *_mbsupr_l(unsigned char *_String,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbclen(const unsigned char *_Str);
+  _CRTIMP size_t __cdecl _mbclen_l(const unsigned char *_Str,_locale_t _Locale);
+  _CRTIMP void __cdecl _mbccpy(unsigned char *_Dst,const unsigned char *_Src);
+  _CRTIMP void __cdecl _mbccpy_l(unsigned char *_Dst,const unsigned char *_Src,_locale_t _Locale);
+#define _mbccmp(_cpc1,_cpc2) _mbsncmp((_cpc1),(_cpc2),1)
 
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbscpy (unsigned char*, const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsncpy (unsigned char*, const unsigned char*, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnbcpy (unsigned char*, const unsigned char*, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsset (unsigned char*, unsigned int);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnset (unsigned char*, unsigned int, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnbset (unsigned char*, unsigned int, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsdup (const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsrev (unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbscat (unsigned char*, const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsncat (unsigned char*, const unsigned char*, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsnbcat (unsigned char*, const unsigned char*, size_t);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbslen (const unsigned char*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbsnbcnt (const unsigned char*, size_t);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbsnccnt (const unsigned char*, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbschr (const unsigned char*, unsigned int);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsrchr (const unsigned char*, unsigned int);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbsspn (const unsigned char*, const unsigned char*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW _mbscspn (const unsigned char*, const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsspnp (const unsigned char*, const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbspbrk (const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbscmp (const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsicmp (const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsncmp (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnicmp (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbcmp (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbicmp (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbscoll (const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsicoll (const unsigned char*, const unsigned char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsncoll (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnicoll (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbcoll (const unsigned char*, const unsigned char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW _mbsnbicoll (const unsigned char*, const unsigned char*, size_t);
+#ifdef __cplusplus
+#ifndef _CPP_MBCS_INLINES_DEFINED
+#define _CPP_MBCS_INLINES_DEFINED
+  extern "C++" {
+    static inline unsigned char *__cdecl _mbschr(unsigned char *_String,unsigned int _Char) { return ((unsigned char *)_mbschr((const unsigned char *)_String,_Char)); }
+    static inline unsigned char *__cdecl _mbschr_l(unsigned char *_String,unsigned int _Char,_locale_t _Locale) { return ((unsigned char *)_mbschr_l((const unsigned char *)_String,_Char,_Locale)); }
+    static inline unsigned char *__cdecl _mbspbrk(unsigned char *_String,const unsigned char *_CharSet) { return ((unsigned char *)_mbspbrk((const unsigned char *)_String,_CharSet)); }
+    static inline unsigned char *__cdecl _mbspbrk_l(unsigned char *_String,const unsigned char *_CharSet,_locale_t _Locale) { return ((unsigned char *)_mbspbrk_l((const unsigned char *)_String,_CharSet,_Locale)); }
+    static inline unsigned char *__cdecl _mbsrchr(unsigned char *_String,unsigned int _Char) { return ((unsigned char *)_mbsrchr((const unsigned char *)_String,_Char)); }
+    static inline unsigned char *__cdecl _mbsrchr_l(unsigned char *_String,unsigned int _Char,_locale_t _Locale) { return ((unsigned char *)_mbsrchr_l((const unsigned char *)_String,_Char,_Locale)); }
+    static inline unsigned char *__cdecl _mbsstr(unsigned char *_String,const unsigned char *_Match) { return ((unsigned char *)_mbsstr((const unsigned char *)_String,_Match)); }
+    static inline unsigned char *__cdecl _mbsstr_l(unsigned char *_String,const unsigned char *_Match,_locale_t _Locale) { return ((unsigned char *)_mbsstr_l((const unsigned char *)_String,_Match,_Locale)); }
+  }
+#endif
+#endif
 
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsinc (const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsninc (const unsigned char*, size_t);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsdec (const unsigned char*, const unsigned char*);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbsnextc  (const unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbslwr (unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbsupr (unsigned char*);
-_CRTIMP unsigned char* __cdecl __MINGW_NOTHROW  _mbstok (unsigned char*, const unsigned char*);
+  _CRTIMP int __cdecl _ismbcalnum(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcalnum_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcalpha(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcalpha_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcdigit(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcdigit_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcgraph(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcgraph_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbclegal(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbclegal_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbclower(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbclower_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcprint(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcprint_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcpunct(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcpunct_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcspace(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcspace_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcupper(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcupper_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbctolower(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbctolower_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbctoupper(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbctoupper_l(unsigned int _Ch,_locale_t _Locale);
+#endif
 
-/* Kanji */
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbchira (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbckata (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcl0 (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcl1 (unsigned int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _ismbcl2 (unsigned int);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbcjistojms (unsigned int);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbcjmstojis (unsigned int);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctohira (unsigned int);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _mbctokata (unsigned int);
+#ifndef _MBLEADTRAIL_DEFINED
+#define _MBLEADTRAIL_DEFINED
+  _CRTIMP int __cdecl _ismbblead(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbblead_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbbtrail(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbbtrail_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbslead(const unsigned char *_Str,const unsigned char *_Pos);
+  _CRTIMP int __cdecl _ismbslead_l(const unsigned char *_Str,const unsigned char *_Pos,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbstrail(const unsigned char *_Str,const unsigned char *_Pos);
+  _CRTIMP int __cdecl _ismbstrail_l(const unsigned char *_Str,const unsigned char *_Pos,_locale_t _Locale);
+#endif
 
-#endif /* Not strict ANSI */
+  _CRTIMP int __cdecl _ismbchira(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbchira_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbckata(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbckata_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcsymbol(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcsymbol_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcl0(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcl0_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcl1(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcl1_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP int __cdecl _ismbcl2(unsigned int _Ch);
+  _CRTIMP int __cdecl _ismbcl2_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbcjistojms(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbcjistojms_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbcjmstojis(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbcjmstojis_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbctohira(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbctohira_l(unsigned int _Ch,_locale_t _Locale);
+  _CRTIMP unsigned int __cdecl _mbctokata(unsigned int _Ch);
+  _CRTIMP unsigned int __cdecl _mbctokata_l(unsigned int _Ch,_locale_t _Locale);
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
-#endif /* Not _MBSTRING_H_ */
-
+#pragma pack(pop)
 
+#include <sec_api/mbstring_s.h>
 
+#endif
index 451de0c..2552023 100644 (file)
@@ -1,6 +1,13 @@
+/**
+ * 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.
+ */
 /*
  * This file is part of the Mingw32 package.
  *
  * mem.h maps to string.h
  */
+#ifndef        __STRICT_ANSI__
 #include <string.h>
+#endif
index 9ba65cf..90d88ae 100644 (file)
@@ -1,7 +1,40 @@
-/*
- * This file is part of the Mingw32 package.
- *
- * memory.h maps to the standard string.h header.
+/**
+ * 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 _INC_MEMORY
+#define _INC_MEMORY
 
-#include       <string.h>
+#include <_mingw.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _CONST_RETURN
+#define _CONST_RETURN
+#endif
+
+#define _WConst_return _CONST_RETURN
+
+#ifndef _CRT_MEMORY_DEFINED
+#define _CRT_MEMORY_DEFINED
+  _CRTIMP void *__cdecl _memccpy(void *_Dst,const void *_Src,int _Val,size_t _MaxCount);
+  _CONST_RETURN void *__cdecl memchr(const void *_Buf ,int _Val,size_t _MaxCount);
+  _CRTIMP int __cdecl _memicmp(const void *_Buf1,const void *_Buf2,size_t _Size);
+  _CRTIMP int __cdecl _memicmp_l(const void *_Buf1,const void *_Buf2,size_t _Size,_locale_t _Locale);
+  int __cdecl memcmp(const void *_Buf1,const void *_Buf2,size_t _Size);
+  void *__cdecl memcpy(void *_Dst,const void *_Src,size_t _Size);
+  void *__cdecl memset(void *_Dst,int _Val,size_t _Size);
+
+#ifndef        NO_OLDNAMES
+  void *__cdecl memccpy(void *_Dst,const void *_Src,int _Val,size_t _Size);
+  int __cdecl memicmp(const void *_Buf1,const void *_Buf2,size_t _Size);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/reactos/include/crt/mingw32/crtdbg.h b/reactos/include/crt/mingw32/crtdbg.h
new file mode 100644 (file)
index 0000000..797998a
--- /dev/null
@@ -0,0 +1,212 @@
+/**
+ * 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.
+ */
+#include <_mingw.h>
+
+#ifndef _INC_CRTDBG
+#define _INC_CRTDBG
+
+#pragma pack(push,_CRT_PACKING)
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  typedef void *_HFILE;
+
+#define _CRT_WARN 0
+#define _CRT_ERROR 1
+#define _CRT_ASSERT 2
+#define _CRT_ERRCNT 3
+
+#define _CRTDBG_MODE_FILE 0x1
+#define _CRTDBG_MODE_DEBUG 0x2
+#define _CRTDBG_MODE_WNDW 0x4
+#define _CRTDBG_REPORT_MODE -1
+
+#define _CRTDBG_INVALID_HFILE ((_HFILE)-1)
+#define _CRTDBG_HFILE_ERROR ((_HFILE)-2)
+#define _CRTDBG_FILE_STDOUT ((_HFILE)-4)
+#define _CRTDBG_FILE_STDERR ((_HFILE)-5)
+#define _CRTDBG_REPORT_FILE ((_HFILE)-6)
+
+  typedef int (__cdecl *_CRT_REPORT_HOOK)(int,char *,int *);
+  typedef int (__cdecl *_CRT_REPORT_HOOKW)(int,wchar_t *,int *);
+
+#define _CRT_RPTHOOK_INSTALL 0
+#define _CRT_RPTHOOK_REMOVE 1
+
+#define _HOOK_ALLOC 1
+#define _HOOK_REALLOC 2
+#define _HOOK_FREE 3
+
+  typedef int (__cdecl *_CRT_ALLOC_HOOK)(int,void *,size_t,int,long,const unsigned char *,int);
+
+#define _CRTDBG_ALLOC_MEM_DF 0x01
+#define _CRTDBG_DELAY_FREE_MEM_DF 0x02
+#define _CRTDBG_CHECK_ALWAYS_DF 0x04
+#define _CRTDBG_RESERVED_DF 0x08
+#define _CRTDBG_CHECK_CRT_DF 0x10
+#define _CRTDBG_LEAK_CHECK_DF 0x20
+
+#define _CRTDBG_CHECK_EVERY_16_DF 0x00100000
+#define _CRTDBG_CHECK_EVERY_128_DF 0x00800000
+#define _CRTDBG_CHECK_EVERY_1024_DF 0x04000000
+
+#define _CRTDBG_CHECK_DEFAULT_DF 0
+
+#define _CRTDBG_REPORT_FLAG -1
+
+#define _BLOCK_TYPE(block) (block & 0xFFFF)
+#define _BLOCK_SUBTYPE(block) (block >> 16 & 0xFFFF)
+
+#define _FREE_BLOCK 0
+#define _NORMAL_BLOCK 1
+#define _CRT_BLOCK 2
+#define _IGNORE_BLOCK 3
+#define _CLIENT_BLOCK 4
+#define _MAX_BLOCKS 5
+
+  typedef void (__cdecl *_CRT_DUMP_CLIENT)(void *,size_t);
+
+  struct _CrtMemBlockHeader;
+
+  typedef struct _CrtMemState {
+    struct _CrtMemBlockHeader *pBlockHeader;
+    size_t lCounts[_MAX_BLOCKS];
+    size_t lSizes[_MAX_BLOCKS];
+    size_t lHighWaterCount;
+    size_t lTotalCount;
+  } _CrtMemState;
+
+#ifndef _STATIC_ASSERT
+#define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr)]
+#endif
+
+#ifndef _ASSERT
+#define _ASSERT(expr) ((void)0)
+#endif
+
+#ifndef _ASSERTE
+#define _ASSERTE(expr) ((void)0)
+#endif
+
+#ifndef _ASSERT_EXPR
+#define _ASSERT_EXPR(expr,expr_str) ((void)0)
+#endif
+
+#ifndef _ASSERT_BASE
+#define _ASSERT_BASE _ASSERT_EXPR
+#endif
+
+#define _RPT0(rptno,msg)
+#define _RPTW0(rptno,msg)
+
+#define _RPT1(rptno,msg,arg1)
+#define _RPTW1(rptno,msg,arg1)
+#define _RPT2(rptno,msg,arg1,arg2)
+#define _RPTW2(rptno,msg,arg1,arg2)
+#define _RPT3(rptno,msg,arg1,arg2,arg3)
+#define _RPTW3(rptno,msg,arg1,arg2,arg3)
+#define _RPT4(rptno,msg,arg1,arg2,arg3,arg4)
+#define _RPTW4(rptno,msg,arg1,arg2,arg3,arg4)
+#define _RPTF0(rptno,msg)
+#define _RPTFW0(rptno,msg)
+#define _RPTF1(rptno,msg,arg1)
+#define _RPTFW1(rptno,msg,arg1)
+#define _RPTF2(rptno,msg,arg1,arg2)
+#define _RPTFW2(rptno,msg,arg1,arg2)
+#define _RPTF3(rptno,msg,arg1,arg2,arg3)
+#define _RPTFW3(rptno,msg,arg1,arg2,arg3)
+#define _RPTF4(rptno,msg,arg1,arg2,arg3,arg4)
+#define _RPTFW4(rptno,msg,arg1,arg2,arg3,arg4)
+
+#define _malloc_dbg(s,t,f,l) malloc(s)
+#define _calloc_dbg(c,s,t,f,l) calloc(c,s)
+#define _realloc_dbg(p,s,t,f,l) realloc(p,s)
+#define _recalloc_dbg(p,c,s,t,f,l) _recalloc(p,c,s)
+#define _expand_dbg(p,s,t,f,l) _expand(p,s)
+#define _free_dbg(p,t) free(p)
+#define _msize_dbg(p,t) _msize(p)
+
+#define _aligned_malloc_dbg(s,a,f,l) _aligned_malloc(s,a)
+#define _aligned_realloc_dbg(p,s,a,f,l) _aligned_realloc(p,s,a)
+#define _aligned_recalloc_dbg(p,c,s,a,f,l) _aligned_realloc(p,c,s,a)
+#define _aligned_free_dbg(p) _aligned_free(p)
+#define _aligned_offset_malloc_dbg(s,a,o,f,l) _aligned_offset_malloc(s,a,o)
+#define _aligned_offset_realloc_dbg(p,s,a,o,f,l) _aligned_offset_realloc(p,s,a,o)
+#define _aligned_offset_recalloc_dbg(p,c,s,a,o,f,l) _aligned_offset_recalloc(p,c,s,a,o)
+
+#define _malloca_dbg(s,t,f,l) _malloca(s)
+#define _freea_dbg(p,t) _freea(p)
+
+#define _strdup_dbg(s,t,f,l) _strdup(s)
+#define _wcsdup_dbg(s,t,f,l) _wcsdup(s)
+#define _mbsdup_dbg(s,t,f,l) _mbsdup(s)
+#define _tempnam_dbg(s1,s2,t,f,l) _tempnam(s1,s2)
+#define _wtempnam_dbg(s1,s2,t,f,l) _wtempnam(s1,s2)
+#define _fullpath_dbg(s1,s2,le,t,f,l) _fullpath(s1,s2,le)
+#define _wfullpath_dbg(s1,s2,le,t,f,l) _wfullpath(s1,s2,le)
+#define _getcwd_dbg(s,le,t,f,l) _getcwd(s,le)
+#define _wgetcwd_dbg(s,le,t,f,l) _wgetcwd(s,le)
+#define _getdcwd_dbg(d,s,le,t,f,l) _getdcwd(d,s,le)
+#define _wgetdcwd_dbg(d,s,le,t,f,l) _wgetdcwd(d,s,le)
+#define _getdcwd_lk_dbg(d,s,le,t,f,l) _getdcwd_nolock(d,s,le)
+#define _wgetdcwd_lk_dbg(d,s,le,t,f,l) _wgetdcwd_nolock(d,s,le)
+
+#define _CrtSetReportHook(f) ((_CRT_REPORT_HOOK)0)
+#define _CrtGetReportHook() ((_CRT_REPORT_HOOK)0)
+#define _CrtSetReportHook2(t,f) ((int)0)
+#define _CrtSetReportHookW2(t,f) ((int)0)
+#define _CrtSetReportMode(t,f) ((int)0)
+#define _CrtSetReportFile(t,f) ((_HFILE)0)
+
+#define _CrtDbgBreak() ((void)0)
+
+#define _CrtSetBreakAlloc(a) ((long)0)
+#define _CrtSetAllocHook(f) ((_CRT_ALLOC_HOOK)0)
+#define _CrtGetAllocHook() ((_CRT_ALLOC_HOOK)0)
+#define _CrtCheckMemory() ((int)1)
+#define _CrtSetDbgFlag(f) ((int)0)
+#define _CrtDoForAllClientObjects(f,c) ((void)0)
+#define _CrtIsValidPointer(p,n,r) ((int)1)
+#define _CrtIsValidHeapPointer(p) ((int)1)
+#define _CrtIsMemoryBlock(p,t,r,f,l) ((int)1)
+#define _CrtReportBlockType(p) ((int)-1)
+#define _CrtSetDumpClient(f) ((_CRT_DUMP_CLIENT)0)
+#define _CrtGetDumpClient() ((_CRT_DUMP_CLIENT)0)
+#define _CrtMemCheckpoint(s) ((void)0)
+#define _CrtMemDifference(s1,s2,s3) ((int)0)
+#define _CrtMemDumpAllObjectsSince(s) ((void)0)
+#define _CrtMemDumpStatistics(s) ((void)0)
+#define _CrtDumpMemoryLeaks() ((int)0)
+#define _CrtSetDebugFillThreshold(t) ((size_t)0)
+#define _CrtSetCheckCount(f) ((int)0)
+#define _CrtGetCheckCount() ((int)0)
+
+#ifdef __cplusplus
+}
+
+  void *__cdecl operator new[](size_t _Size);
+  inline void *__cdecl operator new(size_t _Size,int,const char *,int) { return ::operator new(_Size); }
+  inline void *__cdecl operator new[](size_t _Size,int,const char *,int) { return ::operator new[](_Size); }
+  void __cdecl operator delete[](void *);
+  inline void __cdecl operator delete(void *_P,int,const char *,int) { ::operator delete(_P); }
+  inline void __cdecl operator delete[](void *_P,int,const char *,int) { ::operator delete[](_P); }
+#endif
+
+#pragma pack(pop)
+
+#include <sec_api/crtdbg_s.h>
+
+#endif
index 5545055..4e6490b 100644 (file)
@@ -28,6 +28,12 @@ Boston, MA 02110-1301, USA.  */
  * ISO C Standard:  7.15  Variable arguments  <stdarg.h>
  */
 
+#ifndef _INC_STDARG
+#define _INC_STDARG
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
+
 #ifndef _STDARG_H
 #ifndef _ANSI_STDARG_H_
 #ifndef __need___va_list
@@ -58,7 +64,7 @@ typedef __builtin_va_list __gnuc_va_list;
 /* Define va_list, if desired, from __gnuc_va_list. */
 /* We deliberately do not define va_list when called from
    stdio.h, because ANSI C says that stdio.h is not supposed to define
-   va_list.  stdio.h needs to have access to that data type,
+   va_list.  stdio.h needs to have access to that data type, 
    but must not use that name.  It should use the name __gnuc_va_list,
    which is safe because it is reserved for the implementation.  */
 
@@ -131,3 +137,17 @@ typedef __gnuc_va_list va_list;
 
 #endif /* not _ANSI_STDARG_H_ */
 #endif /* not _STDARG_H */
+
+#include <vadefs.h>
+
+#ifndef va_start
+#define va_start _crt_va_start
+#endif
+#ifndef va_arg
+#define va_arg _crt_va_arg
+#endif
+#ifndef va_end
+#define va_end _crt_va_end
+#endif
+
+#endif
index 8102a5f..60b6a28 100644 (file)
@@ -1,29 +1,35 @@
-/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004
-   Free Software Foundation, Inc.
+/**
+ * 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.
+ */
+
+#include <_mingw.h>
+
+#ifndef _INC_STDDEF
+#define _INC_STDDEF
 
-This file is part of GCC.
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+#ifndef _CRT_ERRNO_DEFINED
+#define _CRT_ERRNO_DEFINED
+  _CRTIMP extern int *__cdecl _errno(void);
+#define errno (*_errno())
+  errno_t __cdecl _set_errno(int _Value);
+  errno_t __cdecl _get_errno(int *_Value);
+#endif
 
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+  _CRTIMP extern unsigned long __cdecl __threadid(void);
+#define _threadid (__threadid())
+  _CRTIMP extern uintptr_t __cdecl __threadhandle(void);
 
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING.  If not, write to
-the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.  */
+#ifdef __cplusplus
+}
+#endif
 
-/* As a special exception, if you include this header file into source
-   files compiled by GCC, this header file does not by itself cause
-   the resulting executable to be covered by the GNU General Public
-   License.  This exception does not however invalidate any other
-   reasons why the executable file might be covered by the GNU General
-   Public License.  */
+#endif
 
 /*
  * ISO C Standard:  7.17  Common definitions  <stddef.h>
@@ -49,19 +55,6 @@ Boston, MA 02110-1301, USA.  */
 #endif
 
 #ifndef __sys_stdtypes_h
-/* This avoids lossage on SunOS but only if stdtypes.h comes first.
-   There's no way to win with the other order!  Sun lossage.  */
-
-/* On 4.3bsd-net2, make sure ansi.h is included, so we have
-   one less case to deal with in the following.  */
-#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__)
-#include <machine/ansi.h>
-#endif
-/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
-#include <sys/_types.h>
-#endif
-
 /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
    defined if the corresponding type is *not* defined.
    FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_ */
@@ -147,9 +140,12 @@ _TYPE_wchar_t;
 #define ___int_ptrdiff_t_h
 #define _GCC_PTRDIFF_T
 #ifndef __PTRDIFF_TYPE__
-#define __PTRDIFF_TYPE__ long int
+#define __PTRDIFF_TYPE__ long long int
 #endif
+#ifndef _PTRDIFF_T_DEFINED
+#define _PTRDIFF_T_DEFINED
 typedef __PTRDIFF_TYPE__ ptrdiff_t;
+#endif
 #endif /* _GCC_PTRDIFF_T */
 #endif /* ___int_ptrdiff_t_h */
 #endif /* _BSD_PTRDIFF_T_ */
@@ -208,7 +204,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
 #define __size_t
 #endif
 #ifndef __SIZE_TYPE__
-#define __SIZE_TYPE__ long unsigned int
+#define __SIZE_TYPE__ long long unsigned int
 #endif
 #if !(defined (__GNUG__) && defined (size_t))
 typedef __SIZE_TYPE__ size_t;
@@ -283,7 +279,7 @@ typedef long ssize_t;
    symbols in the _FOO_T_ family, stays defined even after its
    corresponding type is defined).  If we define wchar_t, then we
    must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if
-   we undef _WCHAR_T_, then we must also define rune_t, since
+   we undef _WCHAR_T_, then we must also define rune_t, since 
    headers like runetype.h assume that if machine/ansi.h is included,
    and _BSD_WCHAR_T_ is not defined, then rune_t is available.
    machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of
@@ -305,22 +301,9 @@ typedef _BSD_RUNE_T_ rune_t;
 #endif
 #endif
 #endif
-/* FreeBSD 5 can't be handled well using "traditional" logic above
-   since it no longer defines _BSD_RUNE_T_ yet still desires to export
-   rune_t in some cases... */
-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
-#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
-#if __BSD_VISIBLE
-#ifndef _RUNE_T_DECLARED
-typedef __rune_t        rune_t;
-#define _RUNE_T_DECLARED
-#endif
-#endif
-#endif
-#endif
 
 #ifndef __WCHAR_TYPE__
-#define __WCHAR_TYPE__ int
+#define __WCHAR_TYPE__ unsigned short
 #endif
 #ifndef __cplusplus
 typedef __WCHAR_TYPE__ wchar_t;
@@ -345,18 +328,6 @@ typedef __WCHAR_TYPE__ wchar_t;
 #undef __need_wchar_t
 #endif /* _STDDEF_H or __need_wchar_t.  */
 
-#if defined (__need_wint_t)
-#ifndef _WINT_T
-#define _WINT_T
-
-#ifndef __WINT_TYPE__
-#define __WINT_TYPE__ unsigned int
-#endif
-typedef __WINT_TYPE__ wint_t;
-#endif
-#undef __need_wint_t
-#endif
-
 /*  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
     are already defined.  */
 /*  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.  */
diff --git a/reactos/include/crt/mingw32/vadefs.h b/reactos/include/crt/mingw32/vadefs.h
new file mode 100644 (file)
index 0000000..eae1a2e
--- /dev/null
@@ -0,0 +1,85 @@
+/**
+ * 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 _INC_VADEFS
+#define _INC_VADEFS
+
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
+
+#include <_mingw.h>
+
+#undef _CRT_PACKING
+#define _CRT_PACKING 8
+#pragma pack(push,_CRT_PACKING)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _UINTPTR_T_DEFINED
+#define _UINTPTR_T_DEFINED
+#ifndef __uintptr_t_defined
+#define __uintptr_t_defined
+#undef uintptr_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef unsigned int uintptr_t __attribute__ ((mode (DI)));
+#else
+  typedef unsigned __int64 uintptr_t;
+#endif
+#else
+  typedef unsigned long uintptr_t;
+#endif
+#endif
+#endif
+
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+  typedef __builtin_va_list __gnuc_va_list;
+#endif
+
+#ifndef _VA_LIST_DEFINED
+#define _VA_LIST_DEFINED
+  typedef __gnuc_va_list va_list;
+#endif
+
+#ifdef __cplusplus
+#define _ADDRESSOF(v) (&reinterpret_cast<const char &>(v))
+#else
+#define _ADDRESSOF(v) (&(v))
+#endif
+
+#if defined(__ia64__)
+#define _VA_ALIGN 8
+#define _SLOTSIZEOF(t) ((sizeof(t) + _VA_ALIGN - 1) & ~(_VA_ALIGN - 1))
+
+#define _VA_STRUCT_ALIGN 16
+
+#define _ALIGNOF(ap) ((((ap)+_VA_STRUCT_ALIGN - 1) & ~(_VA_STRUCT_ALIGN -1)) - (ap))
+#define _APALIGN(t,ap) (__alignof(t) > 8 ? _ALIGNOF((uintptr_t) ap) : 0)
+#else
+#define _SLOTSIZEOF(t) (sizeof(t))
+#define _APALIGN(t,ap) (__alignof(t))
+#endif
+
+#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
+#define va_copy(d,s)   __builtin_va_copy(d,s)
+#endif
+#define __va_copy(d,s) __builtin_va_copy(d,s)
+
+#define _INTSIZEOF(n) ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1))
+
+#define _crt_va_start(v,l)     __builtin_va_start(v,l)
+#define _crt_va_arg(v,l)       __builtin_va_arg(v,l)
+#define _crt_va_end(v) __builtin_va_end(v)
+
+#ifdef __cplusplus
+}
+#endif
+
+#pragma pack(pop)
+#endif
index c57014b..f5ceabd 100644 (file)
-/*
- * process.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Function calls for spawning child processes.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_PROCESS
+#define _INC_PROCESS
 
-#ifndef        _PROCESS_H_
-#define        _PROCESS_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
 /* Includes a definition of _pid_t and pid_t */
 #include <sys/types.h>
 
-#include <stdint.h>
+#ifndef _POSIX_
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-/*
- * Constants for cwait actions.
- * Obsolete for Win32.
- */
-#define        _WAIT_CHILD             0
-#define        _WAIT_GRANDCHILD        1
+#define _P_WAIT 0
+#define _P_NOWAIT 1
+#define _OLD_P_OVERLAY 2
+#define _P_NOWAITO 3
+#define _P_DETACH 4
+#define _P_OVERLAY 2
+
+#define _WAIT_CHILD 0
+#define _WAIT_GRANDCHILD 1
+
+  _CRTIMP uintptr_t __cdecl _beginthread(void (__cdecl *_StartAddress) (void *),unsigned _StackSize,void *_ArgList);
+  _CRTIMP void __cdecl _endthread(void);
+  _CRTIMP uintptr_t __cdecl _beginthreadex(void *_Security,unsigned _StackSize,unsigned (__stdcall *_StartAddress) (void *),void *_ArgList,unsigned _InitFlag,unsigned *_ThrdAddr);
+  _CRTIMP void __cdecl _endthreadex(unsigned _Retval);
+
+#ifndef _CRT_TERMINATE_DEFINED
+#define _CRT_TERMINATE_DEFINED
+  __declspec(noreturn) void __cdecl exit(int _Code);
+  _CRTIMP __declspec(noreturn) void __cdecl _exit(int _Code);
+
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma push_macro("abort")
+#undef abort
+#endif
+  void __cdecl __declspec(noreturn) abort(void);
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma pop_macro("abort")
+#undef abort
+#endif
+#endif
 
-#ifndef        _NO_OLDNAMES
-#define        WAIT_CHILD              _WAIT_CHILD
-#define        WAIT_GRANDCHILD         _WAIT_GRANDCHILD
-#endif /* Not _NO_OLDNAMES */
+  _CRTIMP void __cdecl _cexit(void);
+  _CRTIMP void __cdecl _c_exit(void);
+  _CRTIMP int __cdecl _getpid(void);
+  _CRTIMP intptr_t __cdecl _cwait(int *_TermStat,intptr_t _ProcHandle,int _Action);
+  _CRTIMP intptr_t __cdecl _execl(const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _execle(const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _execlp(const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _execlpe(const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _execv(const char *_Filename,const char *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _execve(const char *_Filename,const char *const *_ArgList,const char *const *_Env);
+  _CRTIMP intptr_t __cdecl _execvp(const char *_Filename,const char *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _execvpe(const char *_Filename,const char *const *_ArgList,const char *const *_Env);
+  _CRTIMP intptr_t __cdecl _spawnl(int _Mode,const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _spawnle(int _Mode,const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _spawnlp(int _Mode,const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _spawnlpe(int _Mode,const char *_Filename,const char *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _spawnv(int _Mode,const char *_Filename,const char *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _spawnve(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
+  _CRTIMP intptr_t __cdecl _spawnvp(int _Mode,const char *_Filename,const char *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _spawnvpe(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
+
+#ifndef _CRT_SYSTEM_DEFINED
+#define _CRT_SYSTEM_DEFINED
+  int __cdecl system(const char *_Command);
+#endif
 
-/*
- * Mode constants for spawn functions.
- */
-#define        _P_WAIT         0
-#define        _P_NOWAIT       1
-#define        _P_OVERLAY      2
-#define        _OLD_P_OVERLAY  _P_OVERLAY
-#define        _P_NOWAITO      3
-#define        _P_DETACH       4
-
-#ifndef        _NO_OLDNAMES
-#define        P_WAIT          _P_WAIT
-#define        P_NOWAIT        _P_NOWAIT
-#define        P_OVERLAY       _P_OVERLAY
-#define        OLD_P_OVERLAY   _OLD_P_OVERLAY
-#define        P_NOWAITO       _P_NOWAITO
-#define        P_DETACH        _P_DETACH
-#endif /* Not _NO_OLDNAMES */
-
-
-#ifndef RC_INVOKED
-
-#ifdef __cplusplus
-extern "C" {
+#ifndef _WPROCESS_DEFINED
+#define _WPROCESS_DEFINED
+  _CRTIMP intptr_t __cdecl _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+  _CRTIMP intptr_t __cdecl _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+  _CRTIMP intptr_t __cdecl _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+  _CRTIMP intptr_t __cdecl _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+#ifndef _CRT_WSYSTEM_DEFINED
+#define _CRT_WSYSTEM_DEFINED
+  _CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
+#endif
 #endif
 
-_CRTIMP void __cdecl __MINGW_NOTHROW _cexit(void);
-_CRTIMP void __cdecl __MINGW_NOTHROW _c_exit(void);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _cwait (int*, _pid_t, int);
-
-_CRTIMP _pid_t __cdecl __MINGW_NOTHROW _getpid(void);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _execl     (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execle    (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execlp    (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execlpe   (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execv     (const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execve    (const char*, const char* const*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execvp    (const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _execvpe   (const char*, const char* const*, const char* const*);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnl    (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnle   (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnlp   (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnlpe  (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnv    (int, const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnve   (int, const char*, const char* const*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnvp   (int, const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _spawnvpe  (int, const char*, const char* const*, const char* const*);
-
-
-/*
- * The functions _beginthreadex and _endthreadex are not provided by CRTDLL.
- * They are provided by MSVCRT.
- *
- * NOTE: Apparently _endthread calls CloseHandle on the handle of the thread,
- * making for race conditions if you are not careful. Basically you have to
- * make sure that no-one is going to do *anything* with the thread handle
- * after the thread calls _endthread or returns from the thread function.
- *
- * NOTE: No old names for these functions. Use the underscore.
- */
-_CRTIMP uintptr_t __cdecl __MINGW_NOTHROW
-       _beginthread    (void (*)(void *), unsigned, void*);
-_CRTIMP void __cdecl __MINGW_NOTHROW _endthread        (void);
-
-#ifdef __MSVCRT__
-_CRTIMP uintptr_t __cdecl __MINGW_NOTHROW
-       _beginthreadex  (void *, unsigned, unsigned (__stdcall *) (void *),
-                        void*, unsigned, unsigned*);
-_CRTIMP void __cdecl __MINGW_NOTHROW _endthreadex (unsigned);
+  void __cdecl __security_init_cookie(void);
+#if (defined(_X86_) && !defined(__x86_64))
+  void __fastcall __security_check_cookie(uintptr_t _StackCookie);
+  __declspec(noreturn) void __cdecl __report_gsfailure(void);
+#else
+  void __cdecl __security_check_cookie(uintptr_t _StackCookie);
+  __declspec(noreturn) void __cdecl __report_gsfailure(uintptr_t _StackCookie);
+#endif
+  extern uintptr_t __security_cookie;
+
+  intptr_t __cdecl _loaddll(char *_Filename);
+  int __cdecl _unloaddll(intptr_t _Handle);
+  int (__cdecl *__cdecl _getdllprocaddr(intptr_t _Handle,char *_ProcedureName,intptr_t _Ordinal))(void);
+
+#ifdef _DECL_DLLMAIN
+#ifdef _WINDOWS_
+  WINBOOL WINAPI DllMain(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved);
+  WINBOOL WINAPI _CRT_INIT(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved);
+  WINBOOL WINAPI _wCRT_INIT(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved);
+  extern WINBOOL (WINAPI *const _pRawDllMain)(HANDLE,DWORD,LPVOID);
+#else
+  int __stdcall DllMain(void *_HDllHandle,unsigned _Reason,void *_Reserved);
+  int __stdcall _CRT_INIT(void *_HDllHandle,unsigned _Reason,void *_Reserved);
+  int __stdcall _wCRT_INIT(void *_HDllHandle,unsigned _Reason,void *_Reserved);
+  extern int (__stdcall *const _pRawDllMain)(void *,unsigned,void *);
+#endif
 #endif
 
+#ifndef        NO_OLDNAMES
+#define P_WAIT _P_WAIT
+#define P_NOWAIT _P_NOWAIT
+#define P_OVERLAY _P_OVERLAY
+#define OLD_P_OVERLAY _OLD_P_OVERLAY
+#define P_NOWAITO _P_NOWAITO
+#define P_DETACH _P_DETACH
+#define WAIT_CHILD _WAIT_CHILD
+#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
+
+  intptr_t __cdecl cwait(int *_TermStat,intptr_t _ProcHandle,int _Action);
+  intptr_t __cdecl execlpe(const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl spawnl(int,const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl spawnle(int,const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl spawnlp(int,const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl spawnlpe(int,const char *_Filename,const char *_ArgList,...);
+  int __cdecl getpid(void);
+#ifdef __GNUC__
+  /* Those methods are predefined by gcc builtins to return int. So to prevent
+     stupid warnings, define them in POSIX way.  This is save, because those
+     methods do not return in success case, so that the return value is not
+     really dependent to its scalar width.  */
+  int __cdecl execl(const char *_Filename,const char *_ArgList,...);
+  int __cdecl execle(const char *_Filename,const char *_ArgList,...);
+  int __cdecl execlp(const char *_Filename,const char *_ArgList,...);
+  int __cdecl execv(const char *_Filename,char *const _ArgList[]);
+  int __cdecl execve(const char *_Filename,char *const _ArgList[],char *const _Env[]);
+  int __cdecl execvp(const char *_Filename,char *const _ArgList[]);
+  int __cdecl execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]);
+#else
+  intptr_t __cdecl execlp(const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl execl(const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl execle(const char *_Filename,const char *_ArgList,...);
+  intptr_t __cdecl execv(const char *_Filename,char *const _ArgList[]);
+  intptr_t __cdecl execve(const char *_Filename,char *const _ArgList[],char *const _Env[]);
+  intptr_t __cdecl execvp(const char *_Filename,char *const _ArgList[]);
+  intptr_t __cdecl execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]);
+#endif
+  intptr_t __cdecl spawnv(int,const char *_Filename,char *const _ArgList[]);
+  intptr_t __cdecl spawnve(int,const char *_Filename,char *const _ArgList[],char *const _Env[]);
+  intptr_t __cdecl spawnvp(int,const char *_Filename,char *const _ArgList[]);
+  intptr_t __cdecl spawnvpe(int,const char *_Filename,char *const _ArgList[],char *const _Env[]);
+#endif
 
-#ifndef        _NO_OLDNAMES
-/*
- * Functions without the leading underscore, for portability. These functions
- * live in liboldnames.a.
- */
-_CRTIMP int  __cdecl __MINGW_NOTHROW cwait (int*, pid_t, int);
-_CRTIMP pid_t __cdecl __MINGW_NOTHROW getpid (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW execl (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW execle (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW execlp (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW execlpe (const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW execv (const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW execve (const char*, const char* const*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW execvp (const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW execvpe (const char*, const char* const*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnl (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnle (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnlp (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnlpe (int, const char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnv (int, const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnve (int, const char*, const char* const*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnvp (int, const char*, const char* const*);
-_CRTIMP int __cdecl __MINGW_NOTHROW spawnvpe (int, const char*, const char* const*, const char* const*);
-#endif /* Not _NO_OLDNAMES */
-
-#ifdef __cplusplus
+#ifdef __cplusplus
 }
 #endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* _PROCESS_H_ not defined */
+#endif
+#endif
index fc6ffc3..c3be3cf 100644 (file)
-/*
- * search.h
- *
- * Functions for searching and sorting.
- *
- * This file is part of the Mingw32 package.
- *
- * Contributors:
- *  Created by Danny Smith  <dannysmith@users.sourceforge.net>
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
+/**
+ * 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 _INC_SEARCH
+#define _INC_SEARCH
 
-#ifndef _SEARCH_H_
-#define _SEARCH_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
-
-#ifndef RC_INVOKED
+#include <stddef.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef _SIZE_T_DEFINED
-typedef unsigned int size_t;
-#define _SIZE_T_DEFINED
-#endif
-
-/* bsearch and qsort are also declared in stdlib.h */
-_CRTIMP void* __cdecl bsearch (const void*, const void*, size_t, size_t,
-                              int (*)(const void*, const void*));
-_CRTIMP void __cdecl qsort (void*, size_t, size_t,
-                           int (*)(const void*, const void*));
-
-_CRTIMP void* __cdecl _lfind (const void*, const void*, unsigned int*,
-                             unsigned int, int (*)(const void*, const void*));
-_CRTIMP void* __cdecl _lsearch (const void*, void*, unsigned int*, unsigned int,
-                               int (*)(const void*, const void*));
-/*
-Documentation for these POSIX definitions and prototypes can be found in 
-The Open Group Base Specifications Issue 6
-IEEE Std 1003.1, 2004 Edition.
-eg:  http://www.opengroup.org/onlinepubs/009695399/functions/twalk.html
-*/
-
-
-typedef struct entry {
-       char *key;
-       void *data;
-} ENTRY;
-
-typedef enum {
-       FIND,
-       ENTER
-} ACTION;
-
-typedef enum {
-       preorder,
-       postorder,
-       endorder,
-       leaf
-} VISIT;
-
-#ifdef _SEARCH_PRIVATE
-typedef struct node {
-       char         *key;
-       struct node  *llink, *rlink;
-} node_t;
+#ifndef _CRT_ALGO_DEFINED
+#define _CRT_ALGO_DEFINED
+  void *__cdecl bsearch(const void *_Key,const void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
+  void __cdecl qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
 #endif
+  _CRTIMP void *__cdecl _lfind(const void *_Key,const void *_Base,unsigned int *_NumOfElements,unsigned int _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
+  _CRTIMP void *__cdecl _lsearch(const void *_Key,void *_Base,unsigned int *_NumOfElements,unsigned int _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
 
-void * __cdecl tdelete (const void * __restrict__, void ** __restrict__,
-                       int (*)(const void *, const void *))
-                       __MINGW_ATTRIB_NONNULL (1)  __MINGW_ATTRIB_NONNULL (3);
-void * __cdecl tfind (const void *, void * const *,
-                     int (*)(const void *, const void *))
-                     __MINGW_ATTRIB_NONNULL (1)  __MINGW_ATTRIB_NONNULL (3);
-void * __cdecl tsearch (const void *, void **, 
-                       int (*)(const void *, const void *))
-                       __MINGW_ATTRIB_NONNULL (1)  __MINGW_ATTRIB_NONNULL (3);
-void __cdecl twalk (const void *, void (*)(const void *, VISIT, int));
-
-#ifndef        _NO_OLDNAMES
-_CRTIMP void* __cdecl lfind (const void*, const void*, unsigned int*,
-                            unsigned int, int (*)(const void*, const void*));
-_CRTIMP void* __cdecl lsearch (const void*, void*, unsigned int*, unsigned int,
-                              int (*)(const void*, const void*));
+#ifndef        NO_OLDNAMES
+  void *__cdecl lfind(const void *_Key,const void *_Base,unsigned int *_NumOfElements,unsigned int _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
+  void *__cdecl lsearch(const void *_Key,void *_Base,unsigned int *_NumOfElements,unsigned int _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
 #endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* RC_INVOKED */
+#include <sec_api/search_s.h>
 
-#endif /*  _SEARCH_H_ */
+#endif
diff --git a/reactos/include/crt/sec_api/conio_s.h b/reactos/include/crt/sec_api/conio_s.h
new file mode 100644 (file)
index 0000000..98d97ba
--- /dev/null
@@ -0,0 +1,42 @@
+/**
+ * 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 _INC_CONIO_S
+#define _INC_CONIO_S
+
+#include <conio.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP errno_t __cdecl _cgets_s(char *_Buffer,size_t _Size,size_t *_SizeRead);
+  _CRTIMP int __cdecl _cprintf_s(const char *_Format,...);
+  _CRTIMP int __cdecl _cscanf_s(const char *_Format,...);
+  _CRTIMP int __cdecl _cscanf_s_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcprintf_s(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_s_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcprintf_s_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+
+#ifndef _WCONIO_DEFINED_S
+#define _WCONIO_DEFINED_S
+  _CRTIMP errno_t __cdecl _cgetws_s(wchar_t *_Buffer,size_t _SizeInWords,size_t *_SizeRead);
+  _CRTIMP int __cdecl _cwprintf_s(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_s(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_s(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/crtdbg_s.h b/reactos/include/crt/sec_api/crtdbg_s.h
new file mode 100644 (file)
index 0000000..4598b4f
--- /dev/null
@@ -0,0 +1,19 @@
+/**
+ * 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 _INC_CRTDBG_S
+#define _INC_CRTDBG_S
+
+#include <crtdbg.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#define _dupenv_s_dbg(ps1,size,s2,t,f,l) _dupenv_s(ps1,size,s2)
+#define _wdupenv_s_dbg(ps1,size,s2,t,f,l) _wdupenv_s(ps1,size,s2)
+
+#endif
+
+#endif
diff --git a/reactos/include/crt/sec_api/io_s.h b/reactos/include/crt/sec_api/io_s.h
new file mode 100644 (file)
index 0000000..ec565a6
--- /dev/null
@@ -0,0 +1,33 @@
+/**
+ * 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 _INC_IO_S
+#define _INC_IO_S
+
+#include <io.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP errno_t __cdecl _access_s(const char *_Filename,int _AccessMode);
+  _CRTIMP errno_t __cdecl _chsize_s(int _FileHandle,__int64 _Size);
+  _CRTIMP errno_t __cdecl _mktemp_s(char *_TemplateName,size_t _Size);
+  _CRTIMP errno_t __cdecl _umask_s(int _NewMode,int *_OldMode);
+
+#ifndef _WIO_S_DEFINED
+#define _WIO_S_DEFINED
+  _CRTIMP errno_t __cdecl _waccess_s(const wchar_t *_Filename,int _AccessMode);
+  _CRTIMP errno_t __cdecl _wmktemp_s(wchar_t *_TemplateName,size_t _SizeInWords);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/mbstring_s.h b/reactos/include/crt/sec_api/mbstring_s.h
new file mode 100644 (file)
index 0000000..6b2b188
--- /dev/null
@@ -0,0 +1,52 @@
+/**
+ * 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 _INC_MBSTRING_S
+#define _INC_MBSTRING_S
+
+#include <mbstring.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _MBSTRING_S_DEFINED
+#define _MBSTRING_S_DEFINED
+  _CRTIMP errno_t __cdecl _mbscat_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src);
+  _CRTIMP errno_t __cdecl _mbscat_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbscpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src);
+  _CRTIMP errno_t __cdecl _mbscpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbslwr_s(unsigned char *_Str,size_t _SizeInBytes);
+  _CRTIMP errno_t __cdecl _mbslwr_s_l(unsigned char *_Str,size_t _SizeInBytes,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsnbcat_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbsnbcat_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsnbcpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbsnbcpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsnbset_s(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Ch,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbsnbset_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Ch,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsncat_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbsncat_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsncpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbsncpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,const unsigned char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsnset_s(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbsnset_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsset_s(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val);
+  _CRTIMP errno_t __cdecl _mbsset_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,unsigned int _Val,_locale_t _Locale);
+  _CRTIMP unsigned char *__cdecl _mbstok_s(unsigned char *_Str,const unsigned char *_Delim,unsigned char **_Context);
+  _CRTIMP unsigned char *__cdecl _mbstok_s_l(unsigned char *_Str,const unsigned char *_Delim,unsigned char **_Context,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbsupr_s(unsigned char *_Str,size_t _SizeInBytes);
+  _CRTIMP errno_t __cdecl _mbsupr_s_l(unsigned char *_Str,size_t _SizeInBytes,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _mbccpy_s(unsigned char *_Dst,size_t _DstSizeInBytes,int *_PCopied,const unsigned char *_Src);
+  _CRTIMP errno_t __cdecl _mbccpy_s_l(unsigned char *_Dst,size_t _DstSizeInBytes,int *_PCopied,const unsigned char *_Src,_locale_t _Locale);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/search_s.h b/reactos/include/crt/sec_api/search_s.h
new file mode 100644 (file)
index 0000000..cae8998
--- /dev/null
@@ -0,0 +1,25 @@
+/**
+ * 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 _INC_SEARCH_S
+#define _INC_SEARCH_S
+
+#include <search.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP void *__cdecl _lfind_s(const void *_Key,const void *_Base,unsigned int *_NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(void *,const void *,const void *),void *_Context);
+  _CRTIMP void *__cdecl _lsearch_s(const void *_Key,void *_Base,unsigned int *_NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(void *,const void *,const void *),void *_Context);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/stdio_s.h b/reactos/include/crt/sec_api/stdio_s.h
new file mode 100644 (file)
index 0000000..c9b803b
--- /dev/null
@@ -0,0 +1,145 @@
+/**
+ * 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 _INC_STDIO_S
+#define _INC_STDIO_S
+
+#include <stdio.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _STDIO_S_DEFINED
+#define _STDIO_S_DEFINED
+  _CRTIMP errno_t __cdecl clearerr_s(FILE *_File);
+  int __cdecl fprintf_s(FILE *_File,const char *_Format,...);
+  size_t __cdecl fread_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File);
+  _CRTIMP int __cdecl _fscanf_s_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
+  int __cdecl printf_s(const char *_Format,...);
+  _CRTIMP int __cdecl _scanf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _scanf_s_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,...);
+  _CRTIMP int __cdecl _snprintf_c(char *_DstBuf,size_t _MaxCount,const char *_Format,...);
+  _CRTIMP int __cdecl _vsnprintf_c(char *_DstBuf,size_t _MaxCount,const char *_Format,va_list _ArgList);
+  int __cdecl sprintf_s(char *_DstBuf,size_t _DstSize,const char *_Format,...);
+  _CRTIMP int __cdecl _fscanf_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _sscanf_l(const char *_Src,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _sscanf_s_l(const char *_Src,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snscanf_s(const char *_Src,size_t _MaxCount,const char *_Format,...);
+  _CRTIMP int __cdecl _snscanf_l(const char *_Src,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snscanf_s_l(const char *_Src,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
+  int __cdecl vfprintf_s(FILE *_File,const char *_Format,va_list _ArgList);
+  int __cdecl vprintf_s(const char *_Format,va_list _ArgList);
+  int __cdecl vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,va_list _ArgList);
+  int __cdecl vsprintf_s(char *_DstBuf,size_t _Size,const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _fprintf_p(FILE *_File,const char *_Format,...);
+  _CRTIMP int __cdecl _printf_p(const char *_Format,...);
+  _CRTIMP int __cdecl _sprintf_p(char *_Dst,size_t _MaxCount,const char *_Format,...);
+  _CRTIMP int __cdecl _vfprintf_p(FILE *_File,const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _vprintf_p(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _vsprintf_p(char *_Dst,size_t _MaxCount,const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _scprintf_p(const char *_Format,...);
+  _CRTIMP int __cdecl _vscprintf_p(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _printf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _printf_p_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fprintf_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _fprintf_p_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vfprintf_l(FILE *_File,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vfprintf_p_l(FILE *_File,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _sprintf_l(char *_DstBuf,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _sprintf_p_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsprintf_l(char *_DstBuf,const char *_Format,_locale_t,va_list _ArgList);
+  _CRTIMP int __cdecl _vsprintf_p_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _scprintf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _scprintf_p_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vscprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vscprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _printf_s_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vprintf_s_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fprintf_s_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vfprintf_s_l(FILE *_File,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _sprintf_s_l(char *_DstBuf,size_t _DstSize,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsprintf_s_l(char *_DstBuf,size_t _DstSize,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _snprintf_s_l(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsnprintf_s_l(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _snprintf_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snprintf_c_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsnprintf_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vsnprintf_c_l(char *_DstBuf,size_t _MaxCount,const char *,_locale_t _Locale,va_list _ArgList);
+
+#ifndef _WSTDIO_S_DEFINED
+#define _WSTDIO_S_DEFINED
+  _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
+  int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
+  int __cdecl wprintf_s(const wchar_t *_Format,...);
+  int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
+  int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,...);
+  int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode);
+  _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
+  _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
+  _CRTIMP int __cdecl _fwprintf_p(FILE *_File,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _wprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vfwprintf_p(FILE *_File,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _vwprintf_p(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vswprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _scwprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vscwprintf_p(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _wprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _wprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _fwprintf_p_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vfwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vfwprintf_p_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _swprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vswprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vswprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _scwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _scwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vscwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsnwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl __swprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,...);
+  _CRTIMP int __cdecl __vswprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,va_list _Args);
+  _CRTIMP int __cdecl _vscwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwscanf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _swscanf_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snwscanf_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _wscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
+#endif
+#endif
+
+  _CRTIMP size_t __cdecl _fread_nolock_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/stdlib_s.h b/reactos/include/crt/sec_api/stdlib_s.h
new file mode 100644 (file)
index 0000000..f98262c
--- /dev/null
@@ -0,0 +1,67 @@
+/**
+ * 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 _INC_STDLIB_S
+#define _INC_STDLIB_S
+
+#include <stdlib.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP errno_t __cdecl _dupenv_s(char **_PBuffer,size_t *_PBufferSizeInBytes,const char *_VarName);
+  _CRTIMP errno_t __cdecl _itoa_s(int _Value,char *_DstBuf,size_t _Size,int _Radix);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _i64toa_s(__int64 _Val,char *_DstBuf,size_t _Size,int _Radix);
+  _CRTIMP errno_t __cdecl _ui64toa_s(unsigned __int64 _Val,char *_DstBuf,size_t _Size,int _Radix);
+#endif
+  _CRTIMP errno_t __cdecl _ltoa_s(long _Val,char *_DstBuf,size_t _Size,int _Radix);
+  _CRTIMP errno_t __cdecl mbstowcs_s(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,const char *_SrcBuf,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _mbstowcs_s_l(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,const char *_SrcBuf,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _ultoa_s(unsigned long _Val,char *_DstBuf,size_t _Size,int _Radix);
+  _CRTIMP errno_t __cdecl _wctomb_s_l(int *_SizeConverted,char *_MbCh,size_t _SizeInBytes,wchar_t _WCh,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl wcstombs_s(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,const wchar_t *_Src,size_t _MaxCountInBytes);
+  _CRTIMP errno_t __cdecl _wcstombs_s_l(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,const wchar_t *_Src,size_t _MaxCountInBytes,_locale_t _Locale);
+
+#ifndef _WSTDLIB_S_DEFINED
+#define _WSTDLIB_S_DEFINED
+  _CRTIMP errno_t __cdecl _itow_s (int _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _ltow_s (long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _ultow_s (unsigned long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _wgetenv_s(size_t *_ReturnSize,wchar_t *_DstBuf,size_t _DstSizeInWords,const wchar_t *_VarName);
+  _CRTIMP errno_t __cdecl _wdupenv_s(wchar_t **_Buffer,size_t *_BufferSizeInWords,const wchar_t *_VarName);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _i64tow_s(__int64 _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _ui64tow_s(unsigned __int64 _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+#endif
+#endif
+
+#ifndef _POSIX_
+  _CRTIMP errno_t __cdecl _ecvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDights,int *_PtDec,int *_PtSign);
+  _CRTIMP errno_t __cdecl _fcvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDec,int *_PtDec,int *_PtSign);
+  _CRTIMP errno_t __cdecl _gcvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDigits);
+  _CRTIMP errno_t __cdecl _makepath_s(char *_PathResult,size_t _Size,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext);
+  _CRTIMP errno_t __cdecl _putenv_s(const char *_Name,const char *_Value);
+  _CRTIMP errno_t __cdecl _searchenv_s(const char *_Filename,const char *_EnvVar,char *_ResultPath,size_t _SizeInBytes);
+  _CRTIMP errno_t __cdecl _splitpath_s(const char *_FullPath,char *_Drive,size_t _DriveSize,char *_Dir,size_t _DirSize,char *_Filename,size_t _FilenameSize,char *_Ext,size_t _ExtSize);
+
+#ifndef _WSTDLIBP_S_DEFINED
+#define _WSTDLIBP_S_DEFINED
+  _CRTIMP errno_t __cdecl _wmakepath_s(wchar_t *_PathResult,size_t _SizeInWords,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
+  _CRTIMP errno_t __cdecl _wputenv_s(const wchar_t *_Name,const wchar_t *_Value);
+  _CRTIMP errno_t __cdecl _wsearchenv_s(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath,size_t _SizeInWords);
+  _CRTIMP errno_t __cdecl _wsplitpath_s(const wchar_t *_FullPath,wchar_t *_Drive,size_t _DriveSizeInWords,wchar_t *_Dir,size_t _DirSizeInWords,wchar_t *_Filename,size_t _FilenameSizeInWords,wchar_t *_Ext,size_t _ExtSizeInWords);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/stralign_s.h b/reactos/include/crt/sec_api/stralign_s.h
new file mode 100644 (file)
index 0000000..5b78f58
--- /dev/null
@@ -0,0 +1,30 @@
+/**
+ * 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 __STRALIGN_H_S_
+#define __STRALIGN_H_S_
+
+#include <stralign.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !defined(I_X86_) && defined(_WSTRING_S_DEFINED)
+#if defined(__cplusplus) && defined(_WConst_Return)
+  static __inline PUWSTR ua_wcscpy_s(PUWSTR Destination,size_t DestinationSize,PCUWSTR Source) {
+    if(WSTR_ALIGNED(Source) && WSTR_ALIGNED(Destination)) return (wcscpy_s((PWSTR)Destination,DestinationSize,(PCWSTR)Source)==0 ? Destination : NULL);
+    return uaw_wcscpy((PCUWSTR)String,Character);
+  }
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/string_s.h b/reactos/include/crt/sec_api/string_s.h
new file mode 100644 (file)
index 0000000..9db70e7
--- /dev/null
@@ -0,0 +1,41 @@
+/**
+ * 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 _INC_STRING_S
+#define _INC_STRING_S
+
+#include <string.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP errno_t __cdecl _strset_s(char *_Dst,size_t _DstSize,int _Value);
+  _CRTIMP errno_t __cdecl _strerror_s(char *_Buf,size_t _SizeInBytes,const char *_ErrMsg);
+  _CRTIMP errno_t __cdecl _strlwr_s(char *_Str,size_t _Size);
+  _CRTIMP errno_t __cdecl _strlwr_s_l(char *_Str,size_t _Size,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _strnset_s(char *_Str,size_t _Size,int _Val,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _strupr_s(char *_Str,size_t _Size);
+  _CRTIMP errno_t __cdecl _strupr_s_l(char *_Str,size_t _Size,_locale_t _Locale);
+#ifndef _WSTRING_S_DEFINED
+#define _WSTRING_S_DEFINED
+  _CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context);
+  _CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum);
+  _CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg);
+  _CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val);
+  _CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
+  _CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size);
+  _CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/sys/timeb_s.h b/reactos/include/crt/sec_api/sys/timeb_s.h
new file mode 100644 (file)
index 0000000..af5ef09
--- /dev/null
@@ -0,0 +1,34 @@
+/**
+ * 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 _TIMEB_H_S
+#define _TIMEB_H_S
+
+#include <sys/timeb.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef _USE_32BIT_TIME_T
+#define _ftime_s _ftime32_s
+#else
+#define _ftime_s _ftime64_s
+#endif
+
+  _CRTIMP errno_t __cdecl _ftime32_s(struct __timeb32 *_Time);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _ftime64_s(struct __timeb64 *_Time);
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/reactos/include/crt/sec_api/tchar_s.h b/reactos/include/crt/sec_api/tchar_s.h
new file mode 100644 (file)
index 0000000..343d348
--- /dev/null
@@ -0,0 +1,266 @@
+/**
+ * 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 _INC_TCHAR_S
+#define _INC_TCHAR_S
+
+#include <tchar.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _UNICODE
+
+#define _tprintf_s wprintf_s
+#define _tprintf_s_l _wprintf_s_l
+#define _tcprintf_s _cwprintf_s
+#define _tcprintf_s_l _cwprintf_s_l
+#define _vtcprintf_s _vcwprintf_s
+#define _vtcprintf_s_l _vcwprintf_s_l
+#define _ftprintf_s fwprintf_s
+#define _ftprintf_s_l _fwprintf_s_l
+#define _stprintf_s swprintf_s
+#define _stprintf_s_l _swprintf_s_l
+#define _sntprintf_s _snwprintf_s
+#define _sntprintf_s_l _snwprintf_s_l
+#define _vtprintf_s vwprintf_s
+#define _vtprintf_s_l _vwprintf_s_l
+#define _vftprintf_s vfwprintf_s
+#define _vftprintf_s_l _vfwprintf_s_l
+#define _vstprintf_s vswprintf_s
+#define _vstprintf_s_l _vswprintf_s_l
+#define _vsntprintf_s _vsnwprintf_s
+#define _vsntprintf_s_l _vsnwprintf_s_l
+
+#define _tscanf_s wscanf_s
+#define _tscanf_s_l _wscanf_s_l
+#define _tcscanf_s _cwscanf_s
+#define _tcscanf_s_l _cwscanf_s_l
+#define _ftscanf_s fwscanf_s
+#define _ftscanf_s_l _fwscanf_s_l
+#define _stscanf_s swscanf_s
+#define _stscanf_s_l _swscanf_s_l
+#define _sntscanf_s _snwscanf_s
+#define _sntscanf_s_l _snwscanf_s_l
+
+#define _cgetts_s _cgetws_s
+#define _getts_s _getws_s
+
+#define _itot_s _itow_s
+#define _ltot_s _ltow_s
+#define _ultot_s _ultow_s
+#define _i64tot_s _i64tow_s
+#define _ui64tot_s _ui64tow_s
+
+#define _tcscat_s wcscat_s
+#define _tcscpy_s wcscpy_s
+#define _tcsncat_s wcsncat_s
+#define _tcsncat_s_l _wcsncat_s_l
+#define _tcsncpy_s wcsncpy_s
+#define _tcsncpy_s_l _wcsncpy_s_l
+#define _tcstok_s wcstok_s
+#define _tcstok_s_l _wcstok_s_l
+#define _tcserror_s _wcserror_s
+#define __tcserror_s __wcserror_s
+
+#define _tcsnset_s _wcsnset_s
+#define _tcsnset_s_l _wcsnset_s_l
+#define _tcsset_s _wcsset_s
+#define _tcsset_s_l _wcsset_s_l
+
+#define _tasctime_s _wasctime_s
+#define _tctime_s _wctime_s
+#define _tctime32_s _wctime32_s
+#define _tctime64_s _wctime64_s
+#define _tstrdate_s _wstrdate_s
+#define _tstrtime_s _wstrtime_s
+
+#define _tgetenv_s _wgetenv_s
+#define _tdupenv_s _wdupenv_s
+#define _tmakepath_s _wmakepath_s
+#define _tputenv_s _wputenv_s
+#define _tsearchenv_s _wsearchenv_s
+#define _tsplitpath_s _wsplitpath_s
+
+#define _tfopen_s _wfopen_s
+#define _tfreopen_s _wfreopen_s
+#define _ttmpnam_s _wtmpnam_s
+#define _taccess_s _waccess_s
+#define _tmktemp_s _wmktemp_s
+
+#define _tcsnccat_s wcsncat_s
+#define _tcsnccat_s_l _wcsncat_s_l
+#define _tcsnccpy_s wcsncpy_s
+#define _tcsnccpy_s_l _wcsncpy_s_l
+
+#define _tcslwr_s _wcslwr_s
+#define _tcslwr_s_l _wcslwr_s_l
+#define _tcsupr_s _wcsupr_s
+#define _tcsupr_s_l _wcsupr_s_l
+
+#define _wcstok_s_l(_String,_Delimiters,_Current_position,_Locale) (wcstok_s(_String,_Delimiters,_Current_position))
+#define _wcsnset_s_l(_Destination,_Destination_size_chars,_Value,_Count,_Locale) (_wcsnset_s(_Destination,_Destination_size_chars,_Value,_Count))
+#define _wcsset_s_l(_Destination,_Destination_size_chars,_Value,_Locale) (_wcsset_s(_Destination,_Destination_size_chars,_Value))
+
+#else
+
+#define _tprintf_s printf_s
+#define _tprintf_s_l _printf_s_l
+#define _tcprintf_s _cprintf_s
+#define _tcprintf_s_l _cprintf_s_l
+#define _vtcprintf_s _vcprintf_s
+#define _vtcprintf_s_l _vcprintf_s_l
+#define _ftprintf_s fprintf_s
+#define _ftprintf_s_l _fprintf_s_l
+#define _stprintf_s sprintf_s
+#define _stprintf_s_l _sprintf_s_l
+#define _sntprintf_s _snprintf_s
+#define _sntprintf_s_l _snprintf_s_l
+#define _vtprintf_s vprintf_s
+#define _vtprintf_s_l _vprintf_s_l
+#define _vftprintf_s vfprintf_s
+#define _vftprintf_s_l _vfprintf_s_l
+#define _vstprintf_s vsprintf_s
+#define _vstprintf_s_l _vsprintf_s_l
+#define _vsntprintf_s _vsnprintf_s
+#define _vsntprintf_s_l _vsnprintf_s_l
+#define _tscanf_s scanf_s
+#define _tscanf_s_l _scanf_s_l
+#define _tcscanf_s _cscanf_s
+#define _tcscanf_s_l _cscanf_s_l
+#define _ftscanf_s fscanf_s
+#define _ftscanf_s_l _fscanf_s_l
+#define _stscanf_s sscanf_s
+#define _stscanf_s_l _sscanf_s_l
+#define _sntscanf_s _snscanf_s
+#define _sntscanf_s_l _snscanf_s_l
+
+#define _getts_s gets_s
+#define _cgetts_s _cgets_s
+#define _itot_s _itoa_s
+#define _ltot_s _ltoa_s
+#define _ultot_s _ultoa_s
+#define _i64tot_s _i64toa_s
+#define _ui64tot_s _ui64toa_s
+
+#define _tcscat_s strcat_s
+#define _tcscpy_s strcpy_s
+#define _tcserror_s strerror_s
+#define __tcserror_s _strerror_s
+
+#define _tasctime_s asctime_s
+#define _tctime_s ctime_s
+#define _tctime32_s _ctime32_s
+#define _tctime64_s _ctime64_s
+#define _tstrdate_s _strdate_s
+#define _tstrtime_s _strtime_s
+
+#define _tgetenv_s getenv_s
+#define _tdupenv_s _dupenv_s
+#define _tmakepath_s _makepath_s
+#define _tputenv_s _putenv_s
+#define _tsearchenv_s _searchenv_s
+#define _tsplitpath_s _splitpath_s
+
+#define _tfopen_s fopen_s
+#define _tfreopen_s freopen_s
+#define _ttmpnam_s tmpnam_s
+#define _tmktemp_s _mktemp_s
+
+#ifndef _POSIX_
+#define _taccess_s _access_s
+#endif
+
+#define _tsopen_s _sopen_s
+
+#ifdef _MBCS
+
+#ifdef _MB_MAP_DIRECT
+
+#define _tcsncat_s _mbsnbcat_s
+#define _tcsncat_s_l _mbsnbcat_s_l
+#define _tcsncpy_s _mbsnbcpy_s
+#define _tcsncpy_s_l _mbsnbcpy_s_l
+#define _tcstok_s _mbstok_s
+#define _tcstok_s_l _mbstok_s_l
+
+#define _tcsnset_s _mbsnbset_s
+#define _tcsnset_s_l _mbsnbset_s_l
+#define _tcsset_s _mbsset_s
+#define _tcsset_s_l _mbsset_s_l
+
+#define _tcsnccat_s _mbsncat_s
+#define _tcsnccat_s_l _mbsncat_s_l
+#define _tcsnccpy_s _mbsncpy_s
+#define _tcsnccpy_s_l _mbsncpy_s_l
+#define _tcsncset_s _mbsnset_s
+#define _tcsncset_s_l _mbsnset_s_l
+
+#define _tcslwr_s _mbslwr_s
+#define _tcslwr_s_l _mbslwr_s_l
+#define _tcsupr_s _mbsupr_s
+#define _tcsupr_s_l _mbsupr_s_l
+
+#define _tccpy_s _mbccpy_s
+#define _tccpy_s_l _mbccpy_s_l
+#else
+
+  _CRTIMP char *__cdecl _tcsncat_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
+  _CRTIMP char *__cdecl _tcsncat_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP char *__cdecl _tcsncpy_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
+  _CRTIMP char *__cdecl _tcsncpy_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP char *__cdecl _tcstok_s(char *_Str,const char *_Delim,char **_Context);
+  _CRTIMP char *__cdecl _tcstok_s_l(char *_Str,const char *_Delim,char **_Context,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _tcsset_s(char *_Str,size_t _SizeInChars,unsigned int _Val);
+  _CRTIMP errno_t __cdecl _tcsset_s_l(char *_Str,size_t _SizeInChars,unsigned int,_locale_t _Locale);
+  _CRTIMP char *__cdecl _tcsnccat_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
+  _CRTIMP char *__cdecl _tcsnccat_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP char *__cdecl _tcsnccpy_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
+  _CRTIMP char *__cdecl _tcsnccpy_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP char *__cdecl _tcslwr_s(char *_Str,size_t _SizeInChars);
+  _CRTIMP char *__cdecl _tcslwr_s_l(char *_Str,size_t _SizeInChars,_locale_t _Locale);
+  _CRTIMP char *__cdecl _tcsupr_s(char *_Str,size_t _SizeInChars);
+  _CRTIMP char *__cdecl _tcsupr_s_l(char *_Str,size_t _SizeInChars,_locale_t _Locale);
+
+#endif
+
+#else
+
+#define _tcsncat_s strncat_s
+#define _tcsncat_s_l _strncat_s_l
+#define _tcsncpy_s strncpy_s
+#define _tcsncpy_s_l _strncpy_s_l
+#define _tcstok_s strtok_s
+#define _tcstok_s_l _strtok_s_l
+
+#define _tcsnset_s _strnset_s
+#define _tcsnset_s_l _strnset_s_l
+#define _tcsset_s _strset_s
+#define _tcsset_s _strset_s
+#define _tcsset_s_l _strset_s_l
+
+#define _tcsnccat_s strncat_s
+#define _tcsnccat_s_l _strncat_s_l
+#define _tcsnccpy_s strncpy_s
+#define _tcsnccpy_s_l _strncpy_s_l
+
+#define _tcslwr_s _strlwr_s
+#define _tcslwr_s_l _strlwr_s_l
+#define _tcsupr_s _strupr_s
+#define _tcsupr_s_l _strupr_s_l
+
+#define _strnset_s_l(_Destination,_Destination_size_chars,_Value,_Count,_Locale) (_strnset_s(_Destination,_Destination_size_chars,_Value,_Count))
+#define _strset_s_l(_Destination,_Destination_size_chars,_Value,_Locale) (_strset_s(_Destination,_Destination_size_chars,_Value))
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/time_s.h b/reactos/include/crt/sec_api/time_s.h
new file mode 100644 (file)
index 0000000..9603b94
--- /dev/null
@@ -0,0 +1,61 @@
+/**
+ * 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 _TIME_H__S
+#define _TIME_H__S
+
+#include <time.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP errno_t __cdecl _ctime32_s(char *_Buf,size_t _SizeInBytes,const __time32_t *_Time);
+  _CRTIMP errno_t __cdecl _gmtime32_s(struct tm *_Tm,const __time32_t *_Time);
+  _CRTIMP errno_t __cdecl _localtime32_s(struct tm *_Tm,const __time32_t *_Time);
+  _CRTIMP errno_t __cdecl _strdate_s(char *_Buf,size_t _SizeInBytes);
+  _CRTIMP errno_t __cdecl _strtime_s(char *_Buf ,size_t _SizeInBytes);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _ctime64_s(char *_Buf,size_t _SizeInBytes,const __time64_t *_Time);
+  _CRTIMP errno_t __cdecl _gmtime64_s(struct tm *_Tm,const __time64_t *_Time);
+  _CRTIMP errno_t __cdecl _localtime64_s(struct tm *_Tm,const __time64_t *_Time);
+#endif
+
+#ifndef _WTIME_S_DEFINED
+#define _WTIME_S_DEFINED
+  _CRTIMP errno_t __cdecl _wasctime_s(wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm);
+  _CRTIMP errno_t __cdecl _wctime32_s(wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time);
+  _CRTIMP errno_t __cdecl _wstrdate_s(wchar_t *_Buf,size_t _SizeInWords);
+  _CRTIMP errno_t __cdecl _wstrtime_s(wchar_t *_Buf,size_t _SizeInWords);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _wctime64_s(wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time);
+#endif
+
+#if !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL)
+#define _INC_WTIME_S_INL
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime32_s(_Buffer,_SizeInWords,_Time); }
+#else
+__CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s(_Buffer,_SizeInWords,_Time); }
+#endif
+#endif
+#endif
+
+#ifndef RC_INVOKED
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE errno_t __cdecl localtime_s(struct tm *_Tm,const time_t *_Time) { return _localtime32_s(_Tm,_Time); }
+#else
+__CRT_INLINE errno_t __cdecl localtime_s(struct tm *_Tm,const time_t *_Time) { return _localtime64_s(_Tm,_Time); }
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
diff --git a/reactos/include/crt/sec_api/wchar_s.h b/reactos/include/crt/sec_api/wchar_s.h
new file mode 100644 (file)
index 0000000..94251aa
--- /dev/null
@@ -0,0 +1,128 @@
+/**
+ * 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 _INC_WCHAR_S
+#define _INC_WCHAR_S
+
+#include <wchar.h>
+
+#if defined(MINGW_HAS_SECURE_API)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WIO_S_DEFINED
+#define _WIO_S_DEFINED
+  _CRTIMP errno_t __cdecl _waccess_s(const wchar_t *_Filename,int _AccessMode);
+  _CRTIMP errno_t __cdecl _wmktemp_s(wchar_t *_TemplateName,size_t _SizeInWords);
+#endif
+
+#ifndef _WCONIO_S_DEFINED
+#define _WCONIO_S_DEFINED
+  _CRTIMP errno_t __cdecl _cgetws_s(wchar_t *_Buffer,size_t _SizeInWords,size_t *_SizeRead);
+  _CRTIMP int __cdecl _cwprintf_s(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_s(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_s(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+#endif
+
+#ifndef _WSTDIO_S_DEFINED
+#define _WSTDIO_S_DEFINED
+  _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
+  int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
+  int __cdecl wprintf_s(const wchar_t *_Format,...);
+  int __cdecl vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
+  int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
+  int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,...);
+  int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode);
+  _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
+  _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
+#endif
+
+#ifndef _WSTDLIB_S_DEFINED
+#define _WSTDLIB_S_DEFINED
+  _CRTIMP errno_t __cdecl _itow_s (int _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _ltow_s (long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _ultow_s (unsigned long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _wgetenv_s(size_t *_ReturnSize,wchar_t *_DstBuf,size_t _DstSizeInWords,const wchar_t *_VarName);
+  _CRTIMP errno_t __cdecl _wdupenv_s(wchar_t **_Buffer,size_t *_BufferSizeInWords,const wchar_t *_VarName);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _i64tow_s(__int64 _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+  _CRTIMP errno_t __cdecl _ui64tow_s(unsigned __int64 _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
+#endif
+#endif
+
+#ifndef _POSIX_
+#ifndef _WSTDLIBP_S_DEFINED
+#define _WSTDLIBP_S_DEFINED
+  _CRTIMP errno_t __cdecl _wmakepath_s(wchar_t *_PathResult,size_t _SizeInWords,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
+  _CRTIMP errno_t __cdecl _wputenv_s(const wchar_t *_Name,const wchar_t *_Value);
+  _CRTIMP errno_t __cdecl _wsearchenv_s(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath,size_t _SizeInWords);
+  _CRTIMP errno_t __cdecl _wsplitpath_s(const wchar_t *_FullPath,wchar_t *_Drive,size_t _DriveSizeInWords,wchar_t *_Dir,size_t _DirSizeInWords,wchar_t *_Filename,size_t _FilenameSizeInWords,wchar_t *_Ext,size_t _ExtSizeInWords);
+#endif
+#endif
+
+#ifndef _WSTRING_S_DEFINED
+#define _WSTRING_S_DEFINED
+  _CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context);
+  _CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum);
+  _CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg);
+  _CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount);
+  _CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val);
+  _CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
+  _CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale);
+  _CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size);
+  _CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale);
+#endif
+
+#ifndef _WTIME_S_DEFINED
+#define _WTIME_S_DEFINED
+  _CRTIMP errno_t __cdecl _wasctime_s(wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm);
+  _CRTIMP errno_t __cdecl _wctime32_s(wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time);
+  _CRTIMP errno_t __cdecl _wstrdate_s(wchar_t *_Buf,size_t _SizeInWords);
+  _CRTIMP errno_t __cdecl _wstrtime_s(wchar_t *_Buf,size_t _SizeInWords);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP errno_t __cdecl _wctime64_s(wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time);
+#endif
+
+#if !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL)
+#define _INC_WTIME_S_INL
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime32_s(_Buffer,_SizeInWords,_Time); }
+#else
+__CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s(_Buffer,_SizeInWords,_Time); }
+#endif
+#endif
+#endif
+
+  _CRTIMP errno_t __cdecl mbsrtowcs_s(size_t *_Retval,wchar_t *_Dst,size_t _SizeInWords,const char **_PSrc,size_t _N,mbstate_t *_State);
+  _CRTIMP errno_t __cdecl wcrtomb_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,wchar_t _Ch,mbstate_t *_State);
+  _CRTIMP errno_t __cdecl wcsrtombs_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,const wchar_t **_Src,size_t _Size,mbstate_t *_State);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif
index f83e1c0..8caa577 100644 (file)
-/*
- * setjmp.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Declarations supporting setjmp and longjump, a method for avoiding
- * the normal function call return sequence. (Bleah!)
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_SETJMP
+#define _INC_SETJMP
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#ifndef RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * The buffer used by setjmp to store the information used by longjmp
- * to perform it's evil goto-like work. The size of this buffer was
- * determined through experimentation; it's contents are a mystery.
- * NOTE: This was determined on an i386 (actually a Pentium). The
- *       contents could be different on an Alpha or something else.
- */
+#if (defined(_X86_) && !defined(__x86_64))
+
 #define _JBLEN 16
 #define _JBTYPE int
-typedef _JBTYPE jmp_buf[_JBLEN];
 
-/*
- * The function provided by CRTDLL which appears to do the actual work
- * of setjmp.
- */
-_CRTIMP int __cdecl __MINGW_NOTHROW _setjmp (jmp_buf);
+  typedef struct __JUMP_BUFFER {
+    unsigned long Ebp;
+    unsigned long Ebx;
+    unsigned long Edi;
+    unsigned long Esi;
+    unsigned long Esp;
+    unsigned long Eip;
+    unsigned long Registration;
+    unsigned long TryLevel;
+    unsigned long Cookie;
+    unsigned long UnwindFunc;
+    unsigned long UnwindData[6];
+  } _JUMP_BUFFER;
+#elif defined(__ia64__)
+  typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
+    __int64 LowPart;
+    __int64 HighPart;
+  } SETJMP_FLOAT128;
 
-#define        setjmp(x)       _setjmp(x)
+#define _JBLEN 33
+  typedef SETJMP_FLOAT128 _JBTYPE;
 
-/*
- * Return to the last setjmp call and act as if setjmp had returned
- * nVal (which had better be non-zero!).
- */
-_CRTIMP void __cdecl __MINGW_NOTHROW longjmp (jmp_buf, int) __MINGW_ATTRIB_NORETURN;
+  typedef struct __JUMP_BUFFER {
 
-#ifdef __cplusplus
-}
+    unsigned long iAReserved[6];
+
+    unsigned long Registration;
+    unsigned long TryLevel;
+    unsigned long Cookie;
+    unsigned long UnwindFunc;
+
+    unsigned long UnwindData[6];
+
+    SETJMP_FLOAT128 FltS0;
+    SETJMP_FLOAT128 FltS1;
+    SETJMP_FLOAT128 FltS2;
+    SETJMP_FLOAT128 FltS3;
+    SETJMP_FLOAT128 FltS4;
+    SETJMP_FLOAT128 FltS5;
+    SETJMP_FLOAT128 FltS6;
+    SETJMP_FLOAT128 FltS7;
+    SETJMP_FLOAT128 FltS8;
+    SETJMP_FLOAT128 FltS9;
+    SETJMP_FLOAT128 FltS10;
+    SETJMP_FLOAT128 FltS11;
+    SETJMP_FLOAT128 FltS12;
+    SETJMP_FLOAT128 FltS13;
+    SETJMP_FLOAT128 FltS14;
+    SETJMP_FLOAT128 FltS15;
+    SETJMP_FLOAT128 FltS16;
+    SETJMP_FLOAT128 FltS17;
+    SETJMP_FLOAT128 FltS18;
+    SETJMP_FLOAT128 FltS19;
+    __int64 FPSR;
+    __int64 StIIP;
+    __int64 BrS0;
+    __int64 BrS1;
+    __int64 BrS2;
+    __int64 BrS3;
+    __int64 BrS4;
+    __int64 IntS0;
+    __int64 IntS1;
+    __int64 IntS2;
+    __int64 IntS3;
+    __int64 RsBSP;
+    __int64 RsPFS;
+    __int64 ApUNAT;
+    __int64 ApLC;
+    __int64 IntSp;
+    __int64 IntNats;
+    __int64 Preds;
+
+  } _JUMP_BUFFER;
+#elif defined(__x86_64)
+  typedef _CRT_ALIGN(16) struct _SETJMP_FLOAT128 {
+    unsigned __int64 Part[2];
+  } SETJMP_FLOAT128;
+
+#define _JBLEN 16
+  typedef SETJMP_FLOAT128 _JBTYPE;
+
+  typedef struct _JUMP_BUFFER {
+    unsigned __int64 Frame;
+    unsigned __int64 Rbx;
+    unsigned __int64 Rsp;
+    unsigned __int64 Rbp;
+    unsigned __int64 Rsi;
+    unsigned __int64 Rdi;
+    unsigned __int64 R12;
+    unsigned __int64 R13;
+    unsigned __int64 R14;
+    unsigned __int64 R15;
+    unsigned __int64 Rip;
+    unsigned __int64 Spare;
+    SETJMP_FLOAT128 Xmm6;
+    SETJMP_FLOAT128 Xmm7;
+    SETJMP_FLOAT128 Xmm8;
+    SETJMP_FLOAT128 Xmm9;
+    SETJMP_FLOAT128 Xmm10;
+    SETJMP_FLOAT128 Xmm11;
+    SETJMP_FLOAT128 Xmm12;
+    SETJMP_FLOAT128 Xmm13;
+    SETJMP_FLOAT128 Xmm14;
+    SETJMP_FLOAT128 Xmm15;
+  } _JUMP_BUFFER;
+#endif
+#ifndef _JMP_BUF_DEFINED
+  typedef _JBTYPE jmp_buf[_JBLEN];
+#define _JMP_BUF_DEFINED
 #endif
 
-#endif /* Not RC_INVOKED */
+__CRT_INLINE void * __cdecl __attribute__ ((__nothrow__)) mingw_getsp(void)
+{
+#ifdef __GNUC__
+#ifdef __x86_64
+      __int64 *ret;
+      __asm__ __volatile__("leaq  16(%%rsp),%0\n"
+                            :"=r"(ret)
+                            :
+      );
+      return ret;
+#elif __i386__
+    __int32 *ret;
+      __asm__ __volatile__("lea  8(%esp),%0\n"
+                            :"=r"(ret)
+                            :
+      );
+      return ret;
+#endif
+#else
+#error Unsupported Compiler
+#endif
+}
 
-#endif /* Not _SETJMP_H_ */
+#ifdef USE_MINGW_SETJMP_TWO_ARGS
+#ifndef _INC_SETJMPEX
+#define setjmp(BUF) _setjmp((BUF),mingw_getsp())
+  int __cdecl __attribute__ ((__nothrow__)) _setjmp(jmp_buf _Buf,void *_Ctx);
+#else
+#undef setjmp
+#define setjmp(BUF) _setjmpex((BUF),mingw_getsp())
+#define setjmpex(BUF) _setjmpex((BUF),mingw_getsp())
+  int __cdecl __attribute__ ((__nothrow__)) _setjmpex(jmp_buf _Buf,void *_Ctx);
+#endif
+#else
+#ifndef _INC_SETJMPEX
+#define setjmp _setjmp
+#endif
+  int __cdecl __attribute__ ((__nothrow__)) setjmp(jmp_buf _Buf);
+#endif
+
+  __declspec(noreturn) __attribute__ ((__nothrow__)) void __cdecl ms_longjmp(jmp_buf _Buf,int _Value)/* throw(...)*/;
+  __declspec(noreturn) __attribute__ ((__nothrow__)) void __cdecl longjmp(jmp_buf _Buf,int _Value);
 
+#ifdef __cplusplus
+}
+#endif
 
+#pragma pack(pop)
+#endif
index 09a54ad..14b2772 100644 (file)
@@ -1,33 +1,27 @@
-/*
- * share.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Constants for file sharing functions.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_SHARE
+#define _INC_SHARE
 
-#ifndef        _SHARE_H_
-#define        _SHARE_H_
-
-/* All the headers include this file. */
-#include <_mingw.h>
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
 #define _SH_COMPAT     0x00    /* Compatibility */
-#define        _SH_DENYRW      0x10    /* Deny read/write */
-#define        _SH_DENYWR      0x20    /* Deny write */
-#define        _SH_DENYRD      0x30    /* Deny read */
-#define        _SH_DENYNO      0x40    /* Deny nothing */
-
-#ifndef _NO_OLDNAMES
+#define _SH_DENYRW 0x10
+#define _SH_DENYWR 0x20
+#define _SH_DENYRD 0x30
+#define _SH_DENYNO 0x40
+#define _SH_SECURE 0x80
 
-/* Non ANSI names */
+#ifndef        NO_OLDNAMES
 #define SH_DENYRW _SH_DENYRW
 #define SH_DENYWR _SH_DENYWR
 #define SH_DENYRD _SH_DENYRD
 #define SH_DENYNO _SH_DENYNO
+#endif
 
-#endif /* Not _NO_OLDNAMES */
-
-#endif /* Not _SHARE_H_ */
+#endif
index 18a75e3..6e9c797 100644 (file)
@@ -1,99 +1,61 @@
-/*
- * signal.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * A way to set handlers for exceptional conditions (also known as signals).
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_SIGNAL
+#define _INC_SIGNAL
 
-#ifndef        _SIGNAL_H_
-#define        _SIGNAL_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * The actual signal values. Using other values with signal
- * produces a SIG_ERR return value.
- *
- * NOTE: SIGINT is produced when the user presses Ctrl-C.
- *       SIGILL has not been tested.
- *       SIGFPE doesn't seem to work?
- *       SIGSEGV does not catch writing to a NULL pointer (that shuts down
- *               your app; can you say "segmentation violation core dump"?).
- *       SIGTERM comes from what kind of termination request exactly?
- *       SIGBREAK is indeed produced by pressing Ctrl-Break.
- *       SIGABRT is produced by calling abort.
- * TODO: The above results may be related to not installing an appropriate
- *       structured exception handling frame. Results may be better if I ever
- *       manage to get the SEH stuff down.
- */
-#define        SIGINT          2       /* Interactive attention */
-#define        SIGILL          4       /* Illegal instruction */
-#define        SIGFPE          8       /* Floating point error */
-#define        SIGSEGV         11      /* Segmentation violation */
-#define        SIGTERM         15      /* Termination request */
-#define SIGBREAK       21      /* Control-break */
-#define        SIGABRT         22      /* Abnormal termination (abort) */
-
-#define NSIG 23     /* maximum signal number + 1 */
-
-#ifndef        RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 #ifndef _SIG_ATOMIC_T_DEFINED
-typedef int sig_atomic_t;
 #define _SIG_ATOMIC_T_DEFINED
+  typedef int sig_atomic_t;
 #endif
 
-/*
- * The prototypes (below) are the easy part. The hard part is figuring
- * out what signals are available and what numbers they are assigned
- * along with appropriate values of SIG_DFL and SIG_IGN.
- */
-
-/*
- * A pointer to a signal handler function. A signal handler takes a
- * single int, which is the signal it handles.
- */
-typedef        void (*__p_sig_fn_t)(int);
-
-/*
- * These are special values of signal handler pointers which are
- * used to send a signal to the default handler (SIG_DFL), ignore
- * the signal (SIG_IGN), indicate an error return (SIG_ERR),
- * get an error (SIG_SGE), or acknowledge (SIG_ACK).
- */
-#define        SIG_DFL ((__p_sig_fn_t) 0)
-#define        SIG_IGN ((__p_sig_fn_t) 1)
-#define        SIG_ERR ((__p_sig_fn_t) -1)
-#define SIG_SGE ((__p_sig_fn_t) 3)
-#define SIG_ACK ((__p_sig_fn_t) 4)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Call signal to set the signal handler for signal sig to the
- * function pointed to by handler. Returns a pointer to the
- * previous handler, or SIG_ERR if an error occurs. Initially
- * unhandled signals defined above will return SIG_DFL.
- */
-_CRTIMP __p_sig_fn_t __cdecl __MINGW_NOTHROW   signal(int, __p_sig_fn_t);
-
-/*
- * Raise the signal indicated by sig. Returns non-zero on success.
- */
-_CRTIMP int __cdecl __MINGW_NOTHROW    raise (int);
-
-#ifdef __cplusplus
+#define NSIG 23
+
+#define        SIGHUP  1       /* hangup */
+#define SIGINT 2
+#define        SIGQUIT 3       /* quit */
+#define SIGILL 4
+#define        SIGTRAP 5       /* trace trap (not reset when caught) */
+#define        SIGIOT  6       /* IOT instruction */
+#define        SIGABRT 6       /* used by abort, replace SIGIOT in the future */
+#define        SIGEMT  7       /* EMT instruction */
+#define SIGFPE 8
+#define        SIGKILL 9       /* kill (cannot be caught or ignored) */
+#define        SIGBUS  10      /* bus error */
+#define SIGSEGV 11
+#define        SIGSYS  12      /* bad argument to system call */
+#define        SIGPIPE 13      /* write on a pipe with no one to read it */
+#define        SIGALRM 14      /* alarm clock */
+#define SIGTERM 15
+#define SIGBREAK 21
+#define SIGABRT2 22
+
+#define SIGABRT_COMPAT 6
+
+  typedef      void (*__p_sig_fn_t)(int);
+
+#define SIG_DFL (__p_sig_fn_t)0
+#define SIG_IGN (__p_sig_fn_t)1
+#define SIG_GET (__p_sig_fn_t)2
+#define SIG_SGE (__p_sig_fn_t)3
+#define SIG_ACK (__p_sig_fn_t)4
+#define SIG_ERR (__p_sig_fn_t)-1
+
+  extern void **__cdecl __pxcptinfoptrs(void);
+#define _pxcptinfoptrs (*__pxcptinfoptrs())
+
+  __p_sig_fn_t __cdecl signal(int _SigNum,__p_sig_fn_t _Func);
+  int __cdecl raise(int _SigNum);
+
+#ifdef __cplusplus
 }
 #endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _SIGNAL_H_ */
-
-
+#endif
index 57db989..14a8bfd 100644 (file)
@@ -1,3 +1,8 @@
+/**
+ * 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.
+ */
 /* ISO C9x  7.18  Integer types <stdint.h>
  * Based on ISO/IEC SC22/WG14 9899 Committee draft (SC22 N2794)
  *
 
 #ifndef _STDINT_H
 #define _STDINT_H
+
+#include <_mingw.h>
+
 #define __need_wint_t
 #define __need_wchar_t
-#include <stddef.h>
+#include "stddef.h"
 
 /* 7.18.1.1  Exact-width integer types */
 typedef signed char int8_t;
@@ -43,9 +51,9 @@ typedef unsigned   uint_least32_t;
 typedef long long  int_least64_t;
 typedef unsigned long long   uint_least64_t;
 
-/*  7.18.1.3  Fastest minimum-width integer types 
+/*  7.18.1.3  Fastest minimum-width integer types
  *  Not actually guaranteed to be fastest for all purposes
- *  Here we use the exact-width types for 8 and 16-bit ints. 
+ *  Here we use the exact-width types for 8 and 16-bit ints.
  */
 typedef char int_fast8_t;
 typedef unsigned char uint_fast8_t;
@@ -56,35 +64,15 @@ typedef unsigned  int  uint_fast32_t;
 typedef long long  int_fast64_t;
 typedef unsigned long long   uint_fast64_t;
 
-/* 7.18.1.4  Integer types capable of holding object pointers */
-
-#ifndef _INTPTR_T_DEFINED
-#define _INTPTR_T_DEFINED
-#ifdef _WIN64
-  typedef __int64 intptr_t;
-#else
-  typedef int intptr_t;
-#endif
-#endif
-
-#ifndef _UINTPTR_T_DEFINED
-#define _UINTPTR_T_DEFINED
-#ifdef _WIN64
-  typedef unsigned __int64 uintptr_t;
-#else
-  typedef unsigned int uintptr_t;
-#endif
-#endif
-
 /* 7.18.1.5  Greatest-width integer types */
 typedef long long  intmax_t;
-typedef unsigned long long uintmax_t;
+typedef unsigned long long   uintmax_t;
 
 /* 7.18.2  Limits of specified-width integer types */
 #if !defined ( __cplusplus) || defined (__STDC_LIMIT_MACROS)
 
 /* 7.18.2.1  Limits of exact-width integer types */
-#define INT8_MIN (-128) 
+#define INT8_MIN (-128)
 #define INT16_MIN (-32768)
 #define INT32_MIN (-2147483647 - 1)
 #define INT64_MIN  (-9223372036854775807LL - 1)
@@ -149,24 +137,37 @@ typedef unsigned long long uintmax_t;
 #define UINTMAX_MAX UINT64_MAX
 
 /* 7.18.3  Limits of other integer types */
-#define PTRDIFF_MIN INTPTR_MIN
-#define PTRDIFF_MAX INTPTR_MAX
+#ifdef _WIN64
+#define PTRDIFF_MIN INT64_MIN
+#define PTRDIFF_MAX INT64_MAX
+#else
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#endif
 
-#define SIG_ATOMIC_MIN INTPTR_MIN
-#define SIG_ATOMIC_MAX INTPTR_MAX
+#define SIG_ATOMIC_MIN INT32_MIN
+#define SIG_ATOMIC_MAX INT32_MAX
 
-#define SIZE_MAX UINTPTR_MAX
+#ifndef SIZE_MAX
+#ifdef _WIN64
+#define SIZE_MAX UINT64_MAX
+#else
+#define SIZE_MAX UINT32_MAX
+#endif
+#endif
 
-#ifndef WCHAR_MIN  /* also in wchar.h */ 
+#ifndef WCHAR_MIN  /* also in wchar.h */
 #define WCHAR_MIN 0
-#define WCHAR_MAX 0xffff /* UINT16_MAX */
+#endif
+#ifndef WCHAR_MAX
+#define WCHAR_MAX ((wchar_t)-1) /* UINT16_MAX */
 #endif
 
 /*
  * wint_t is unsigned short for compatibility with MS runtime
  */
 #define WINT_MIN 0
-#define WINT_MAX 0xffff /* UINT16_MAX */
+#define WINT_MAX ((wint_t)-1) /* UINT16_MAX */
 
 #endif /* !defined ( __cplusplus) || defined __STDC_LIMIT_MACROS */
 
@@ -185,21 +186,25 @@ typedef unsigned long long uintmax_t;
        an integer constant with width less than that of type int.
        TC1 changed this to require just an integer constant
        *expression* with *promoted* type."
-*/
 
-#define INT8_C(val) ((int8_t) + (val))
-#define UINT8_C(val) ((uint8_t) + (val##U))
-#define INT16_C(val) ((int16_t) + (val))
-#define UINT16_C(val) ((uint16_t) + (val##U))
+       The trick used here is from Clive D W Feather.
+*/
 
-#define INT32_C(val) val##L
-#define UINT32_C(val) val##UL
+#define INT8_C(val) (INT_LEAST8_MAX-INT_LEAST8_MAX+(val))
+#define INT16_C(val) (INT_LEAST16_MAX-INT_LEAST16_MAX+(val))
+#define INT32_C(val) (INT_LEAST32_MAX-INT_LEAST32_MAX+(val))
+/*  The 'trick' doesn't work in C89 for long long because, without
+    suffix, (val) will be evaluated as int, not intmax_t */
 #define INT64_C(val) val##LL
+
+#define UINT8_C(val) (UINT_LEAST8_MAX-UINT_LEAST8_MAX+(val))
+#define UINT16_C(val) (UINT_LEAST16_MAX-UINT_LEAST16_MAX+(val))
+#define UINT32_C(val) (UINT_LEAST32_MAX-UINT_LEAST32_MAX+(val))
 #define UINT64_C(val) val##ULL
 
 /* 7.18.4.2  Macros for greatest-width integer constants */
-#define INTMAX_C(val)  INT64_C(val)
-#define UINTMAX_C(val) UINT64_C(val)
+#define INTMAX_C(val) val##LL
+#define UINTMAX_C(val) val##ULL
 
 #endif  /* !defined ( __cplusplus) || defined __STDC_CONSTANT_MACROS */
 
index b32edaf..12cbb68 100644 (file)
-/*
- * stdio.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Definitions of types and prototypes of functions for standard input and
- * output.
- *
- * NOTE: The file manipulation functions provided by Microsoft seem to
- * work with either slash (/) or backslash (\) as the directory separator.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_STDIO
+#define _INC_STDIO
 
-#ifndef _STDIO_H_
-#define        _STDIO_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#ifndef RC_INVOKED
-#define __need_size_t
-#define __need_NULL
-#define __need_wchar_t
-#define        __need_wint_t
-#include <stddef.h>
-#define __need___va_list
-#include <stdarg.h>
-#endif /* Not RC_INVOKED */
-
-
-/* Flags for the iobuf structure  */
-#define _IOREAD   0x0001 /* currently reading */
-#define _IOWRT    0x0002 /* currently writing */
-#define _IOMYBUF  0x0008 /* stdio malloc()'d buffer */
-#define _IOEOF    0x0010 /* EOF reached on read */
-#define _IOERR    0x0020 /* I/O error from system */
-#define _IOSTRG   0x0040 /* Strange or no file descriptor */
-#define _IORW     0x0080 /* opened as "r+w" */
-#ifdef _POSIX_SOURCE
-# define _IOAPPEND 0x0200
-#endif
-
-
-/*
- * The three standard file pointers provided by the run time library.
- * NOTE: These will go to the bit-bucket silently in GUI applications!
- */
-#define        STDIN_FILENO    0
-#define        STDOUT_FILENO   1
-#define        STDERR_FILENO   2
-
-/* Returned by various functions on end of file condition or error. */
-#define        EOF     (-1)
-
-/*
- * The maximum length of a file name. You should use GetVolumeInformation
- * instead of this constant. But hey, this works.
- * Also defined in io.h.
- */
-#ifndef FILENAME_MAX
-#define        FILENAME_MAX    (260)
-#endif
+#pragma pack(push,_CRT_PACKING)
 
-/*
- * The maximum number of files that may be open at once. I have set this to
- * a conservative number. The actual value may be higher.
- */
-#define FOPEN_MAX      (20)
-
-/* After creating this many names, tmpnam and tmpfile return NULL */
-#define TMP_MAX        32767
-/*
- * Tmpnam, tmpfile and, sometimes, _tempnam try to create
- * temp files in the root directory of the current drive
- * (not in pwd, as suggested by some older MS doc's).
- * Redefining these macros does not effect the CRT functions.
- */
-#define _P_tmpdir   "\\"
-#ifndef __STRICT_ANSI__
-#define P_tmpdir _P_tmpdir
+#ifdef __cplusplus
+extern "C" {
 #endif
-#define _wP_tmpdir  L"\\"
-
-/*
- * The maximum size of name (including NUL) that will be put in the user
- * supplied buffer caName for tmpnam.
- * Inferred from the size of the static buffer returned by tmpnam
- * when passed a NULL argument. May actually be smaller.
- */
-#define L_tmpnam (16)
-
-#define _IOFBF    0x0000  /* full buffered */
-#define _IOLBF    0x0040  /* line buffered */
-#define _IONBF    0x0004  /* not buffered */
-
-/*
- * The buffer size as used by setbuf such that it is equivalent to
- * (void) setvbuf(fileSetBuffer, caBuffer, _IOFBF, BUFSIZ).
- */
-#define        BUFSIZ  512
 
-/* Constants for nOrigin indicating the position relative to which fseek
- * sets the file position.  Defined unconditionally since ISO and POSIX
- * say they are defined here.  */
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
+#define BUFSIZ 512
+#define _NFILE _NSTREAM_
+#define _NSTREAM_ 512
+#define _IOB_ENTRIES 20
+#define EOF (-1)
 
-#ifndef        RC_INVOKED
+#ifndef _FILE_DEFINED
+  struct _iobuf {
+    char *_ptr;
+    int _cnt;
+    char *_base;
+    int _flag;
+    int _file;
+    int _charbuf;
+    int _bufsiz;
+    char *_tmpfname;
+  };
+  typedef struct _iobuf FILE;
+#define _FILE_DEFINED
+#endif
 
-#ifndef __VALIST
-#ifdef __GNUC__
-#define __VALIST __gnuc_va_list
+#ifdef _POSIX_
+#define _P_tmpdir "/"
+#define _wP_tmpdir L"/"
 #else
-#define __VALIST char*
+#define _P_tmpdir "\\"
+#define _wP_tmpdir L"\\"
 #endif
-#endif /* defined __VALIST  */
-
-/*
- * The structure underlying the FILE type.
- *
- * Some believe that nobody in their right mind should make use of the
- * internals of this structure. Provided by Pedro A. Aranda Gutiirrez
- * <paag@tid.es>.
- */
-#ifndef _FILE_DEFINED
-#define        _FILE_DEFINED
-typedef struct _iobuf
-{
-       char*   _ptr;
-       int     _cnt;
-       char*   _base;
-       int     _flag;
-       int     _file;
-       int     _charbuf;
-       int     _bufsiz;
-       char*   _tmpfname;
-} FILE;
-#endif /* Not _FILE_DEFINED */
-
-
-/*
- * The standard file handles
- */
-#ifndef __DECLSPEC_SUPPORTED
-
-extern FILE (*_imp___iob)[];   /* A pointer to an array of FILE */
 
-#define _iob   (*_imp___iob)   /* An array of FILE */
+#define L_tmpnam (sizeof(_P_tmpdir) + 12)
 
-#else /* __DECLSPEC_SUPPORTED */
+#ifdef _POSIX_
+#define L_ctermid 9
+#define L_cuserid 32
+#endif
 
-__MINGW_IMPORT FILE _iob[];    /* An array of FILE imported from DLL. */
+#define SEEK_CUR 1
+#define SEEK_END 2
+#define SEEK_SET 0
 
-#endif /* __DECLSPEC_SUPPORTED */
+#define        STDIN_FILENO    0
+#define        STDOUT_FILENO   1
+#define        STDERR_FILENO   2
 
-#define stdin  (&_iob[STDIN_FILENO])
-#define stdout (&_iob[STDOUT_FILENO])
-#define stderr (&_iob[STDERR_FILENO])
+#define FILENAME_MAX 260
+#define FOPEN_MAX 20
+#define _SYS_OPEN 20
+#define TMP_MAX 32767
 
+#ifndef NULL
 #ifdef __cplusplus
-extern "C" {
+#define NULL 0
+#else
+#define NULL ((void *)0)
 #endif
-
-/*
- * File Operations
- */
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW fopen (const char*, const char*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  freopen (const char*, const char*, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fflush (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fclose (FILE*);
-/* MS puts remove & rename (but not wide versions) in io.h  also */
-_CRTIMP int __cdecl __MINGW_NOTHROW    remove (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    rename (const char*, const char*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  tmpfile (void);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  tmpnam (char*);
-
-#ifndef __STRICT_ANSI__
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _tempnam (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _rmtmp(void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _unlink (const char*);
-
-#ifndef        NO_OLDNAMES
-_CRTIMP char* __cdecl __MINGW_NOTHROW  tempnam (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    rmtmp(void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    unlink (const char*);
 #endif
-#endif /* __STRICT_ANSI__ */
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    setvbuf (FILE*, char*, int, size_t);
-
-_CRTIMP void __cdecl __MINGW_NOTHROW   setbuf (FILE*, char*);
-
-/*
- * Formatted Output
- */
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    fprintf (FILE*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    printf (const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    sprintf (char*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _snprintf (char*, size_t, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vfprintf (FILE*, const char*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vprintf (const char*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vsprintf (char*, const char*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _vsnprintf (char*, size_t, const char*, __VALIST);
-
-#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
-int __cdecl __MINGW_NOTHROW snprintf(char *, size_t, const char *, ...);
-int __cdecl __MINGW_NOTHROW vsnprintf (char *, size_t, const char *, __VALIST);
-
-int __cdecl __MINGW_NOTHROW vscanf (const char * __restrict__, __VALIST);
-int __cdecl __MINGW_NOTHROW vfscanf (FILE * __restrict__, const char * __restrict__,
-                    __VALIST);
-int __cdecl __MINGW_NOTHROW vsscanf (const char * __restrict__,
-                    const char * __restrict__, __VALIST);
+#ifndef _OFF_T_DEFINED
+#define _OFF_T_DEFINED
+#ifndef _OFF_T_
+#define _OFF_T_
+  typedef long _off_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long off_t;
+#endif
+#endif
 #endif
 
-/*
- * Formatted Input
- */
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    fscanf (FILE*, const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    scanf (const char*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    sscanf (const char*, const char*, ...);
-/*
- * Character Input and Output Functions
- */
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    fgetc (FILE*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  fgets (char*, int, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fputc (int, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fputs (const char*, FILE*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  gets (char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    puts (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    ungetc (int, FILE*);
-
-/* Traditionally, getc and putc are defined as macros. but the
-   standard doesn't say that they must be macros.
-   We use inline functions here to allow the fast versions
-   to be used in C++ with namespace qualification, eg., ::getc.
-
-   _filbuf and _flsbuf  are not thread-safe. */
-_CRTIMP int __cdecl __MINGW_NOTHROW    _filbuf (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _flsbuf (int, FILE*);
-
-#if !defined _MT
-
-__CRT_INLINE int __cdecl __MINGW_NOTHROW getc (FILE* __F)
-{
-  return (--__F->_cnt >= 0)
-    ?  (int) (unsigned char) *__F->_ptr++
-    : _filbuf (__F);
-}
+#ifndef _OFF64_T_DEFINED
+#define _OFF64_T_DEFINED
+  typedef long long _off64_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long long off64_t;
+#endif
+#endif
 
-__CRT_INLINE int __cdecl __MINGW_NOTHROW putc (int __c, FILE* __F)
-{
-  return (--__F->_cnt >= 0)
-    ?  (int) (unsigned char) (*__F->_ptr++ = (char)__c)
-    :  _flsbuf (__c, __F);
-}
+#ifndef _STDIO_DEFINED
+#ifdef _WIN64
+  _CRTIMP FILE *__cdecl __iob_func(void);
+#else
+#ifdef _MSVCRT_
+extern FILE _iob[];    /* A pointer to an array of FILE */
+#define __iob_func()   (_iob)
+#else
+extern FILE (*_imp___iob)[];   /* A pointer to an array of FILE */
+#define __iob_func()   (*_imp___iob)
+#define _iob __iob_func()
+#endif
+#endif
+#endif
 
-__CRT_INLINE int __cdecl __MINGW_NOTHROW getchar (void)
-{
-  return (--stdin->_cnt >= 0)
-    ?  (int) (unsigned char) *stdin->_ptr++
-    : _filbuf (stdin);
-}
+#ifndef _FPOS_T_DEFINED
+#define _FPOS_T_DEFINED
+#undef _FPOSOFF
 
-__CRT_INLINE int __cdecl __MINGW_NOTHROW putchar(int __c)
-{
-  return (--stdout->_cnt >= 0)
-    ?  (int) (unsigned char) (*stdout->_ptr++ = (char)__c)
-    :  _flsbuf (__c, stdout);}
+#if (!defined(NO_OLDNAMES) || defined(__GNUC__)) && _INTEGRAL_MAX_BITS >= 64
+  typedef __int64 fpos_t;
+#define _FPOSOFF(fp) ((long)(fp))
+#else
+  typedef long long fpos_t;
+#define _FPOSOFF(fp) ((long)(fp))
+#endif
 
-#else  /* Use library functions.  */
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    getc (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    putc (int, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    getchar (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    putchar (int);
+#ifndef _STDSTREAM_DEFINED
+#define _STDSTREAM_DEFINED
 
+#define stdin (&__iob_func()[0])
+#define stdout (&__iob_func()[1])
+#define stderr (&__iob_func()[2])
 #endif
 
-/*
- * Direct Input and Output Functions
- */
+#define _IOREAD 0x0001
+#define _IOWRT 0x0002
 
-_CRTIMP size_t __cdecl __MINGW_NOTHROW fread (void*, size_t, size_t, FILE*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW fwrite (const void*, size_t, size_t, FILE*);
+#define _IOFBF 0x0000
+#define _IOLBF 0x0040
+#define _IONBF 0x0004
 
-/*
- * File Positioning Functions
- */
+#define _IOMYBUF 0x0008
+#define _IOEOF 0x0010
+#define _IOERR 0x0020
+#define _IOSTRG 0x0040
+#define _IORW 0x0080
+#ifdef _POSIX_
+#define _IOAPPEND 0x0200
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    fseek (FILE*, long, int);
-_CRTIMP long __cdecl __MINGW_NOTHROW   ftell (FILE*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   rewind (FILE*);
+#define _TWO_DIGIT_EXPONENT 0x1
 
-#if __MSVCRT_VERSION__ >= 0x800
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fseek_nolock (FILE*, long, int);
-_CRTIMP long __cdecl __MINGW_NOTHROW   _ftell_nolock (FILE*);
+#ifndef _STDIO_DEFINED
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fseeki64 (FILE*, __int64, int);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW        _ftelli64 (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fseeki64_nolock (FILE*, __int64, int);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW        _ftelli64_nolock (FILE*);
+  _CRTIMP int __cdecl _filbuf(FILE *_File);
+  _CRTIMP int __cdecl _flsbuf(int _Ch,FILE *_File);
+#ifdef _POSIX_
+  _CRTIMP FILE *__cdecl _fsopen(const char *_Filename,const char *_Mode);
+#else
+  _CRTIMP FILE *__cdecl _fsopen(const char *_Filename,const char *_Mode,int _ShFlag);
 #endif
-
-#ifdef __USE_MINGW_FSEEK  /* These are in libmingwex.a */
-/*
- * Workaround for limitations on win9x where a file contents are
- * not zero'd out if you seek past the end and then write.
- */
-
-int __cdecl __MINGW_NOTHROW __mingw_fseek (FILE *, long, int);
-size_t __cdecl __MINGW_NOTHROW __mingw_fwrite (const void*, size_t, size_t, FILE*);
-#define fseek(fp, offset, whence)  __mingw_fseek(fp, offset, whence)
-#define fwrite(buffer, size, count, fp)  __mingw_fwrite(buffer, size, count, fp)
-#endif /* __USE_MINGW_FSEEK */
-
-/*
- * An opaque data type used for storing file positions... The contents of
- * this type are unknown, but we (the compiler) need to know the size
- * because the programmer using fgetpos and fsetpos will be setting aside
- * storage for fpos_t structres. Actually I tested using a byte array and
- * it is fairly evident that the fpos_t type is a long (in CRTDLL.DLL).
- * Perhaps an unsigned long? TODO? It's definitely a 64-bit number in
- * MSVCRT however, and for now `long long' will do.
- */
-#ifdef __MSVCRT__
-typedef long long fpos_t;
+  void __cdecl clearerr(FILE *_File);
+  int __cdecl fclose(FILE *_File);
+  _CRTIMP int __cdecl _fcloseall(void);
+#ifdef _POSIX_
+  FILE *__cdecl fdopen(int _FileHandle,const char *_Mode);
 #else
-typedef long   fpos_t;
+  _CRTIMP FILE *__cdecl _fdopen(int _FileHandle,const char *_Mode);
 #endif
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    fgetpos (FILE*, fpos_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fsetpos (FILE*, const fpos_t*);
-
-/*
- * Error Functions
- */
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    feof (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    ferror (FILE*);
-
-#ifdef __cplusplus
-inline int __cdecl __MINGW_NOTHROW feof (FILE* __F)
-  { return __F->_flag & _IOEOF; }
-inline int __cdecl __MINGW_NOTHROW ferror (FILE* __F)
-  { return __F->_flag & _IOERR; }
+  int __cdecl feof(FILE *_File);
+  int __cdecl ferror(FILE *_File);
+  int __cdecl fflush(FILE *_File);
+  int __cdecl fgetc(FILE *_File);
+  _CRTIMP int __cdecl _fgetchar(void);
+  int __cdecl fgetpos(FILE *_File ,fpos_t *_Pos);
+  char *__cdecl fgets(char *_Buf,int _MaxCount,FILE *_File);
+#ifdef _POSIX_
+  int __cdecl fileno(FILE *_File);
 #else
-#define feof(__F)     ((__F)->_flag & _IOEOF)
-#define ferror(__F)   ((__F)->_flag & _IOERR)
+  _CRTIMP int __cdecl _fileno(FILE *_File);
+#endif
+  _CRTIMP char *__cdecl _tempnam(const char *_DirName,const char *_FilePrefix);
+  _CRTIMP int __cdecl _flushall(void);
+  FILE *__cdecl fopen(const char *_Filename,const char *_Mode);
+  FILE *fopen64(const char *filename,const char *mode);
+  int __cdecl fprintf(FILE *_File,const char *_Format,...);
+  int __cdecl fputc(int _Ch,FILE *_File);
+  _CRTIMP int __cdecl _fputchar(int _Ch);
+  int __cdecl fputs(const char *_Str,FILE *_File);
+  size_t __cdecl fread(void *_DstBuf,size_t _ElementSize,size_t _Count,FILE *_File);
+  FILE *__cdecl freopen(const char *_Filename,const char *_Mode,FILE *_File);
+  int __cdecl fscanf(FILE *_File,const char *_Format,...);
+  int __cdecl fsetpos(FILE *_File,const fpos_t *_Pos);
+  int __cdecl fseek(FILE *_File,long _Offset,int _Origin);
+   int fseeko64(FILE* stream, _off64_t offset, int whence);
+  long __cdecl ftell(FILE *_File);
+  _off64_t ftello64(FILE * stream);
+  int __cdecl _fseeki64(FILE *_File,__int64 _Offset,int _Origin);
+  __int64 __cdecl _ftelli64(FILE *_File);
+  size_t __cdecl fwrite(const void *_Str,size_t _Size,size_t _Count,FILE *_File);
+  int __cdecl getc(FILE *_File);
+  int __cdecl getchar(void);
+  _CRTIMP int __cdecl _getmaxstdio(void);
+  char *__cdecl gets(char *_Buffer);
+  int __cdecl _getw(FILE *_File);
+#ifndef _CRT_PERROR_DEFINED
+#define _CRT_PERROR_DEFINED
+  void __cdecl perror(const char *_ErrMsg);
+#endif
+  _CRTIMP int __cdecl _pclose(FILE *_File);
+  _CRTIMP FILE *__cdecl _popen(const char *_Command,const char *_Mode);
+#if !defined(NO_OLDNAMES) && !defined(popen)
+#define popen  _popen
+#define pclose _pclose
+#endif
+  int __cdecl printf(const char *_Format,...);
+  int __cdecl putc(int _Ch,FILE *_File);
+  int __cdecl putchar(int _Ch);
+  int __cdecl puts(const char *_Str);
+  _CRTIMP int __cdecl _putw(int _Word,FILE *_File);
+#ifndef _CRT_DIRECTORY_DEFINED
+#define _CRT_DIRECTORY_DEFINED
+  int __cdecl remove(const char *_Filename);
+  int __cdecl rename(const char *_OldFilename,const char *_NewFilename);
+  _CRTIMP int __cdecl _unlink(const char *_Filename);
+#ifndef        NO_OLDNAMES
+  int __cdecl unlink(const char *_Filename);
+#endif
+#endif
+  void __cdecl rewind(FILE *_File);
+  _CRTIMP int __cdecl _rmtmp(void);
+  int __cdecl scanf(const char *_Format,...);
+  void __cdecl setbuf(FILE *_File,char *_Buffer);
+  _CRTIMP int __cdecl _setmaxstdio(int _Max);
+  _CRTIMP unsigned int __cdecl _set_output_format(unsigned int _Format);
+  _CRTIMP unsigned int __cdecl _get_output_format(void);
+  int __cdecl setvbuf(FILE *_File,char *_Buf,int _Mode,size_t _Size);
+  _CRTIMP int __cdecl _scprintf(const char *_Format,...);
+  int __cdecl sscanf(const char *_Src,const char *_Format,...);
+  _CRTIMP int __cdecl _snscanf(const char *_Src,size_t _MaxCount,const char *_Format,...);
+  FILE *__cdecl tmpfile(void);
+  char *__cdecl tmpnam(char *_Buffer);
+  int __cdecl ungetc(int _Ch,FILE *_File);
+  int __cdecl vfprintf(FILE *_File,const char *_Format,va_list _ArgList);
+  int __cdecl vprintf(const char *_Format,va_list _ArgList);
+  /* Make sure macros are not defined.  */
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma push_macro("vsnprintf")
+#pragma push_macro("snprintf")
+  #undef vsnprintf
+  #undef snprintf
+#endif
+  extern
+#ifdef gnu_printf
+  __attribute__((format(gnu_printf, 3, 0))) __attribute__((nonnull (3)))
+#endif
+  int __mingw_vsnprintf(char *_DstBuf,size_t _MaxCount,const char *_Format,va_list _ArgList);
+  extern
+#ifdef gnu_printf
+  __attribute__((format(gnu_printf, 3, 4))) __attribute__((nonnull (3)))
+#endif
+  int __mingw_snprintf(char* s, size_t n, const char*  format, ...);
+  int __cdecl vsnprintf(char *_DstBuf,size_t _MaxCount,const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _snprintf(char *_Dest,size_t _Count,const char *_Format,...);
+  _CRTIMP int __cdecl _vsnprintf(char *_Dest,size_t _Count,const char *_Format,va_list _Args);
+  int __cdecl sprintf(char *_Dest,const char *_Format,...);
+  int __cdecl vsprintf(char *_Dest,const char *_Format,va_list _Args);
+#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+  int __cdecl snprintf(char* s, size_t n, const char*  format, ...);
+  __CRT_INLINE int __cdecl vsnprintf (char* s, size_t n, const char* format,va_list arg) {
+    return _vsnprintf ( s, n, format, arg);
+  }
+  int __cdecl vscanf(const char * Format, va_list argp);
+  int __cdecl vfscanf (FILE * fp, const char * Format,va_list argp);
+  int __cdecl vsscanf (const char * _Str,const char * Format,va_list argp);
+#endif
+/* Restore may prior defined macros snprintf/vsnprintf.  */
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma pop_macro("snprintf")
+#pragma pop_macro("vsnprintf")
+#endif
+/* Check if vsnprintf and snprintf are defaulting to gnu-style.  */
+#if defined(USE_MINGW_GNU_SNPRINTF) && USE_MINGW_GNU_SNPRINTF
+  #ifndef vsnprint
+    #define vsnprintf __mingw_vsnprintf
+  #endif
+  #ifndef snprintf
+    #define snprintf __mingw_snprintf
+  #endif
+#else
+  #ifndef vsnprint
+    #define vsnprintf _vsnprintf
+  #endif
+  #ifndef snprintf
+    #define snprintf _snprintf
+  #endif
 #endif
 
-_CRTIMP void __cdecl __MINGW_NOTHROW   clearerr (FILE*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   perror (const char*);
-
+  _CRTIMP int __cdecl _vscprintf(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _set_printf_count_output(int _Value);
+  _CRTIMP int __cdecl _get_printf_count_output();
 
-#ifndef __STRICT_ANSI__
-/*
- * Pipes
- */
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _popen (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _pclose (FILE*);
+#ifndef _WSTDIO_DEFINED
 
-#ifndef NO_OLDNAMES
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  popen (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    pclose (FILE*);
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
 #endif
 
-/*
- * Other Non ANSI functions
- */
-_CRTIMP int __cdecl __MINGW_NOTHROW    _flushall (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fgetchar (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fputchar (int);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _fdopen (int, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fileno (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fcloseall(void);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _fsopen(const char*, const char*, int);
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW    _getmaxstdio(void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _setmaxstdio(int);
-#endif
-
-#if __MSVCRT_VERSION__ >= 0x800
-_CRTIMP int __cdecl __MINGW_NOTHROW _set_printf_count_output(int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _get_printf_count_output(void);
-#endif
-
-#ifndef _NO_OLDNAMES
-_CRTIMP int __cdecl __MINGW_NOTHROW    fgetchar (void);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fputchar (int);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  fdopen (int, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fileno (FILE*);
-#endif /* Not _NO_OLDNAMES */
-
-#define _fileno(__F) ((__F)->_file)
-#ifndef _NO_OLDNAMES
-#define fileno(__F) ((__F)->_file)
-#endif
-
-#if defined (__MSVCRT__) && !defined (__NO_MINGW_LFS)
-#include <sys/types.h>
-__CRT_INLINE FILE* __cdecl __MINGW_NOTHROW fopen64 (const char* filename, const char* mode)
-{
-  return fopen (filename, mode);
-}
-
-int __cdecl __MINGW_NOTHROW fseeko64 (FILE*, off64_t, int);
-
-#ifdef __USE_MINGW_FSEEK
-int __cdecl __MINGW_NOTHROW __mingw_fseeko64 (FILE *, off64_t, int);
-#define fseeko64(fp, offset, whence)  __mingw_fseeko64(fp, offset, whence)
+#ifdef _POSIX_
+  _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode);
+#else
+  _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode,int _ShFlag);
+#endif
+  wint_t __cdecl fgetwc(FILE *_File);
+  _CRTIMP wint_t __cdecl _fgetwchar(void);
+  wint_t __cdecl fputwc(wchar_t _Ch,FILE *_File);
+  _CRTIMP wint_t __cdecl _fputwchar(wchar_t _Ch);
+  wint_t __cdecl getwc(FILE *_File);
+  wint_t __cdecl getwchar(void);
+  wint_t __cdecl putwc(wchar_t _Ch,FILE *_File);
+  wint_t __cdecl putwchar(wchar_t _Ch);
+  wint_t __cdecl ungetwc(wint_t _Ch,FILE *_File);
+  wchar_t *__cdecl fgetws(wchar_t *_Dst,int _SizeInWords,FILE *_File);
+  int __cdecl fputws(const wchar_t *_Str,FILE *_File);
+  _CRTIMP wchar_t *__cdecl _getws(wchar_t *_String);
+  _CRTIMP int __cdecl _putws(const wchar_t *_Str);
+  int __cdecl fwprintf(FILE *_File,const wchar_t *_Format,...);
+  int __cdecl wprintf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _scwprintf(const wchar_t *_Format,...);
+  int __cdecl vfwprintf(FILE *_File,const wchar_t *_Format,va_list _ArgList);
+  int __cdecl vwprintf(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl swprintf(wchar_t*, const wchar_t*, ...);
+  _CRTIMP int __cdecl vswprintf(wchar_t*, const wchar_t*,va_list);
+  _CRTIMP int __cdecl _swprintf_c(wchar_t *_DstBuf,size_t _SizeInWords,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vswprintf_c(wchar_t *_DstBuf,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,va_list _Args);
+#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+  int __cdecl snwprintf (wchar_t* s, size_t n, const wchar_t*  format, ...);
+  __CRT_INLINE int __cdecl vsnwprintf (wchar_t* s, size_t n, const wchar_t* format, va_list arg) { return _vsnwprintf(s,n,format,arg); }
+  int __cdecl vwscanf (const wchar_t *, va_list);
+  int __cdecl vfwscanf (FILE *,const wchar_t *,va_list);
+  int __cdecl vswscanf (const wchar_t *,const wchar_t *,va_list);
 #endif
+  _CRTIMP int __cdecl _swprintf(wchar_t *_Dest,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vswprintf(wchar_t *_Dest,const wchar_t *_Format,va_list _Args);
 
-__CRT_INLINE off64_t __cdecl __MINGW_NOTHROW ftello64 (FILE * stream)
-{
-  fpos_t pos;
-  if (fgetpos(stream, &pos))
-    return  -1LL;
-  else
-   return ((off64_t) pos);
-}
-#endif /* __NO_MINGW_LFS */
+#ifndef RC_INVOKED
+#include <vadefs.h>
+#endif
 
-#endif /* Not __STRICT_ANSI__ */
+#ifdef _CRT_NON_CONFORMING_SWPRINTFS
+#ifndef __cplusplus
+#define swprintf _swprintf
+#define vswprintf _vswprintf
+#define _swprintf_l __swprintf_l
+#define _vswprintf_l __vswprintf_l
+#endif
+#endif
 
-/* Wide  versions */
+  _CRTIMP wchar_t *__cdecl _wtempnam(const wchar_t *_Directory,const wchar_t *_FilePrefix);
+  _CRTIMP int __cdecl _vscwprintf(const wchar_t *_Format,va_list _ArgList);
+  int __cdecl fwscanf(FILE *_File,const wchar_t *_Format,...);
+  int __cdecl swscanf(const wchar_t *_Src,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _snwscanf(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
+  int __cdecl wscanf(const wchar_t *_Format,...);
+  _CRTIMP FILE *__cdecl _wfdopen(int _FileHandle ,const wchar_t *_Mode);
+  _CRTIMP FILE *__cdecl _wfopen(const wchar_t *_Filename,const wchar_t *_Mode);
+  _CRTIMP FILE *__cdecl _wfreopen(const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
+#ifndef _CRT_WPERROR_DEFINED
+#define _CRT_WPERROR_DEFINED
+  _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
+#endif
+  _CRTIMP FILE *__cdecl _wpopen(const wchar_t *_Command,const wchar_t *_Mode);
+#if !defined(NO_OLDNAMES) && !defined(wpopen)
+#define wpopen _wpopen
+#endif
+  _CRTIMP int __cdecl _wremove(const wchar_t *_Filename);
+  _CRTIMP wchar_t *__cdecl _wtmpnam(wchar_t *_Buffer);
+  _CRTIMP wint_t __cdecl _fgetwc_nolock(FILE *_File);
+  _CRTIMP wint_t __cdecl _fputwc_nolock(wchar_t _Ch,FILE *_File);
+  _CRTIMP wint_t __cdecl _ungetwc_nolock(wint_t _Ch,FILE *_File);
 
-#ifndef _WSTDIO_DEFINED
-/*  also in wchar.h - keep in sync */
-_CRTIMP int __cdecl __MINGW_NOTHROW    fwprintf (FILE*, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wprintf (const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    swprintf (wchar_t*, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _snwprintf (wchar_t*, size_t, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vfwprintf (FILE*, const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vwprintf (const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vswprintf (wchar_t*, const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _vsnwprintf (wchar_t*, size_t, const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fwscanf (FILE*, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wscanf (const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    swscanf (const wchar_t*, const wchar_t*, ...);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW fgetwc (FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW fputwc (wchar_t, FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW ungetwc (wchar_t, FILE*);
-
-#ifdef __MSVCRT__
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW fgetws (wchar_t*, int, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fputws (const wchar_t*, FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW getwc (FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW getwchar (void);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _getws (wchar_t*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW putwc (wint_t, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _putws (const wchar_t*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW putwchar (wint_t);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfdopen(int, const wchar_t *);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfopen (const wchar_t*, const wchar_t*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfreopen (const wchar_t*, const wchar_t*, FILE*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfsopen (const wchar_t*, const wchar_t*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wtmpnam (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wtempnam (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wrename (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wremove (const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wperror (const wchar_t*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wpopen (const wchar_t*, const wchar_t*);
-#endif /* __MSVCRT__ */
+#undef _CRT_GETPUTWCHAR_NOINLINE
 
-#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
-int __cdecl __MINGW_NOTHROW snwprintf (wchar_t* s, size_t n, const wchar_t*  format, ...);
-__CRT_INLINE int __cdecl __MINGW_NOTHROW
-vsnwprintf (wchar_t* s, size_t n, const wchar_t* format, __VALIST arg)
-  { return _vsnwprintf ( s, n, format, arg);}
-int __cdecl __MINGW_NOTHROW vwscanf (const wchar_t * __restrict__, __VALIST);
-int __cdecl __MINGW_NOTHROW vfwscanf (FILE * __restrict__,
-                      const wchar_t * __restrict__, __VALIST);
-int __cdecl __MINGW_NOTHROW vswscanf (const wchar_t * __restrict__,
-                      const wchar_t * __restrict__, __VALIST);
+#if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE)
+#define getwchar() fgetwc(stdin)
+#define putwchar(_c) fputwc((_c),stdout)
+#else
+  __CRT_INLINE wint_t __cdecl getwchar() { return (fgetwc(stdin)); }
+  __CRT_INLINE wint_t __cdecl putwchar(wchar_t _C) { return (fputwc(_C,stdout)); }
 #endif
 
-#define _WSTDIO_DEFINED
-#endif /* _WSTDIO_DEFINED */
-
-#ifndef __STRICT_ANSI__
-#ifdef __MSVCRT__
-#ifndef NO_OLDNAMES
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  wpopen (const wchar_t*, const wchar_t*);
-#endif /* not NO_OLDNAMES */
-#endif /* MSVCRT runtime */
+#define getwc(_stm) fgetwc(_stm)
+#define putwc(_c,_stm) fputwc(_c,_stm)
+#define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
+#define _getwc_nolock(_stm) _fgetwc_nolock(_stm)
 
-/*
- * Other Non ANSI wide functions
- */
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW _fgetwchar (void);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW _fputwchar (wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _getw (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _putw (int, FILE*);
+#define _WSTDIO_DEFINED
+#endif
 
-#ifndef _NO_OLDNAMES
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW fgetwchar (void);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW fputwchar (wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    getw (FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    putw (int, FILE*);
-#endif /* Not _NO_OLDNAMES */
+#define _STDIO_DEFINED
+#endif
 
-#endif /* __STRICT_ANSI */
+#define _fgetc_nolock(_stream) (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
+#define _fputc_nolock(_c,_stream) (--(_stream)->_cnt >= 0 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
+#define _getc_nolock(_stream) _fgetc_nolock(_stream)
+#define _putc_nolock(_c,_stream) _fputc_nolock(_c,_stream)
+#define _getchar_nolock() _getc_nolock(stdin)
+#define _putchar_nolock(_c) _putc_nolock((_c),stdout)
+#define _getwchar_nolock() _getwc_nolock(stdin)
+#define _putwchar_nolock(_c) _putwc_nolock((_c),stdout)
+
+  _CRTIMP void __cdecl _lock_file(FILE *_File);
+  _CRTIMP void __cdecl _unlock_file(FILE *_File);
+  _CRTIMP int __cdecl _fclose_nolock(FILE *_File);
+  _CRTIMP int __cdecl _fflush_nolock(FILE *_File);
+  _CRTIMP size_t __cdecl _fread_nolock(void *_DstBuf,size_t _ElementSize,size_t _Count,FILE *_File);
+  _CRTIMP int __cdecl _fseek_nolock(FILE *_File,long _Offset,int _Origin);
+  _CRTIMP long __cdecl _ftell_nolock(FILE *_File);
+  _CRTIMP int __cdecl _fseeki64_nolock(FILE *_File,__int64 _Offset,int _Origin);
+  _CRTIMP __int64 __cdecl _ftelli64_nolock(FILE *_File);
+  _CRTIMP size_t __cdecl _fwrite_nolock(const void *_DstBuf,size_t _Size,size_t _Count,FILE *_File);
+  _CRTIMP int __cdecl _ungetc_nolock(int _Ch,FILE *_File);
+
+#if !defined(NO_OLDNAMES) || !defined(_POSIX)
+#define P_tmpdir _P_tmpdir
+#define SYS_OPEN _SYS_OPEN
+
+  char *__cdecl tempnam(const char *_Directory,const char *_FilePrefix);
+  int __cdecl fcloseall(void);
+  FILE *__cdecl fdopen(int _FileHandle,const char *_Format);
+  int __cdecl fgetchar(void);
+  int __cdecl fileno(FILE *_File);
+  int __cdecl flushall(void);
+  int __cdecl fputchar(int _Ch);
+  int __cdecl getw(FILE *_File);
+  int __cdecl putw(int _Ch,FILE *_File);
+  int __cdecl rmtmp(void);
+#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
+#pragma pack(pop)
 
-#endif /* _STDIO_H_ */
+#include <sec_api/stdio_s.h>
+
+#endif
index 73d141e..9b793de 100644 (file)
-/*
- * stdlib.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Definitions for common types, variables, and functions.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_STDLIB
+#define _INC_STDLIB
 
-#ifndef _STDLIB_H_
-#define _STDLIB_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
+#include <limits.h>
 
-#define __need_size_t
-#define __need_wchar_t
-#define __need_NULL
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* RC_INVOKED */
-
-/*
- * RAND_MAX is the maximum value that may be returned by rand.
- * The minimum is zero.
- */
-#define        RAND_MAX        0x7FFF
-
-/*
- * These values may be used as exit status codes.
- */
-#define        EXIT_SUCCESS    0
-#define        EXIT_FAILURE    1
-
-/*
- * Definitions for path name functions.
- * NOTE: All of these values have simply been chosen to be conservatively high.
- *       Remember that with long file names we can no longer depend on
- *       extensions being short.
- */
-#ifndef __STRICT_ANSI__
+#pragma pack(push,_CRT_PACKING)
 
-#ifndef MAX_PATH
-#define        MAX_PATH        (260)
+#ifdef __cplusplus
+extern "C" {
 #endif
 
-#define        _MAX_PATH       MAX_PATH
-#define        _MAX_DRIVE      (3)
-#define        _MAX_DIR        256
-#define        _MAX_FNAME      256
-#define        _MAX_EXT        256
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
 
-#endif /* Not __STRICT_ANSI__ */
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
 
+#ifndef _ONEXIT_T_DEFINED
+#define _ONEXIT_T_DEFINED
 
-#ifndef RC_INVOKED
+  typedef int (__cdecl *_onexit_t)(void);
 
-#ifdef __cplusplus
-extern "C" {
+#ifndef        NO_OLDNAMES
+#define onexit_t _onexit_t
+#endif
 #endif
 
-#if !defined (__STRICT_ANSI__)
+#ifndef _DIV_T_DEFINED
+#define _DIV_T_DEFINED
 
-/*
- * This seems like a convenient place to declare these variables, which
- * give programs using WinMain (or main for that matter) access to main-ish
- * argc and argv. environ is a pointer to a table of environment variables.
- * NOTE: Strings in _argv and environ are ANSI strings.
- */
-extern int     _argc;
-extern char**  _argv;
+  typedef struct _div_t {
+    int quot;
+    int rem;
+  } div_t;
 
-/* imports from runtime dll of the above variables */
-#ifdef __MSVCRT__
+  typedef struct _ldiv_t {
+    long quot;
+    long rem;
+  } ldiv_t;
+#endif
 
-extern int*  __cdecl __MINGW_NOTHROW   __p___argc(void);
-extern char*** __cdecl __MINGW_NOTHROW  __p___argv(void);
-extern wchar_t***  __cdecl __MINGW_NOTHROW __p___wargv(void);
+#ifndef _CRT_DOUBLE_DEC
+#define _CRT_DOUBLE_DEC
 
-#define __argc (*__p___argc())
-#define __argv (*__p___argv())
-#define __wargv (*__p___wargv())
+#pragma pack(4)
+  typedef struct {
+    unsigned char ld[10];
+  } _LDOUBLE;
+#pragma pack()
 
-#else /* !MSVCRT */
+#define _PTR_LD(x) ((unsigned char *)(&(x)->ld))
 
-#ifndef __DECLSPEC_SUPPORTED
+  typedef struct {
+    double x;
+  } _CRT_DOUBLE;
 
-extern int*    _imp____argc_dll;
-extern char***  _imp____argv_dll;
-#define __argc (*_imp____argc_dll)
-#define __argv (*_imp____argv_dll)
+  typedef struct {
+    float f;
+  } _CRT_FLOAT;
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma push_macro("long")
+#undef long
+#endif
 
-#else /* __DECLSPEC_SUPPORTED */
+  typedef struct {
+    long double x;
+  } _LONGDOUBLE;
 
-__MINGW_IMPORT int    __argc_dll;
-__MINGW_IMPORT char**  __argv_dll;
-#define __argc __argc_dll
-#define __argv __argv_dll
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma pop_macro("long")
+#endif
 
-#endif /* __DECLSPEC_SUPPORTED */
+#pragma pack(4)
+  typedef struct {
+    unsigned char ld12[12];
+  } _LDBL12;
+#pragma pack()
+#endif
 
-#endif /* __MSVCRT */
-#endif /* __STRICT_ANSI__ */
-/*
- * Also defined in ctype.h.
- */
-#ifndef MB_CUR_MAX
-#ifdef __DECLSPEC_SUPPORTED
-# ifdef __MSVCRT__
-#  define MB_CUR_MAX __mb_cur_max
-   __MINGW_IMPORT int __mb_cur_max;
-# else         /* not __MSVCRT */
-#  define MB_CUR_MAX __mb_cur_max_dll
-   __MINGW_IMPORT int __mb_cur_max_dll;
-# endif                /* not __MSVCRT */
-
-#else          /* ! __DECLSPEC_SUPPORTED */
-# ifdef __MSVCRT__
-   extern int* _imp____mbcur_max;
-#  define MB_CUR_MAX (*_imp____mb_cur_max)
-# else         /* not __MSVCRT */
-   extern int*  _imp____mbcur_max_dll;
-#  define MB_CUR_MAX (*_imp____mb_cur_max_dll)
-# endif        /* not __MSVCRT */
-#endif         /*  __DECLSPEC_SUPPORTED */
-#endif  /* MB_CUR_MAX */
-
-/* 
- * MS likes to declare errno in stdlib.h as well. 
- */
+#define RAND_MAX 0x7fff
 
-#ifdef _UWIN
-#undef errno
-extern int errno;
+#ifndef MB_CUR_MAX
+#define MB_CUR_MAX ___mb_cur_max_func()
+#ifndef __mb_cur_max
+#ifdef _MSVCRT_
+  extern int __mb_cur_max;
+#else
+#define __mb_cur_max   (*_imp____mb_cur_max)
+  extern int *_imp____mb_cur_max;
+#endif
+#endif
+#ifdef _MSVCRT_
+  extern int __mbcur_max;
+#define ___mb_cur_max_func() (__mb_cur_max)
 #else
- _CRTIMP int* __cdecl __MINGW_NOTHROW  _errno(void);
-#define        errno           (*_errno())
+  extern int* _imp____mbcur_max;
+#define ___mb_cur_max_func() (*_imp____mb_cur_max)
+#endif
 #endif
- _CRTIMP int* __cdecl __MINGW_NOTHROW  __doserrno(void);
-#define        _doserrno       (*__doserrno())
 
-#if !defined (__STRICT_ANSI__)
-/*
- * Use environ from the DLL, not as a global. 
- */
+#define __max(a,b) (((a) > (b)) ? (a) : (b))
+#define __min(a,b) (((a) < (b)) ? (a) : (b))
 
-#ifdef __MSVCRT__
-  extern _CRTIMP char *** __cdecl __MINGW_NOTHROW __p__environ(void);
-  extern _CRTIMP wchar_t *** __cdecl __MINGW_NOTHROW  __p__wenviron(void);
-# define _environ (*__p__environ())
-# define _wenviron (*__p__wenviron())
-#else /* ! __MSVCRT__ */
-# ifndef __DECLSPEC_SUPPORTED
-    extern char *** _imp___environ_dll;
-#   define _environ (*_imp___environ_dll)
-# else /* __DECLSPEC_SUPPORTED */
-    __MINGW_IMPORT char ** _environ_dll;
-#   define _environ _environ_dll
-# endif /* __DECLSPEC_SUPPORTED */
-#endif /* ! __MSVCRT__ */
+#define _MAX_PATH 260
+#define _MAX_DRIVE 3
+#define _MAX_DIR 256
+#define _MAX_FNAME 256
+#define _MAX_EXT 256
 
-#define environ _environ
+#define _OUT_TO_DEFAULT 0
+#define _OUT_TO_STDERR 1
+#define _OUT_TO_MSGBOX 2
+#define _REPORT_ERRMODE 3
 
-#ifdef __MSVCRT__
-/* One of the MSVCRTxx libraries */
+#define _WRITE_ABORT_MSG 0x1
+#define _CALL_REPORTFAULT 0x2
 
-#ifndef __DECLSPEC_SUPPORTED
-  extern int*  _imp___sys_nerr;
-# define       sys_nerr        (*_imp___sys_nerr)
-#else /* __DECLSPEC_SUPPORTED */
-  __MINGW_IMPORT int   _sys_nerr;
-# ifndef _UWIN
-#   define     sys_nerr        _sys_nerr
-# endif /* _UWIN */
-#endif /* __DECLSPEC_SUPPORTED */
-
-#else /* ! __MSVCRT__ */
+#define _MAX_ENV 32767
 
-/* CRTDLL run time library */
+  typedef void (__cdecl *_purecall_handler)(void);
 
-#ifndef __DECLSPEC_SUPPORTED
-  extern int*  _imp___sys_nerr_dll;
-# define sys_nerr      (*_imp___sys_nerr_dll)
-#else /* __DECLSPEC_SUPPORTED */
-  __MINGW_IMPORT int   _sys_nerr_dll;
-# define sys_nerr      _sys_nerr_dll
-#endif /* __DECLSPEC_SUPPORTED */
+  _CRTIMP _purecall_handler __cdecl _set_purecall_handler(_purecall_handler _Handler);
+  _CRTIMP _purecall_handler __cdecl _get_purecall_handler();
 
-#endif /* ! __MSVCRT__ */
-
-#ifndef __DECLSPEC_SUPPORTED
-extern char*** _imp__sys_errlist;
-#define        sys_errlist     (*_imp___sys_errlist)
-#else /* __DECLSPEC_SUPPORTED */
-__MINGW_IMPORT char*   _sys_errlist[];
-#ifndef _UWIN
-#define        sys_errlist     _sys_errlist
-#endif /* _UWIN */
-#endif /* __DECLSPEC_SUPPORTED */
-
-/*
- * OS version and such constants.
- */
+  typedef void (__cdecl *_invalid_parameter_handler)(const wchar_t *,const wchar_t *,const wchar_t *,unsigned int,uintptr_t);
+  _invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler _Handler);
+  _invalid_parameter_handler __cdecl _get_invalid_parameter_handler(void);
 
-#ifdef __MSVCRT__
-/* msvcrtxx.dll */
+#ifndef _CRT_ERRNO_DEFINED
+#define _CRT_ERRNO_DEFINED
+  _CRTIMP extern int *__cdecl _errno(void);
+#define errno (*_errno())
+  errno_t __cdecl _set_errno(int _Value);
+  errno_t __cdecl _get_errno(int *_Value);
+#endif
+  _CRTIMP unsigned long *__cdecl __doserrno(void);
+#define _doserrno (*__doserrno())
+  errno_t __cdecl _set_doserrno(unsigned long _Value);
+  errno_t __cdecl _get_doserrno(unsigned long *_Value);
 
-extern _CRTIMP unsigned __cdecl __MINGW_NOTHROW int*   __p__osver(void);
-extern _CRTIMP unsigned __cdecl __MINGW_NOTHROW int*   __p__winver(void);
-extern _CRTIMP unsigned __cdecl __MINGW_NOTHROW int*   __p__winmajor(void);
-extern _CRTIMP unsigned __cdecl __MINGW_NOTHROW int*   __p__winminor(void);
+#ifdef _MSVCRT_
+  extern int*  _imp___sys_nerr;
+  extern char***       _imp__sys_errlist;
+#else 
+  __MINGW_IMPORT int   _sys_nerr;
+  __MINGW_IMPORT char* _sys_errlist[];
+#endif
 
-#ifndef __DECLSPEC_SUPPORTED
-# define _osver                (*__p__osver())
-# define _winver       (*__p__winver())
-# define _winmajor     (*__p__winmajor())
-# define _winminor     (*__p__winminor())
+//#if (defined(_X86_) && !defined(__x86_64))
+  _CRTIMP int *__cdecl __p___argc(void);
+  _CRTIMP char ***__cdecl __p___argv(void);
+  _CRTIMP wchar_t ***__cdecl __p___wargv(void);
+  _CRTIMP char ***__cdecl __p__environ(void);
+  _CRTIMP wchar_t ***__cdecl __p__wenviron(void);
+  _CRTIMP char **__cdecl __p__pgmptr(void);
+  _CRTIMP wchar_t **__cdecl __p__wpgmptr(void);
+//#endif
+#ifndef __argc
+#ifdef _MSVCRT_
+  extern int __argc;
 #else
-__MINGW_IMPORT unsigned int _osver;
-__MINGW_IMPORT unsigned int _winver;
-__MINGW_IMPORT unsigned int _winmajor;
-__MINGW_IMPORT unsigned int _winminor;
-#endif /* __DECLSPEC_SUPPORTED */
-
+#define __argc (*_imp____argc)
+  extern int *_imp____argc;
+#endif
+#endif
+#ifndef __argv
+#ifdef _MSVCRT_
+  extern char **__argv;
 #else
-/* Not msvcrtxx.dll, thus crtdll.dll */
-
-#ifndef __DECLSPEC_SUPPORTED
-
-extern unsigned int*   _imp___osver_dll;
-extern unsigned int*   _imp___winver_dll;
-extern unsigned int*   _imp___winmajor_dll;
-extern unsigned int*   _imp___winminor_dll;
-
-#define _osver         (*_imp___osver_dll)
-#define _winver                (*_imp___winver_dll)
-#define _winmajor      (*_imp___winmajor_dll)
-#define _winminor      (*_imp___winminor_dll)
-
-#else /* __DECLSPEC_SUPPORTED */
-
-__MINGW_IMPORT unsigned int    _osver_dll;
-__MINGW_IMPORT unsigned int    _winver_dll;
-__MINGW_IMPORT unsigned int    _winmajor_dll;
-__MINGW_IMPORT unsigned int    _winminor_dll;
-
-#define _osver         _osver_dll
-#define _winver                _winver_dll
-#define _winmajor      _winmajor_dll
-#define _winminor      _winminor_dll
-
-#endif /* __DECLSPEC_SUPPORTED */
-
-#endif
-
-#if defined  __MSVCRT__
-/* although the _pgmptr is exported as DATA,
- * be safe and use the access function __p__pgmptr() to get it. */
-_CRTIMP char** __cdecl __MINGW_NOTHROW __p__pgmptr(void);
-#define _pgmptr     (*__p__pgmptr())
-_CRTIMP wchar_t** __cdecl __MINGW_NOTHROW __p__wpgmptr(void);
-#define _wpgmptr    (*__p__wpgmptr())
-#else /* ! __MSVCRT__ */
-# ifndef __DECLSPEC_SUPPORTED
-  extern char** __imp__pgmptr_dll;
-# define _pgmptr (*_imp___pgmptr_dll)
-# else /* __DECLSPEC_SUPPORTED */
- __MINGW_IMPORT char* _pgmptr_dll;
-# define _pgmptr _pgmptr_dll
-# endif /* __DECLSPEC_SUPPORTED */
-/* no wide version in CRTDLL */
-#endif /* __MSVCRT__ */
-
-/*
- * This variable determines the default file mode.
- * TODO: Which flags work?
- */
-#if !defined (__DECLSPEC_SUPPORTED) || defined (__IN_MINGW_RUNTIME)
-
-#ifdef __MSVCRT__
-extern int* _imp___fmode;
-#define        _fmode  (*_imp___fmode)
+#define __argv (*_imp____argv)
+  extern char ***_imp____argv;
+#endif
+#endif
+#ifndef __wargv
+#ifdef _MSVCRT_
+  extern wchar_t **__wargv;
 #else
-/* CRTDLL */
-extern int* _imp___fmode_dll;
-#define        _fmode  (*_imp___fmode_dll)
+#define __wargv (*_imp____wargv)
+  extern wchar_t ***_imp____wargv;
+#endif
 #endif
 
-#else /* __DECLSPEC_SUPPORTED */
+#ifdef _POSIX_
+  extern char **environ;
+#else
+#ifndef _environ
+#ifdef _MSVCRT_
+  extern char **_environ;
+#else
+#define _environ (*_imp___environ)
+  extern char ***_imp___environ;
+#endif
+#endif
 
-#ifdef __MSVCRT__
-__MINGW_IMPORT  int _fmode;
-#else /* ! __MSVCRT__ */
-__MINGW_IMPORT  int _fmode_dll;
-#define        _fmode  _fmode_dll
-#endif /* ! __MSVCRT__ */
+#ifndef _wenviron
+#ifdef _MSVCRT_
+  extern wchar_t **_wenviron;
+#else
+#define _wenviron      (*_imp___wenviron)
+  extern wchar_t ***_imp___wenviron;
+#endif
+#endif
+#endif
+#ifndef _pgmptr
+#ifdef _MSVCRT_
+  extern char *_pgmptr;
+#else
+#define _pgmptr        (*_imp___pgmptr)
+  extern char **_imp___pgmptr;
+#endif
+#endif
 
-#endif /* __DECLSPEC_SUPPORTED */
+#ifndef _wpgmptr
+#ifdef _MSVCRT_
+  extern wchar_t *_wpgmptr;
+#else
+#define _wpgmptr       (*_imp___wpgmptr)
+  extern wchar_t **_imp___wpgmptr;
+#endif
+#endif
+  errno_t __cdecl _get_pgmptr(char **_Value);
+  errno_t __cdecl _get_wpgmptr(wchar_t **_Value);
+#ifndef _fmode
+#ifdef _MSVCRT_
+  extern int _fmode;
+#else
+#define _fmode (*_imp___fmode)
+  extern int *_imp___fmode;
+#endif
+#endif
+  _CRTIMP errno_t __cdecl _set_fmode(int _Mode);
+  _CRTIMP errno_t __cdecl _get_fmode(int *_PMode);
 
-#endif /* Not __STRICT_ANSI__ */
+#ifndef _osplatform
+#ifdef _MSVCRT_
+  extern unsigned int _osplatform;
+#else
+#define _osplatform (*_imp___osplatform)
+  extern unsigned int *_imp___osplatform;
+#endif
+#endif
 
-_CRTIMP double __cdecl __MINGW_NOTHROW atof    (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    atoi    (const char*);
-_CRTIMP long __cdecl __MINGW_NOTHROW   atol    (const char*);
-#if !defined (__STRICT_ANSI__)
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wtoi (const wchar_t *);
-_CRTIMP long __cdecl __MINGW_NOTHROW _wtol (const wchar_t *);
+#ifndef _osver
+#ifdef _MSVCRT_
+  extern unsigned int _osver;
+#else
+#define _osver (*_imp___osver)
+  extern unsigned int *_imp___osver;
+#endif
 #endif
-_CRTIMP double __cdecl __MINGW_NOTHROW strtod  (const char*, char**);
-#if !defined __NO_ISOCEXT  /*  in libmingwex.a */
-float __cdecl __MINGW_NOTHROW strtof (const char * __restrict__, char ** __restrict__);
-long double __cdecl __MINGW_NOTHROW strtold (const char * __restrict__, char ** __restrict__);
-#endif /* __NO_ISOCEXT */
 
-_CRTIMP long __cdecl __MINGW_NOTHROW   strtol  (const char*, char**, int);
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW  strtoul (const char*, char**, int);
+#ifndef _winver
+#ifdef _MSVCRT_
+  extern unsigned int _winver;
+#else
+#define _winver        (*_imp___winver)
+  extern unsigned int *_imp___winver;
+#endif
+#endif
 
-#ifndef _WSTDLIB_DEFINED
-/*  also declared in wchar.h */
-_CRTIMP long __cdecl __MINGW_NOTHROW   wcstol  (const wchar_t*, wchar_t**, int);
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW  wcstoul (const wchar_t*, wchar_t**, int);
-_CRTIMP double __cdecl __MINGW_NOTHROW wcstod  (const wchar_t*, wchar_t**);
-#if !defined __NO_ISOCEXT /*  in libmingwex.a */
-float __cdecl __MINGW_NOTHROW wcstof( const wchar_t * __restrict__, wchar_t ** __restrict__);
-long double __cdecl __MINGW_NOTHROW wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__);
-#endif /* __NO_ISOCEXT */
-#ifdef __MSVCRT__ 
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wgetenv(const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wputenv(const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wsearchenv(const wchar_t*, const wchar_t*, wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wsystem(const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW    _wmakepath(wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wsplitpath (const wchar_t*, wchar_t*, wchar_t*, wchar_t*, wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW   _wfullpath (wchar_t*, const wchar_t*, size_t);
+#ifndef _winmajor
+#ifdef _MSVCRT_
+  extern unsigned int _winmajor;
+#else
+#define _winmajor      (*_imp___winmajor)
+  extern unsigned int *_imp___winmajor;
 #endif
-#define _WSTDLIB_DEFINED
 #endif
 
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcstombs        (char*, const wchar_t*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wctomb          (char*, wchar_t);
+#ifndef _winminor
+#ifdef _MSVCRT_
+  extern unsigned int _winminor;
+#else
+#define _winminor      (*_imp___winminor)
+  extern unsigned int *_imp___winminor;
+#endif
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    mblen           (const char*, size_t);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW mbstowcs        (wchar_t*, const char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    mbtowc          (wchar_t*, const char*, size_t);
+  errno_t __cdecl _get_osplatform(unsigned int *_Value);
+  errno_t __cdecl _get_osver(unsigned int *_Value);
+  errno_t __cdecl _get_winver(unsigned int *_Value);
+  errno_t __cdecl _get_winmajor(unsigned int *_Value);
+  errno_t __cdecl _get_winminor(unsigned int *_Value);
+#ifndef _countof
+#ifndef __cplusplus
+#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
+#else
+  extern "C++" {
+    template <typename _CountofType,size_t _SizeOfArray> char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
+#define _countof(_Array) sizeof(*__countof_helper(_Array))
+  }
+#endif
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    rand    (void);
-_CRTIMP void __cdecl __MINGW_NOTHROW   srand   (unsigned int);
+#ifndef _CRT_TERMINATE_DEFINED
+#define _CRT_TERMINATE_DEFINED
+  __declspec(noreturn) void __cdecl exit(int _Code);
+  _CRTIMP __declspec(noreturn) void __cdecl _exit(int _Code);
+#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
+  /* C99 function name */
+  void __cdecl __declspec(noreturn) _Exit(int); /* Declare to get noreturn attribute.  */
+  __CRT_INLINE void __cdecl _Exit(int status)
+  {  _exit(status); }
+#endif
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma push_macro("abort")
+#undef abort
+#endif
+  void __cdecl __declspec(noreturn) abort(void);
+#ifdef _WIN64 //hack for old gcc in ROSBE
+#pragma pop_macro("abort")
+#endif
+#endif
 
-_CRTIMP void* __cdecl __MINGW_NOTHROW  calloc  (size_t, size_t) __MINGW_ATTRIB_MALLOC;
-_CRTIMP void* __cdecl __MINGW_NOTHROW  malloc  (size_t) __MINGW_ATTRIB_MALLOC;
-_CRTIMP void* __cdecl __MINGW_NOTHROW  realloc (void*, size_t);
-_CRTIMP void __cdecl __MINGW_NOTHROW   free    (void*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   abort   (void) __MINGW_ATTRIB_NORETURN;
-_CRTIMP void __cdecl __MINGW_NOTHROW   exit    (int) __MINGW_ATTRIB_NORETURN;
+  _CRTIMP unsigned int __cdecl _set_abort_behavior(unsigned int _Flags,unsigned int _Mask);
 
-/* Note: This is in startup code, not imported directly from dll */
-int __cdecl __MINGW_NOTHROW    atexit  (void (*)(void));
+#ifndef _CRT_ABS_DEFINED
+#define _CRT_ABS_DEFINED
+  int __cdecl abs(int _X);
+  long __cdecl labs(long _X);
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    system  (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  getenv  (const char*);
+#if _INTEGRAL_MAX_BITS >= 64
+  __int64 __cdecl _abs64(__int64);
+#endif
+  int __cdecl atexit(void (__cdecl *)(void));
+#ifndef _CRT_ATOF_DEFINED
+#define _CRT_ATOF_DEFINED
+  double __cdecl atof(const char *_String);
+  double __cdecl _atof_l(const char *_String,_locale_t _Locale);
+#endif
+  int __cdecl atoi(const char *_Str);
+  _CRTIMP int __cdecl _atoi_l(const char *_Str,_locale_t _Locale);
+  long __cdecl atol(const char *_Str);
+  _CRTIMP long __cdecl _atol_l(const char *_Str,_locale_t _Locale);
+#ifndef _CRT_ALGO_DEFINED
+#define _CRT_ALGO_DEFINED
+  void *__cdecl bsearch(const void *_Key,const void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
+  void __cdecl qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *));
+#endif
+  /*unsigned short __cdecl _byteswap_ushort(unsigned short _Short); */
+  /*unsigned long __cdecl _byteswap_ulong (unsigned long _Long); */
+#if _INTEGRAL_MAX_BITS >= 64
+  /*unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 _Int64);*/
+#endif
+  div_t __cdecl div(int _Numerator,int _Denominator);
+  char *__cdecl getenv(const char *_VarName);
+  _CRTIMP char *__cdecl _itoa(int _Value,char *_Dest,int _Radix);
+
+  _CRTIMP char *__cdecl _i64toa(__int64 _Val,char *_DstBuf,int _Radix);
+  _CRTIMP char *__cdecl _ui64toa(unsigned __int64 _Val,char *_DstBuf,int _Radix);
+  _CRTIMP __int64 __cdecl _atoi64(const char *_String);
+  _CRTIMP __int64 __cdecl _atoi64_l(const char *_String,_locale_t _Locale);
+  _CRTIMP __int64 __cdecl _strtoi64(const char *_String,char **_EndPtr,int _Radix);
+  _CRTIMP __int64 __cdecl _strtoi64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
+  _CRTIMP unsigned __int64 __cdecl _strtoui64(const char *_String,char **_EndPtr,int _Radix);
+  _CRTIMP unsigned __int64 __cdecl _strtoui64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
+
+  ldiv_t __cdecl ldiv(long _Numerator,long _Denominator);
+  _CRTIMP char *__cdecl _ltoa(long _Value,char *_Dest,int _Radix);
+  int __cdecl mblen(const char *_Ch,size_t _MaxCount);
+  _CRTIMP int __cdecl _mblen_l(const char *_Ch,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbstrlen(const char *_Str);
+  _CRTIMP size_t __cdecl _mbstrlen_l(const char *_Str,_locale_t _Locale);
+  _CRTIMP size_t __cdecl _mbstrnlen(const char *_Str,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _mbstrnlen_l(const char *_Str,size_t _MaxCount,_locale_t _Locale);
+  int __cdecl mbtowc(wchar_t *_DstCh,const char *_SrcCh,size_t _SrcSizeInBytes);
+  _CRTIMP int __cdecl _mbtowc_l(wchar_t *_DstCh,const char *_SrcCh,size_t _SrcSizeInBytes,_locale_t _Locale);
+  size_t __cdecl mbstowcs(wchar_t *_Dest,const char *_Source,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _mbstowcs_l(wchar_t *_Dest,const char *_Source,size_t _MaxCount,_locale_t _Locale);
+  int __cdecl rand(void);
+  _CRTIMP int __cdecl _set_error_mode(int _Mode);
+  void __cdecl srand(unsigned int _Seed);
+  double __cdecl strtod(const char *_Str,char **_EndPtr);
+  float __cdecl strtof(const char *nptr, char **endptr);
+#if !defined __NO_ISOCEXT  /* in libmingwex.a */
+  float __cdecl strtof (const char * __restrict__, char ** __restrict__);
+  long double __cdecl strtold(const char * __restrict__, char ** __restrict__);
+#endif /* __NO_ISOCEXT */
+  _CRTIMP double __cdecl _strtod_l(const char *_Str,char **_EndPtr,_locale_t _Locale);
+  long __cdecl strtol(const char *_Str,char **_EndPtr,int _Radix);
+  _CRTIMP long __cdecl _strtol_l(const char *_Str,char **_EndPtr,int _Radix,_locale_t _Locale);
+  unsigned long __cdecl strtoul(const char *_Str,char **_EndPtr,int _Radix);
+  _CRTIMP unsigned long __cdecl _strtoul_l(const char *_Str,char **_EndPtr,int _Radix,_locale_t _Locale);
+#ifndef _CRT_SYSTEM_DEFINED
+#define _CRT_SYSTEM_DEFINED
+  int __cdecl system(const char *_Command);
+#endif
+  _CRTIMP char *__cdecl _ultoa(unsigned long _Value,char *_Dest,int _Radix);
+  int __cdecl wctomb(char *_MbCh,wchar_t _WCh);
+  _CRTIMP int __cdecl _wctomb_l(char *_MbCh,wchar_t _WCh,_locale_t _Locale);
+  size_t __cdecl wcstombs(char *_Dest,const wchar_t *_Source,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _wcstombs_l(char *_Dest,const wchar_t *_Source,size_t _MaxCount,_locale_t _Locale);
+
+#ifndef _CRT_ALLOCATION_DEFINED
+#define _CRT_ALLOCATION_DEFINED
+  void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements);
+  void __cdecl free(void *_Memory);
+  void *__cdecl malloc(size_t _Size);
+  void *__cdecl realloc(void *_Memory,size_t _NewSize);
+  _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
+  //_CRTIMP void __cdecl _aligned_free(void *_Memory);
+  //_CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment);
+  _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset);
+  _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment);
+  _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment);
+  _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset);
+  _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset);
+#endif
 
-/* bsearch and qsort are also in non-ANSI header search.h  */
-_CRTIMP void* __cdecl bsearch (const void*, const void*, size_t, size_t, 
-                              int (*)(const void*, const void*));
-_CRTIMP void __cdecl qsort(void*, size_t, size_t,
-                          int (*)(const void*, const void*));
+#ifndef _WSTDLIB_DEFINED
+#define _WSTDLIB_DEFINED
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    abs     (int) __MINGW_ATTRIB_CONST;
-_CRTIMP long __cdecl __MINGW_NOTHROW   labs    (long) __MINGW_ATTRIB_CONST;
+  _CRTIMP wchar_t *__cdecl _itow(int _Value,wchar_t *_Dest,int _Radix);
+  _CRTIMP wchar_t *__cdecl _ltow(long _Value,wchar_t *_Dest,int _Radix);
+  _CRTIMP wchar_t *__cdecl _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix);
+  double __cdecl wcstod(const wchar_t *_Str,wchar_t **_EndPtr);
+  float __cdecl wcstof(const wchar_t *nptr, wchar_t **endptr);
+#if !defined __NO_ISOCEXT /* in libmingwex.a */
+  float __cdecl wcstof( const wchar_t * __restrict__, wchar_t ** __restrict__);
+  long double __cdecl wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__);
+#endif /* __NO_ISOCEXT */
+  _CRTIMP double __cdecl _wcstod_l(const wchar_t *_Str,wchar_t **_EndPtr,_locale_t _Locale);
+  long __cdecl wcstol(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP long __cdecl _wcstol_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+  unsigned long __cdecl wcstoul(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP unsigned long __cdecl _wcstoul_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wgetenv(const wchar_t *_VarName);
+#ifndef _CRT_WSYSTEM_DEFINED
+#define _CRT_WSYSTEM_DEFINED
+  _CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
+#endif
+  _CRTIMP double __cdecl _wtof(const wchar_t *_Str);
+  _CRTIMP double __cdecl _wtof_l(const wchar_t *_Str,_locale_t _Locale);
+  _CRTIMP int __cdecl _wtoi(const wchar_t *_Str);
+  _CRTIMP int __cdecl _wtoi_l(const wchar_t *_Str,_locale_t _Locale);
+  _CRTIMP long __cdecl _wtol(const wchar_t *_Str);
+  _CRTIMP long __cdecl _wtol_l(const wchar_t *_Str,_locale_t _Locale);
+
+  _CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix);
+  _CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
+  _CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
+  _CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
+  _CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+  _CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str ,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
 
-/*
- * div_t and ldiv_t are structures used to return the results of div and
- * ldiv.
- *
- * NOTE: div and ldiv appear not to work correctly unless
- *       -fno-pcc-struct-return is specified. This is included in the
- *       mingw32 specs file.
- */
-typedef struct { int quot, rem; } div_t;
-typedef struct { long quot, rem; } ldiv_t;
+#endif
 
-_CRTIMP div_t __cdecl __MINGW_NOTHROW  div     (int, int) __MINGW_ATTRIB_CONST;
-_CRTIMP ldiv_t __cdecl __MINGW_NOTHROW ldiv    (long, long) __MINGW_ATTRIB_CONST;
+#ifndef _POSIX_
+#define _CVTBUFSIZE (309+40)
+  _CRTIMP char *__cdecl _fullpath(char *_FullPath,const char *_Path,size_t _SizeInBytes);
+  _CRTIMP char *__cdecl _ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign);
+  _CRTIMP char *__cdecl _fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign);
+  _CRTIMP char *__cdecl _gcvt(double _Val,int _NumOfDigits,char *_DstBuf);
+  _CRTIMP int __cdecl _atodbl(_CRT_DOUBLE *_Result,char *_Str);
+  _CRTIMP int __cdecl _atoldbl(_LDOUBLE *_Result,char *_Str);
+  _CRTIMP int __cdecl _atoflt(_CRT_FLOAT *_Result,char *_Str);
+  _CRTIMP int __cdecl _atodbl_l(_CRT_DOUBLE *_Result,char *_Str,_locale_t _Locale);
+  _CRTIMP int __cdecl _atoldbl_l(_LDOUBLE *_Result,char *_Str,_locale_t _Locale);
+  _CRTIMP int __cdecl _atoflt_l(_CRT_FLOAT *_Result,char *_Str,_locale_t _Locale);
+  _CRTIMP unsigned long __cdecl __MINGW_NOTHROW _lrotl(unsigned long, int) __MINGW_ATTRIB_CONST;
+  _CRTIMP unsigned long __cdecl __MINGW_NOTHROW _lrotr(unsigned long, int) __MINGW_ATTRIB_CONST;
+  _CRTIMP void __cdecl _makepath(char *_Path,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext);
+  _onexit_t __cdecl _onexit(_onexit_t _Func);
+
+#ifndef _CRT_PERROR_DEFINED
+#define _CRT_PERROR_DEFINED
+  void __cdecl perror(const char *_ErrMsg);
+#endif
+  _CRTIMP int __cdecl _putenv(const char *_EnvString);
+  //_CRTIMP unsigned int __cdecl _rotl(unsigned int, int) __MINGW_ATTRIB_CONST;
+#if _INTEGRAL_MAX_BITS >= 64
+  //_CRTIMP unsigned __int64 __cdecl _rotl64(unsigned __int64, int) __MINGW_ATTRIB_CONST;
+#endif
+  //_CRTIMP unsigned int __cdecl _rotr(unsigned int, int) __MINGW_ATTRIB_CONST;
+#if _INTEGRAL_MAX_BITS >= 64
+  //_CRTIMP unsigned __int64 __cdecl _rotr64(unsigned __int64, int) __MINGW_ATTRIB_CONST;
+#endif
+  _CRTIMP void __cdecl _searchenv(const char *_Filename,const char *_EnvVar,char *_ResultPath);
+  _CRTIMP void __cdecl _splitpath(const char *_FullPath,char *_Drive,char *_Dir,char *_Filename,char *_Ext);
+  _CRTIMP void __cdecl _swab(char *_Buf1,char *_Buf2,int _SizeInBytes);
+
+#ifndef _WSTDLIBP_DEFINED
+#define _WSTDLIBP_DEFINED
+  _CRTIMP wchar_t *__cdecl _wfullpath(wchar_t *_FullPath,const wchar_t *_Path,size_t _SizeInWords);
+  _CRTIMP void __cdecl _wmakepath(wchar_t *_ResultPath,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
+#ifndef _CRT_WPERROR_DEFINED
+#define _CRT_WPERROR_DEFINED
+  _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
+#endif
+  _CRTIMP int __cdecl _wputenv(const wchar_t *_EnvString);
+  _CRTIMP void __cdecl _wsearchenv(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath);
+  _CRTIMP void __cdecl _wsplitpath(const wchar_t *_FullPath,wchar_t *_Drive,wchar_t *_Dir,wchar_t *_Filename,wchar_t *_Ext);
+#endif
 
-#if !defined (__STRICT_ANSI__)
+  _CRTIMP void __cdecl _beep(unsigned _Frequency,unsigned _Duration) __MINGW_ATTRIB_DEPRECATED;
+  /* Not to be confused with  _set_error_mode (int).  */
+  _CRTIMP void __cdecl _seterrormode(int _Mode) __MINGW_ATTRIB_DEPRECATED;
+  _CRTIMP void __cdecl _sleep(unsigned long _Duration) __MINGW_ATTRIB_DEPRECATED;
+#endif
 
-/*
- * NOTE: Officially the three following functions are obsolete. The Win32 API
- *       functions SetErrorMode, Beep and Sleep are their replacements.
- */
-_CRTIMP void __cdecl __MINGW_NOTHROW   _beep (unsigned int, unsigned int) __MINGW_ATTRIB_DEPRECATED;
-/* Not to be confused with  _set_error_mode (int).  */
-_CRTIMP void __cdecl __MINGW_NOTHROW   _seterrormode (int) __MINGW_ATTRIB_DEPRECATED;
-_CRTIMP void __cdecl __MINGW_NOTHROW   _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;
-
-_CRTIMP void __cdecl __MINGW_NOTHROW   _exit   (int) __MINGW_ATTRIB_NORETURN;
-
-/* _onexit is MS extension. Use atexit for portability.  */
-/* Note: This is in startup code, not imported directly from dll */
-typedef  int (* _onexit_t)(void);
-_onexit_t __cdecl __MINGW_NOTHROW _onexit( _onexit_t );
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    _putenv (const char*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _searchenv (const char*, const char*, char*);
-
-
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _ecvt (double, int, int*, int*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _fcvt (double, int, int*, int*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _gcvt (double, int, char*);
-
-_CRTIMP void __cdecl __MINGW_NOTHROW   _makepath (char*, const char*, const char*, const char*, const char*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _splitpath (const char*, char*, char*, char*, char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _fullpath (char*, const char*, size_t);
-
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _itoa (int, char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _ltoa (long, char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW   _ultoa(unsigned long, char*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW  _itow (int, wchar_t*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW  _ltow (long, wchar_t*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW  _ultow (unsigned long, wchar_t*, int);
-
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW        _atoi64(const char *);
-    
-#ifdef __MSVCRT__
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _i64toa(__int64, char *, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _ui64toa(unsigned __int64, char *, int);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW        _wtoi64(const wchar_t *);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _i64tow(__int64, wchar_t *, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _ui64tow(unsigned __int64, wchar_t *, int);
-
-
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _rotl(unsigned int, int) __MINGW_ATTRIB_CONST;
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _rotr(unsigned int, int) __MINGW_ATTRIB_CONST;
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW _lrotl(unsigned long, int) __MINGW_ATTRIB_CONST;
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW _lrotr(unsigned long, int) __MINGW_ATTRIB_CONST;
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _set_error_mode (int);
-#define _OUT_TO_DEFAULT        0
-#define _OUT_TO_STDERR 1
-#define _OUT_TO_MSGBOX 2
-#define _REPORT_ERRMODE        3
-
-#if __MSVCRT_VERSION__ >= 0x800
-#ifndef _INTPTR_T_DEFINED
-#define _INTPTR_T_DEFINED
-#ifdef _WIN64
-  typedef __int64 intptr_t;
-#else
-  typedef int intptr_t;
+#ifndef        NO_OLDNAMES
+#ifndef _POSIX_
+#if 0
+#ifndef __cplusplus
+#ifndef NOMINMAX
+#ifndef max
+#define max(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+#endif
 #endif
 #endif
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _set_abort_behavior (unsigned int, unsigned int);
-/* These masks work with msvcr80.dll version 8.0.50215.44 (a beta release).  */
-#define _WRITE_ABORT_MSG 1
-#define _CALL_REPORTFAULT 2
-
-typedef void (* _invalid_parameter_handler) (const wchar_t *,
-                                            const wchar_t *,
-                                            const wchar_t *,
-                                            unsigned int,
-                                            uintptr_t);
-_invalid_parameter_handler _set_invalid_parameter_handler (_invalid_parameter_handler);
-#endif /* __MSVCRT_VERSION__ >= 0x800 */
-#endif /* __MSVCRT__ */
 
-#ifndef        _NO_OLDNAMES
+#define        sys_errlist     (*_imp___sys_errlist)
+#define        sys_nerr        (*_imp___sys_nerr)
+#define environ _environ
+  char *__cdecl ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign);
+  char *__cdecl fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign);
+  char *__cdecl gcvt(double _Val,int _NumOfDigits,char *_DstBuf);
+  char *__cdecl itoa(int _Val,char *_DstBuf,int _Radix);
+  char *__cdecl ltoa(long _Val,char *_DstBuf,int _Radix);
+  int __cdecl putenv(const char *_EnvString);
+  void __cdecl swab(char *_Buf1,char *_Buf2,int _SizeInBytes);
+  char *__cdecl ultoa(unsigned long _Val,char *_Dstbuf,int _Radix);
+  onexit_t __cdecl onexit(onexit_t _Func);
+#endif
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    putenv (const char*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   searchenv (const char*, const char*, char*);
+#if !defined __NO_ISOCEXT /* externs in static libmingwex.a */
 
-_CRTIMP char* __cdecl __MINGW_NOTHROW  itoa (int, char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  ltoa (long, char*, int);
+  typedef struct { long long quot, rem; } lldiv_t;
 
-#ifndef _UWIN
-_CRTIMP char* __cdecl __MINGW_NOTHROW  ecvt (double, int, int*, int*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  fcvt (double, int, int*, int*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  gcvt (double, int, char*);
-#endif /* _UWIN */
-#endif /* Not _NO_OLDNAMES */
+  lldiv_t __cdecl lldiv(long long, long long);
 
-#endif /* Not __STRICT_ANSI__ */
+  __CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); }
 
-/* C99 names */
+  long long  __cdecl strtoll(const char* __restrict__, char** __restrict, int);
+  unsigned long long  __cdecl strtoull(const char* __restrict__, char** __restrict__, int);
 
-#if !defined __NO_ISOCEXT /* externs in static libmingwex.a */
+  /* these are stubs for MS _i64 versions */
+  long long  __cdecl atoll (const char *);
 
-/* C99 name for _exit */
-void __cdecl __MINGW_NOTHROW _Exit(int) __MINGW_ATTRIB_NORETURN;
-#ifndef __STRICT_ANSI__   /* inline using non-ansi functions */
-__CRT_INLINE void __cdecl __MINGW_NOTHROW _Exit(int __status)
-       {  _exit (__status); }
-#endif 
-
-typedef struct { long long quot, rem; } lldiv_t;
-
-lldiv_t        __cdecl __MINGW_NOTHROW lldiv (long long, long long) __MINGW_ATTRIB_CONST;
-
-long long __cdecl __MINGW_NOTHROW llabs(long long);
-__CRT_INLINE long long __cdecl __MINGW_NOTHROW llabs(long long _j)
-  {return (_j >= 0 ? _j : -_j);}
-
-long long  __cdecl __MINGW_NOTHROW strtoll (const char* __restrict__, char** __restrict, int);
-unsigned long long  __cdecl __MINGW_NOTHROW strtoull (const char* __restrict__, char** __restrict__, int);
-
-#if defined (__MSVCRT__) /* these are stubs for MS _i64 versions */ 
-long long  __cdecl __MINGW_NOTHROW atoll (const char *);
-
-#if !defined (__STRICT_ANSI__)
-long long  __cdecl __MINGW_NOTHROW wtoll (const wchar_t *);
-char* __cdecl __MINGW_NOTHROW lltoa (long long, char *, int);
-char* __cdecl __MINGW_NOTHROW ulltoa (unsigned long long , char *, int);
-wchar_t* __cdecl __MINGW_NOTHROW lltow (long long, wchar_t *, int);
-wchar_t* __cdecl __MINGW_NOTHROW ulltow (unsigned long long, wchar_t *, int);
-
-  /* inline using non-ansi functions */
-__CRT_INLINE long long  __cdecl __MINGW_NOTHROW atoll (const char * _c)
-       { return _atoi64 (_c); }
-__CRT_INLINE char*  __cdecl __MINGW_NOTHROW lltoa (long long _n, char * _c, int _i)
-       { return _i64toa (_n, _c, _i); }
-__CRT_INLINE char*  __cdecl __MINGW_NOTHROW ulltoa (unsigned long long _n, char * _c, int _i)
-       { return _ui64toa (_n, _c, _i); }
-__CRT_INLINE long long  __cdecl __MINGW_NOTHROW wtoll (const wchar_t * _w)
-       { return _wtoi64 (_w); }
-__CRT_INLINE wchar_t*  __cdecl __MINGW_NOTHROW lltow (long long _n, wchar_t * _w, int _i)
-       { return _i64tow (_n, _w, _i); } 
-__CRT_INLINE wchar_t*  __cdecl __MINGW_NOTHROW ulltow (unsigned long long _n, wchar_t * _w, int _i)
-       { return _ui64tow (_n, _w, _i); } 
+#ifndef __STRICT_ANSI__
+  long long  __cdecl wtoll (const wchar_t *);
+  char *__cdecl lltoa (long long, char *, int);
+  char *__cdecl ulltoa (unsigned long long , char *, int);
+  wchar_t *__cdecl lltow (long long, wchar_t *, int);
+  wchar_t *__cdecl ulltow (unsigned long long, wchar_t *, int);
+
+  /* __CRT_INLINE using non-ansi functions */
+  __CRT_INLINE long long  __cdecl atoll (const char * _c) { return _atoi64 (_c); }
+  __CRT_INLINE char *__cdecl lltoa (long long _n, char * _c, int _i) { return _i64toa (_n, _c, _i); }
+  __CRT_INLINE char *__cdecl ulltoa (unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); }
+  __CRT_INLINE long long  __cdecl wtoll (const wchar_t * _w) { return _wtoi64 (_w); }
+  __CRT_INLINE wchar_t *__cdecl lltow (long long _n, wchar_t * _w, int _i) { return _i64tow (_n, _w, _i); }
+  __CRT_INLINE wchar_t *__cdecl ulltow (unsigned long long _n, wchar_t * _w, int _i) { return _ui64tow (_n, _w, _i); }
 #endif /* (__STRICT_ANSI__)  */
 
-#endif /* __MSVCRT__ */
-
 #endif /* !__NO_ISOCEXT */
 
-
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _STDLIB_H_ */
+#pragma pack(pop)
 
+#include <sec_api/stdlib_s.h>
+#include <malloc.h>
 
+#endif
index 62bdb3f..f766137 100644 (file)
-/*
- * string.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Definitions for memory and string functions.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_STRING
+#define _INC_STRING
 
-#ifndef _STRING_H_
-#define        _STRING_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-/*
- * Define size_t, wchar_t and NULL
- */
-#define __need_size_t
-#define __need_wchar_t
-#define        __need_NULL
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-#ifndef RC_INVOKED
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * Prototypes of the ANSI Standard C library string functions.
- */
-_CRTIMP void* __cdecl __MINGW_NOTHROW  memchr (const void*, int, size_t) __MINGW_ATTRIB_PURE;
-_CRTIMP int __cdecl __MINGW_NOTHROW    memcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE;
-_CRTIMP void* __cdecl __MINGW_NOTHROW  memcpy (void*, const void*, size_t);
-_CRTIMP void* __cdecl __MINGW_NOTHROW  memmove (void*, const void*, size_t);
-_CRTIMP void* __cdecl __MINGW_NOTHROW  memset (void*, int, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strcat (char*, const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strchr (const char*, int)  __MINGW_ATTRIB_PURE;
-_CRTIMP int __cdecl __MINGW_NOTHROW    strcmp (const char*, const char*)  __MINGW_ATTRIB_PURE;
-_CRTIMP int __cdecl __MINGW_NOTHROW    strcoll (const char*, const char*);     /* Compare using locale */
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strcpy (char*, const char*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW strcspn (const char*, const char*)  __MINGW_ATTRIB_PURE;
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strerror (int); /* NOTE: NOT an old name wrapper. */
-
-_CRTIMP size_t __cdecl __MINGW_NOTHROW strlen (const char*)  __MINGW_ATTRIB_PURE;
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strncat (char*, const char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    strncmp (const char*, const char*, size_t)  __MINGW_ATTRIB_PURE;
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strncpy (char*, const char*, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strpbrk (const char*, const char*)  __MINGW_ATTRIB_PURE;
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strrchr (const char*, int)  __MINGW_ATTRIB_PURE;
-_CRTIMP size_t __cdecl __MINGW_NOTHROW strspn (const char*, const char*)  __MINGW_ATTRIB_PURE;
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strstr (const char*, const char*)  __MINGW_ATTRIB_PURE;
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strtok (char*, const char*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW strxfrm (char*, const char*, size_t);
-
-#ifndef __STRICT_ANSI__
-/*
- * Extra non-ANSI functions provided by the CRTDLL library
- */
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strerror (const char *);
-_CRTIMP void* __cdecl __MINGW_NOTHROW  _memccpy (void*, const void*, int, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _memicmp (const void*, const void*, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strdup (const char*) __MINGW_ATTRIB_MALLOC;
-_CRTIMP int __cdecl __MINGW_NOTHROW    _strcmpi (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _stricmp (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _stricoll (const char*, const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strlwr (char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _strnicmp (const char*, const char*, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strnset (char*, int, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strrev (char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strset (char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strupr (char*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _swab (const char*, char*, size_t);
-
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW  _strncoll(const char*, const char*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW  _strnicoll(const char*, const char*, size_t);
+#ifndef _NLSCMP_DEFINED
+#define _NLSCMP_DEFINED
+#define _NLSCMPERROR 2147483647
 #endif
 
-#ifndef        _NO_OLDNAMES
-/*
- * Non-underscored versions of non-ANSI functions. They live in liboldnames.a
- * and provide a little extra portability. Also a few extra UNIX-isms like
- * strcasecmp.
- */
-_CRTIMP void* __cdecl __MINGW_NOTHROW  memccpy (void*, const void*, int, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    memicmp (const void*, const void*, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strdup (const char*) __MINGW_ATTRIB_MALLOC;
-_CRTIMP int __cdecl __MINGW_NOTHROW    strcmpi (const char*, const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    stricmp (const char*, const char*);
-__CRT_INLINE int __cdecl __MINGW_NOTHROW strcasecmp (const char*, const char *);
-__CRT_INLINE int __cdecl __MINGW_NOTHROW
-strcasecmp (const char * __sz1, const char * __sz2)
-  {return _stricmp (__sz1, __sz2);}
-_CRTIMP int __cdecl __MINGW_NOTHROW    stricoll (const char*, const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strlwr (char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    strnicmp (const char*, const char*, size_t);
-__CRT_INLINE int  __cdecl __MINGW_NOTHROW strncasecmp (const char *, const char *, size_t);
-__CRT_INLINE int __cdecl __MINGW_NOTHROW
-strncasecmp (const char * __sz1, const char * __sz2, size_t __sizeMaxCompare)
-  {return _strnicmp (__sz1, __sz2, __sizeMaxCompare);}
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strnset (char*, int, size_t);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strrev (char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strset (char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  strupr (char*);
-#ifndef _UWIN
-_CRTIMP void __cdecl __MINGW_NOTHROW   swab (const char*, char*, size_t);
-#endif /* _UWIN */
-#endif /* _NO_OLDNAMES */
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
 
-#endif /* Not __STRICT_ANSI__ */
+#define _WConst_return _CONST_RETURN
+
+#ifndef _CRT_MEMORY_DEFINED
+#define _CRT_MEMORY_DEFINED
+  _CRTIMP void *__cdecl _memccpy(void *_Dst,const void *_Src,int _Val,size_t _MaxCount);
+  _CONST_RETURN void *__cdecl memchr(const void *_Buf ,int _Val,size_t _MaxCount);
+  _CRTIMP int __cdecl _memicmp(const void *_Buf1,const void *_Buf2,size_t _Size);
+  _CRTIMP int __cdecl _memicmp_l(const void *_Buf1,const void *_Buf2,size_t _Size,_locale_t _Locale);
+  int __cdecl memcmp(const void *_Buf1,const void *_Buf2,size_t _Size);
+  void *__cdecl memcpy(void *_Dst,const void *_Src,size_t _Size);
+  void *__cdecl memset(void *_Dst,int _Val,size_t _Size);
+#ifndef        NO_OLDNAMES
+  void *__cdecl memccpy(void *_Dst,const void *_Src,int _Val,size_t _Size);
+  int __cdecl memicmp(const void *_Buf1,const void *_Buf2,size_t _Size);
+#endif
+#endif
+  char *__cdecl _strset(char *_Str,int _Val);
+  char *__cdecl strcpy(char *_Dest,const char *_Source);
+  char *__cdecl strcat(char *_Dest,const char *_Source);
+  int __cdecl strcmp(const char *_Str1,const char *_Str2);
+  size_t __cdecl strlen(const char *_Str);
+#if 0
+  size_t __cdecl strnlen(const char *_Str,size_t _MaxCount);
+#endif
+  void *__cdecl memmove(void *_Dst,const void *_Src,size_t _Size);
+  _CRTIMP char *__cdecl _strdup(const char *_Src);
+  _CONST_RETURN char *__cdecl strchr(const char *_Str,int _Val);
+  _CRTIMP int __cdecl _stricmp(const char *_Str1,const char *_Str2);
+  _CRTIMP int __cdecl _strcmpi(const char *_Str1,const char *_Str2);
+  _CRTIMP int __cdecl _stricmp_l(const char *_Str1,const char *_Str2,_locale_t _Locale);
+  int __cdecl strcoll(const char *_Str1,const char *_Str2);
+  _CRTIMP int __cdecl _strcoll_l(const char *_Str1,const char *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _stricoll(const char *_Str1,const char *_Str2);
+  _CRTIMP int __cdecl _stricoll_l(const char *_Str1,const char *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _strncoll (const char *_Str1,const char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _strncoll_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _strnicoll (const char *_Str1,const char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _strnicoll_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  size_t __cdecl strcspn(const char *_Str,const char *_Control);
+  _CRTIMP char *__cdecl _strerror(const char *_ErrMsg);
+  char *__cdecl strerror(int);
+  _CRTIMP char *__cdecl _strlwr(char *_String);
+  char *strlwr_l(char *_String,_locale_t _Locale);
+  char *__cdecl strncat(char *_Dest,const char *_Source,size_t _Count);
+  int __cdecl strncmp(const char *_Str1,const char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _strnicmp(const char *_Str1,const char *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _strnicmp_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale);
+  char *strncpy(char *_Dest,const char *_Source,size_t _Count);
+  _CRTIMP char *__cdecl _strnset(char *_Str,int _Val,size_t _MaxCount);
+  _CONST_RETURN char *__cdecl strpbrk(const char *_Str,const char *_Control);
+  _CONST_RETURN char *__cdecl strrchr(const char *_Str,int _Ch);
+  _CRTIMP char *__cdecl _strrev(char *_Str);
+  size_t __cdecl strspn(const char *_Str,const char *_Control);
+  _CONST_RETURN char *__cdecl strstr(const char *_Str,const char *_SubStr);
+  char *__cdecl strtok(char *_Str,const char *_Delim);
+  _CRTIMP char *__cdecl _strupr(char *_String);
+  _CRTIMP char *_strupr_l(char *_String,_locale_t _Locale);
+  size_t __cdecl strxfrm(char *_Dst,const char *_Src,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _strxfrm_l(char *_Dst,const char *_Src,size_t _MaxCount,_locale_t _Locale);
+
+#ifndef        NO_OLDNAMES
+  char *__cdecl strdup(const char *_Src);
+  int __cdecl strcmpi(const char *_Str1,const char *_Str2);
+  int __cdecl stricmp(const char *_Str1,const char *_Str2);
+  char *__cdecl strlwr(char *_Str);
+  int __cdecl strnicmp(const char *_Str1,const char *_Str,size_t _MaxCount);
+  __CRT_INLINE int __cdecl strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); }
+  __CRT_INLINE int __cdecl strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); }
+  char *__cdecl strnset(char *_Str,int _Val,size_t _MaxCount);
+  char *__cdecl strrev(char *_Str);
+  char *__cdecl strset(char *_Str,int _Val);
+  char *__cdecl strupr(char *_Str);
+#endif
 
 #ifndef _WSTRING_DEFINED
-/*
- * Unicode versions of the standard calls.
- * Also in wchar.h, where they belong according to ISO standard.
- */
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcscat (wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcschr (const wchar_t*, wchar_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcscmp (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcscoll (const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcscpy (wchar_t*, const wchar_t*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcscspn (const wchar_t*, const wchar_t*);
-/* Note:  _wcserror requires __MSVCRT_VERSION__ >= 0x0700.  */
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcslen (const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsncat (wchar_t*, const wchar_t*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsncmp(const wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsncpy(wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcspbrk(const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsrchr(const wchar_t*, wchar_t);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcsspn(const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsstr(const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcstok(wchar_t*, const wchar_t*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcsxfrm(wchar_t*, const wchar_t*, size_t);
-
-#ifndef        __STRICT_ANSI__
-/*
- * Unicode versions of non-ANSI string functions provided by CRTDLL.
- */
-
-/* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
-#define                _wcscmpi        _wcsicmp
-
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsdup (const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcsicmp (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcsicoll (const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcslwr (wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcsnicmp (const wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsnset (wchar_t*, wchar_t, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsrev (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsset (wchar_t*, wchar_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsupr (wchar_t*);
+#define _WSTRING_DEFINED
 
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW  _wcsncoll(const wchar_t*, const wchar_t*, size_t);
-_CRTIMP int   __cdecl __MINGW_NOTHROW _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
-#if __MSVCRT_VERSION__ >= 0x0700
-_CRTIMP  wchar_t* __cdecl __MINGW_NOTHROW _wcserror(int);
-_CRTIMP  wchar_t* __cdecl __MINGW_NOTHROW __wcserror(const wchar_t*);
+  _CRTIMP wchar_t *__cdecl _wcsdup(const wchar_t *_Str);
+  wchar_t *__cdecl wcscat(wchar_t *_Dest,const wchar_t *_Source);
+  _CONST_RETURN wchar_t *__cdecl wcschr(const wchar_t *_Str,wchar_t _Ch);
+  int __cdecl wcscmp(const wchar_t *_Str1,const wchar_t *_Str2);
+  wchar_t *__cdecl wcscpy(wchar_t *_Dest,const wchar_t *_Source);
+  size_t __cdecl wcscspn(const wchar_t *_Str,const wchar_t *_Control);
+  size_t __cdecl wcslen(const wchar_t *_Str);
+  size_t __cdecl wcsnlen(const wchar_t *_Src,size_t _MaxCount);
+  wchar_t *wcsncat(wchar_t *_Dest,const wchar_t *_Source,size_t _Count);
+  int __cdecl wcsncmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  wchar_t *wcsncpy(wchar_t *_Dest,const wchar_t *_Source,size_t _Count);
+  _CONST_RETURN wchar_t *__cdecl wcspbrk(const wchar_t *_Str,const wchar_t *_Control);
+  _CONST_RETURN wchar_t *__cdecl wcsrchr(const wchar_t *_Str,wchar_t _Ch);
+  size_t __cdecl wcsspn(const wchar_t *_Str,const wchar_t *_Control);
+  _CONST_RETURN wchar_t *__cdecl wcsstr(const wchar_t *_Str,const wchar_t *_SubStr);
+  wchar_t *__cdecl wcstok(wchar_t *_Str,const wchar_t *_Delim);
+  _CRTIMP wchar_t *__cdecl _wcserror(int _ErrNum);
+  _CRTIMP wchar_t *__cdecl __wcserror(const wchar_t *_Str);
+  _CRTIMP int __cdecl _wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2);
+  _CRTIMP int __cdecl _wcsicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _wcsnicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount);
+  _CRTIMP wchar_t *__cdecl _wcsrev(wchar_t *_Str);
+  _CRTIMP wchar_t *__cdecl _wcsset(wchar_t *_Str,wchar_t _Val);
+  _CRTIMP wchar_t *__cdecl _wcslwr(wchar_t *_String);
+  _CRTIMP wchar_t *_wcslwr_l(wchar_t *_String,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wcsupr(wchar_t *_String);
+  _CRTIMP wchar_t *_wcsupr_l(wchar_t *_String,_locale_t _Locale);
+  size_t __cdecl wcsxfrm(wchar_t *_Dst,const wchar_t *_Src,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _wcsxfrm_l(wchar_t *_Dst,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
+  int __cdecl wcscoll(const wchar_t *_Str1,const wchar_t *_Str2);
+  _CRTIMP int __cdecl _wcscoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2);
+  _CRTIMP int __cdecl _wcsicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsncoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _wcsncoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsnicoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _wcsnicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
+
+#ifndef        NO_OLDNAMES
+  /* NOTE: There is no _wcscmpi, but this is for compatibility. */
+  int __cdecl wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2);
+  __CRT_INLINE int __cdecl wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2) { return _wcsicmp (__ws1, __ws2); }
+  #define              _wcscmpi        _wcsicmp
+
+  wchar_t *__cdecl wcsdup(const wchar_t *_Str);
+#define wcswcs wcsstr
+  int __cdecl wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2);
+  int __cdecl wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  wchar_t *__cdecl wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount);
+  wchar_t *__cdecl wcsrev(wchar_t *_Str);
+  wchar_t *__cdecl wcsset(wchar_t *_Str,wchar_t _Val);
+  wchar_t *__cdecl wcslwr(wchar_t *_Str);
+  wchar_t *__cdecl wcsupr(wchar_t *_Str);
+  int __cdecl wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2);
 #endif
 #endif
 
-#ifndef        _NO_OLDNAMES
-/* NOTE: There is no _wcscmpi, but this is for compatibility. */
-int __cdecl __MINGW_NOTHROW wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2);
-__CRT_INLINE int __cdecl __MINGW_NOTHROW
-wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2)
-  {return _wcsicmp (__ws1, __ws2);}
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsdup (const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsicmp (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsicoll (const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcslwr (wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsnicmp (const wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsnset (wchar_t*, wchar_t, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsrev (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsset (wchar_t*, wchar_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsupr (wchar_t*);
-#endif /* Not _NO_OLDNAMES */
-
-#endif /* Not strict ANSI */
-
-#define _WSTRING_DEFINED
-#endif  /* _WSTRING_DEFINED */
-
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _STRING_H_ */
+#include <sec_api/string_s.h>
+#endif
index 5342276..1d801e7 100644 (file)
@@ -1,12 +1,17 @@
+/**
+ * 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.
+ */
 /*
     File: strings.h
     Copyright: Public Domain
 
-    This file is provided because non ANSI fuctions are described in string.h
+    This file is provided because non ANSI fuctions are described in string.h 
     that belong in strings.h.  These functions are provided for in the OLDNAME
     libraries.
 */
-#if !defined(_STRINGS_H_)
-# define _STRINGS_H_ 1
-# include <string.h>
+#ifndef _STRINGS_H_
+#define _STRINGS_H_ 1
+#include <string.h>
 #endif
diff --git a/reactos/include/crt/sys/cdefs.h b/reactos/include/crt/sys/cdefs.h
new file mode 100644 (file)
index 0000000..24e5fd5
--- /dev/null
@@ -0,0 +1,17 @@
+/**
+ * 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        _SYS_CDEFS_H
+#define _SYS_CDEFS_H
+#ifdef __cplusplus
+#define        __BEGIN_DECLS   extern "C" {
+#define        __END_DECLS     }
+#else
+#define        __BEGIN_DECLS
+#define        __END_DECLS
+#endif
+#define __P(protos)     protos         /* full-blown ANSI C */
+#endif
+
index a2090bc..29fd55a 100644 (file)
@@ -1,7 +1,13 @@
+/**
+ * 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.
+ */
 /*
  * This file is part of the Mingw32 package.
  *
  * This fcntl.h maps to the root fcntl.h
  */
-
+#ifndef __STRICT_ANSI__
 #include <fcntl.h>
+#endif
index e95654c..370f352 100644 (file)
@@ -1,7 +1,14 @@
+/**
+ * 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.
+ */
 /*
  * This file is part of the Mingw32 package.
  *
  * This file.h maps to the root fcntl.h
  * TODO?
  */
+#ifndef __STRICT_ANSI__
 #include <fcntl.h>
+#endif
diff --git a/reactos/include/crt/sys/ioctl.h b/reactos/include/crt/sys/ioctl.h
new file mode 100644 (file)
index 0000000..02b54ad
--- /dev/null
@@ -0,0 +1,21 @@
+/**
+ * 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 _SYS_IOCTL_H
+#define _SYS_IOCTL_H
+
+#include <sys/cdefs.h>
+
+#define WINDOWS_POST   0       /* Set write() behavior to PostMessage() */
+#define WINDOWS_SEND   1       /* Set write() behavior to SendMessage() */
+#define WINDOWS_HWND   2       /* Set hWnd for read() calls */
+
+__BEGIN_DECLS
+
+int ioctl (int __fd, int __cmd, ...);
+
+__END_DECLS
+
+#endif
index eee5e3c..e3fc85b 100644 (file)
@@ -1,31 +1,30 @@
-/*
- * locking.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Constants for the mode parameter of the locking function.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_LOCKING
+#define _INC_LOCKING
 
-#ifndef        _LOCKING_H_
-#define        _LOCKING_H_
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
 /* All the headers include this file. */
 #include <_mingw.h>
 
-#define        _LK_UNLCK       0       /* Unlock */
-#define        _LK_LOCK        1       /* Lock */
-#define        _LK_NBLCK       2       /* Non-blocking lock */
-#define        _LK_RLCK        3       /* Lock for read only */
-#define        _LK_NBRLCK      4       /* Non-blocking lock for read only */
+#define _LK_UNLCK 0
+#define _LK_LOCK 1
+#define _LK_NBLCK 2
+#define _LK_RLCK 3
+#define _LK_NBRLCK 4
 
 #ifndef        NO_OLDNAMES
-#define        LK_UNLCK        _LK_UNLCK
-#define        LK_LOCK         _LK_LOCK
-#define        LK_NBLCK        _LK_NBLCK
-#define        LK_RLCK         _LK_RLCK
-#define        LK_NBRLCK       _LK_NBRLCK
-#endif /* Not NO_OLDNAMES */
+#define LK_UNLCK _LK_UNLCK
+#define LK_LOCK _LK_LOCK
+#define LK_NBLCK _LK_NBLCK
+#define LK_RLCK _LK_RLCK
+#define LK_NBRLCK _LK_NBRLCK
+#endif
 
-#endif /* Not _LOCKING_H_ */
+#endif
index 74966bd..56e1a32 100644 (file)
@@ -1,8 +1,29 @@
+/**
+ * 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.
+ */
 /*
  * param.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Earnie Boyd <earnie@users.sf.net>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.3 $
+ * $Author: earnie $
+ * $Date: 2003/05/03 13:48:47 $
  *
  */
 
@@ -12,6 +33,7 @@
 #include <sys/types.h>
 #include <limits.h>
 
+#ifndef __STRICT_ANSI__
 /* These are useful for cross-compiling */ 
 #define BIG_ENDIAN     4321
 #define LITTLE_ENDIAN  1234
@@ -20,3 +42,5 @@
 #define MAXPATHLEN PATH_MAX
 
 #endif
+
+#endif
index 34019d0..bababc7 100644 (file)
-/*
- * stat.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Symbolic constants for opening and creating files, also stat, fstat and
- * chmod functions.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_STAT
+#define _INC_STAT
 
-#ifndef _STAT_H_
-#define _STAT_H_
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-/* All the headers include this file. */
 #include <_mingw.h>
+#include <io.h>
 
-#define __need_size_t
-#define __need_wchar_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
+#pragma pack(push,_CRT_PACKING)
 
-#include <sys/types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-/*
- * Constants for the stat st_mode member.
- */
-#define        _S_IFIFO        0x1000  /* FIFO */
-#define        _S_IFCHR        0x2000  /* Character */
-#define        _S_IFBLK        0x3000  /* Block: Is this ever set under w32? */
-#define        _S_IFDIR        0x4000  /* Directory */
-#define        _S_IFREG        0x8000  /* Regular */
+#ifndef _CRTIMP
+#define _CRTIMP __declspec(dllimport)
+#endif
 
-#define        _S_IFMT         0xF000  /* File type mask */
+#include <sys/types.h>
 
-#define        _S_IEXEC        0x0040
-#define        _S_IWRITE       0x0080
-#define        _S_IREAD        0x0100
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#undef _USE_32BIT_TIME_T
+#endif
+#else
+#if _INTEGRAL_MAX_BITS < 64
+#define _USE_32BIT_TIME_T
+#endif
+#endif
 
-#define        _S_IRWXU        (_S_IREAD | _S_IWRITE | _S_IEXEC)
-#define        _S_IXUSR        _S_IEXEC
-#define        _S_IWUSR        _S_IWRITE
-#define        _S_IRUSR        _S_IREAD
+#ifndef _TIME32_T_DEFINED
+  typedef long __time32_t;
+#define _TIME32_T_DEFINED
+#endif
 
-#define        _S_ISDIR(m)     (((m) & _S_IFMT) == _S_IFDIR)
-#define        _S_ISFIFO(m)    (((m) & _S_IFMT) == _S_IFIFO)
-#define        _S_ISCHR(m)     (((m) & _S_IFMT) == _S_IFCHR)
-#define        _S_ISBLK(m)     (((m) & _S_IFMT) == _S_IFBLK)
-#define        _S_ISREG(m)     (((m) & _S_IFMT) == _S_IFREG)
+#ifndef _TIME64_T_DEFINED
+#if _INTEGRAL_MAX_BITS >= 64
+  typedef __int64 __time64_t;
+#endif
+#define _TIME64_T_DEFINED
+#endif
 
-#ifndef _NO_OLDNAMES
+#ifndef _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+  typedef __time32_t time_t;
+#else
+  typedef __time64_t time_t;
+#endif
+#define _TIME_T_DEFINED
+#endif
 
-#define        S_IFIFO         _S_IFIFO
-#define        S_IFCHR         _S_IFCHR
-#define        S_IFBLK         _S_IFBLK
-#define        S_IFDIR         _S_IFDIR
-#define        S_IFREG         _S_IFREG
-#define        S_IFMT          _S_IFMT
-#define        S_IEXEC         _S_IEXEC
-#define        S_IWRITE        _S_IWRITE
-#define        S_IREAD         _S_IREAD
-#define        S_IRWXU         _S_IRWXU
-#define        S_IXUSR         _S_IXUSR
-#define        S_IWUSR         _S_IWUSR
-#define        S_IRUSR         _S_IRUSR
+#ifndef _WCHAR_T_DEFINED
+  typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
 
-#define        S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)
-#define        S_ISFIFO(m)     (((m) & S_IFMT) == S_IFIFO)
-#define        S_ISCHR(m)      (((m) & S_IFMT) == S_IFCHR)
-#define        S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)
-#define        S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)
+#ifndef _STAT_DEFINED
 
-#endif /* Not _NO_OLDNAMES */
+#ifdef _USE_32BIT_TIME_T
+#ifndef _WIN64
+#define _fstat32 _fstat
+#define _stat32 _stat
+#define _wstat32 _wstat
+#else
+#define _fstat _fstat32
+#define _stat _stat32
+#define _wstat _wstat32
+#endif
+#define _fstati64 _fstat32i64
+#define _stati64 _stat32i64
+#define _wstati64 _wstat32i64
+#else
+#define _fstat _fstat64i32
+#define _fstati64 _fstat64
+#define _stat _stat64i32
+#define _stati64 _stat64
+#define _wstat _wstat64i32
+#define _wstati64 _wstat64
+#endif
 
-#ifndef RC_INVOKED
+  struct _stat32 {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    _off_t st_size;
+    __time32_t st_atime;
+    __time32_t st_mtime;
+    __time32_t st_ctime;
+  };
 
-#ifndef _STAT_DEFINED
-/*
- * The structure manipulated and returned by stat and fstat.
- *
- * NOTE: If called on a directory the values in the time fields are not only
- * invalid, they will cause localtime et. al. to return NULL. And calling
- * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
- */
-struct _stat
-{
-       _dev_t  st_dev;         /* Equivalent to drive number 0=A 1=B ... */
-       _ino_t  st_ino;         /* Always zero ? */
-       _mode_t st_mode;        /* See above constants */
-       short   st_nlink;       /* Number of links. */
-       short   st_uid;         /* User: Maybe significant on NT ? */
-       short   st_gid;         /* Group: Ditto */
-       _dev_t  st_rdev;        /* Seems useless (not even filled in) */
-       _off_t  st_size;        /* File size in bytes */
-       time_t  st_atime;       /* Accessed date (always 00:00 hrs local
-                                * on FAT) */
-       time_t  st_mtime;       /* Modified time */
-       time_t  st_ctime;       /* Creation time */
-};
-
-#ifndef        _NO_OLDNAMES
-/* NOTE: Must be the same as _stat above. */
-struct stat
-{
-       _dev_t  st_dev;         /* Equivalent to drive number 0=A 1=B ... */
-       _ino_t  st_ino;         /* Always zero ? */
-       _mode_t st_mode;        /* See above constants */
-       short   st_nlink;       /* Number of links. */
-       short   st_uid;         /* User: Maybe significant on NT ? */
-       short   st_gid;         /* Group: Ditto */
-       _dev_t  st_rdev;        /* Seems useless (not even filled in) */
-       _off_t  st_size;        /* File size in bytes */
-       time_t  st_atime;       /* Accessed date (always 00:00 hrs local
-                                * on FAT) */
-       time_t  st_mtime;       /* Modified time */
-       time_t  st_ctime;       /* Creation time */
-};
-#endif /* _NO_OLDNAMES */
-
-#if defined (__MSVCRT__)
-struct _stati64 {
+#ifndef        NO_OLDNAMES
+  struct stat {
     _dev_t st_dev;
     _ino_t st_ino;
     unsigned short st_mode;
@@ -127,17 +108,45 @@ struct _stati64 {
     short st_uid;
     short st_gid;
     _dev_t st_rdev;
-    __int64 st_size;
+    _off_t st_size;
     time_t st_atime;
     time_t st_mtime;
     time_t st_ctime;
-};
+  };
+#endif
+
+  struct _stat32i64 {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    __int64 st_size;
+    __time32_t st_atime;
+    __time32_t st_mtime;
+    __time32_t st_ctime;
+  };
+
+  struct _stat64i32 {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    _off_t st_size;
+    __time64_t st_atime;
+    __time64_t st_mtime;
+    __time64_t st_ctime;
+  };
 
-struct __stat64
-{
+  struct _stat64 {
     _dev_t st_dev;
     _ino_t st_ino;
-    _mode_t st_mode;
+    unsigned short st_mode;
     short st_nlink;
     short st_uid;
     short st_gid;
@@ -146,50 +155,132 @@ struct __stat64
     __time64_t st_atime;
     __time64_t st_mtime;
     __time64_t st_ctime;
-};
-#endif /* __MSVCRT__ */
+  };
+
+#define __stat64 _stat64
+
 #define _STAT_DEFINED
-#endif /* _STAT_DEFINED */
+#endif
 
-#ifdef __cplusplus
-extern "C" {
+#define _S_IFMT 0xF000
+#define _S_IFDIR 0x4000
+#define _S_IFCHR 0x2000
+#define _S_IFIFO 0x1000
+#define _S_IFREG 0x8000
+#define _S_IREAD 0x0100
+#define _S_IWRITE 0x0080
+#define _S_IEXEC 0x0040
+
+  _CRTIMP int __cdecl _fstat32(int _FileDes,struct _stat32 *_Stat);
+  _CRTIMP int __cdecl _stat32(const char *_Name,struct _stat32 *_Stat);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP int __cdecl _fstat64(int _FileDes,struct _stat64 *_Stat);
+  _CRTIMP int __cdecl _fstat32i64(int _FileDes,struct _stat32i64 *_Stat);
+  int __cdecl _fstat64i32(int _FileDes,struct _stat64i32 *_Stat);
+  __CRT_INLINE int __cdecl _fstat64i32(int _FileDes,struct _stat64i32 *_Stat)
+  {
+    struct _stat64 st;
+    int ret=_fstat64(_FileDes,&st);
+    _Stat->st_dev=st.st_dev;
+    _Stat->st_ino=st.st_ino;
+    _Stat->st_mode=st.st_mode;
+    _Stat->st_nlink=st.st_nlink;
+    _Stat->st_uid=st.st_uid;
+    _Stat->st_gid=st.st_gid;
+    _Stat->st_rdev=st.st_rdev;
+    _Stat->st_size=(_off_t) st.st_size;
+    _Stat->st_atime=st.st_atime;
+    _Stat->st_mtime=st.st_mtime;
+    _Stat->st_ctime=st.st_ctime;
+    return ret;
+  }
+  _CRTIMP int __cdecl _stat64(const char *_Name,struct _stat64 *_Stat);
+  _CRTIMP int __cdecl _stat32i64(const char *_Name,struct _stat32i64 *_Stat);
+  int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat);
+  __CRT_INLINE int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat)
+  {
+    struct _stat64 st;
+    int ret=_stat64(_Name,&st);
+    _Stat->st_dev=st.st_dev;
+    _Stat->st_ino=st.st_ino;
+    _Stat->st_mode=st.st_mode;
+    _Stat->st_nlink=st.st_nlink;
+    _Stat->st_uid=st.st_uid;
+    _Stat->st_gid=st.st_gid;
+    _Stat->st_rdev=st.st_rdev;
+    _Stat->st_size=(_off_t) st.st_size;
+    _Stat->st_atime=st.st_atime;
+    _Stat->st_mtime=st.st_mtime;
+    _Stat->st_ctime=st.st_ctime;
+    return ret;
+  }
 #endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _fstat (int, struct _stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _chmod (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _stat (const char*, struct _stat*);
-
-#ifndef        _NO_OLDNAMES
-
-/* These functions live in liboldnames.a. */
-_CRTIMP int __cdecl __MINGW_NOTHROW    fstat (int, struct stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    chmod (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    stat (const char*, struct stat*);
-
-#endif /* Not _NO_OLDNAMES */
-
-#if defined (__MSVCRT__)
-_CRTIMP int __cdecl __MINGW_NOTHROW  _fstati64(int, struct _stati64 *);
-_CRTIMP int __cdecl __MINGW_NOTHROW  _stati64(const char *, struct _stati64 *);
-/* These require newer versions of msvcrt.dll (6.10 or higher).  */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW _fstat64 (int, struct __stat64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _stat64 (const char*, struct __stat64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-#if !defined ( _WSTAT_DEFINED) /* also declared in wchar.h */
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wstat(const wchar_t*, struct _stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wstati64 (const wchar_t*, struct _stati64*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW _wstat64 (const wchar_t*, struct __stat64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+#ifndef _WSTAT_DEFINED
 #define _WSTAT_DEFINED
-#endif /* _WSTAT_DEFIND */
-#endif /* __MSVCRT__ */
+  _CRTIMP int __cdecl _wstat32(const wchar_t *_Name,struct _stat32 *_Stat);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP int __cdecl _wstat32i64(const wchar_t *_Name,struct _stat32i64 *_Stat);
+  int __cdecl _wstat64i32(const wchar_t *_Name,struct _stat64i32 *_Stat);
+  _CRTIMP int __cdecl _wstat64(const wchar_t *_Name,struct _stat64 *_Stat);
+#endif
+#endif
+
+#ifndef        NO_OLDNAMES
+#define        _S_IFBLK        0x3000  /* Block: Is this ever set under w32? */
+
+#define S_IFMT _S_IFMT
+#define S_IFDIR _S_IFDIR
+#define S_IFCHR _S_IFCHR
+#define S_IFREG _S_IFREG
+#define S_IREAD _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC _S_IEXEC
+#define        S_IFIFO         _S_IFIFO
+#define        S_IFBLK         _S_IFBLK
+
+#define        _S_IRWXU        (_S_IREAD | _S_IWRITE | _S_IEXEC)
+#define        _S_IXUSR        _S_IEXEC
+#define        _S_IWUSR        _S_IWRITE
+
+#define        S_IRWXU         _S_IRWXU
+#define        S_IXUSR         _S_IXUSR
+#define        S_IWUSR         _S_IWUSR
+#define        S_IRUSR         _S_IRUSR
+#define        _S_IRUSR        _S_IREAD
+
+#define        S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)
+#define        S_ISFIFO(m)     (((m) & S_IFMT) == S_IFIFO)
+#define        S_ISCHR(m)      (((m) & S_IFMT) == S_IFCHR)
+#define        S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)
+#define        S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)
 
-#ifdef __cplusplus
+#endif
+
+#if !defined (RC_INVOKED) && !defined (NO_OLDNAMES)
+int __cdecl stat(const char *_Filename,struct stat *_Stat);
+int __cdecl fstat(int _Desc,struct stat *_Stat);
+int __cdecl wstat(const wchar_t *_Filename,struct stat *_Stat);
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE int __cdecl fstat(int _Desc,struct stat *_Stat) {
+  return _fstat32(_Desc,(struct _stat32 *)_Stat);
+}
+__CRT_INLINE int __cdecl stat(const char *_Filename,struct stat *_Stat) {
+  return _stat32(_Filename,(struct _stat32 *)_Stat);
 }
+#else
+__CRT_INLINE int __cdecl fstat(int _Desc,struct stat *_Stat) {
+  return _fstat64i32(_Desc,(struct _stat64i32 *)_Stat);
+}
+__CRT_INLINE int __cdecl stat(const char *_Filename,struct stat *_Stat) {
+  return _stat64i32(_Filename,(struct _stat64i32 *)_Stat);
+}
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* Not _STAT_H_ */
+#pragma pack(pop)
+#endif
index e11a2ba..8ccab83 100644 (file)
@@ -1,11 +1,19 @@
+/**
+ * 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 _SYS_TIME_H_
 #define _SYS_TIME_H_
+
 #include <time.h>
 
-#ifdef __cplusplus
+#ifdef  __cplusplus
 extern "C" {
 #endif
 
+#ifndef __STRICT_ANSI__
 #ifndef _TIMEVAL_DEFINED /* also in winsock[2].h */
 #define _TIMEVAL_DEFINED
 struct timeval {
@@ -14,12 +22,14 @@ struct timeval {
 };
 #define timerisset(tvp)         ((tvp)->tv_sec || (tvp)->tv_usec)
 #define timercmp(tvp, uvp, cmp) \
-       (((tvp)->tv_sec != (uvp)->tv_sec) ? \
-       ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
-       ((tvp)->tv_usec cmp (uvp)->tv_usec))
+  (((tvp)->tv_sec != (uvp)->tv_sec) ? \
+  ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
+  ((tvp)->tv_usec cmp (uvp)->tv_usec))
 #define timerclear(tvp)         (tvp)->tv_sec = (tvp)->tv_usec = 0
 #endif /* _TIMEVAL_DEFINED */
 
+#ifndef _TIMEZONE_DEFINED /* also in sys/time.h */
+#define _TIMEZONE_DEFINED
 /* Provided for compatibility with code that assumes that
    the presence of gettimeofday function implies a definition
    of struct timezone. */
@@ -29,6 +39,10 @@ struct timezone
   int tz_dsttime;     /* type of dst correction to apply */
 };
 
+  extern int __cdecl mingw_gettimeofday (struct timeval *p, struct timezone *z);
+
+#endif
+
 /*
    Implementation as per:
    The Open Group Base Specifications, Issue 6
@@ -36,12 +50,20 @@ struct timezone
 
    The timezone pointer arg is ignored.  Errors are ignored.
 */
-int __cdecl __MINGW_NOTHROW gettimeofday(struct timeval *__restrict__,
-                        void *__restrict__  /* tzp (unused) */);
+#ifndef _GETTIMEOFDAY_DEFINED
+#define _GETTIMEOFDAY_DEFINED
+int __cdecl gettimeofday(struct timeval *__restrict__,
+                         void *__restrict__  /* tzp (unused) */);
+#endif
 
-#ifdef __cplusplus
+#endif /* __STRICT_ANSI__ */
+
+#ifdef  __cplusplus
 }
 #endif
 
+/* Adding timespec definition.  */
+#include <sys/timeb.h>
+
 
 #endif /* _SYS_TIME_H_ */
index 72e2fcf..1cf3ce8 100644 (file)
-/*
- * timeb.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Support for the UNIX System V ftime system call.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _TIMEB_H_
+#define _TIMEB_H_
 
-#ifndef        _TIMEB_H_
-#define        _TIMEB_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
-#include <sys/types.h>
 
-#ifndef        RC_INVOKED
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-/*
- * TODO: Structure not tested.
- */
-struct _timeb
-{
-       long    time;
-       short   millitm;
-       short   timezone;
-       short   dstflag;
-};
+#pragma pack(push,_CRT_PACKING)
 
-#ifndef        _NO_OLDNAMES
-/*
- * TODO: Structure not tested.
- */
-struct timeb
-{
-       long    time;
-       short   millitm;
-       short   timezone;
-       short   dstflag;
-};
+#ifdef __cplusplus
+extern "C" {
 #endif
 
-struct __timeb64
-{
-       __time64_t time;
-       short millitm;
-       short timezone;
-       short dstflag;
-};
+#ifndef _CRTIMP
+#define _CRTIMP __declspec(dllimport)
+#endif
 
-#ifdef __cplusplus
-extern "C" {
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#undef _USE_32BIT_TIME_T
+#endif
+#else
+#if _INTEGRAL_MAX_BITS < 64
+#define _USE_32BIT_TIME_T
+#endif
+#endif
+
+#ifndef _TIME32_T_DEFINED
+  typedef long __time32_t;
+#define _TIME32_T_DEFINED
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#if _INTEGRAL_MAX_BITS >= 64
+  typedef __int64 __time64_t;
+#endif
+#define _TIME64_T_DEFINED
 #endif
 
-/* TODO: Not tested. */
-_CRTIMP void __cdecl __MINGW_NOTHROW   _ftime (struct _timeb*);
+#ifndef _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+  typedef __time32_t time_t;
+#else
+  typedef __time64_t time_t;
+#endif
+#define _TIME_T_DEFINED
+#endif
 
-#ifndef        _NO_OLDNAMES
-_CRTIMP void __cdecl __MINGW_NOTHROW   ftime (struct timeb*);
-#endif /* Not _NO_OLDNAMES */
+#ifndef _TIMEB_DEFINED
+#define _TIMEB_DEFINED
 
-/* This requires newer versions of msvcrt.dll (6.10 or higher).  */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP void __cdecl __MINGW_NOTHROW   _ftime64 (struct __timeb64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+  struct __timeb32 {
+    __time32_t time;
+    unsigned short millitm;
+    short timezone;
+    short dstflag;
+  };
 
-#ifdef __cplusplus
+#ifndef        NO_OLDNAMES
+  struct timeb {
+    time_t time;
+    unsigned short millitm;
+    short timezone;
+    short dstflag;
+  };
+#endif
+
+#if _INTEGRAL_MAX_BITS >= 64
+  struct __timeb64 {
+    __time64_t time;
+    unsigned short millitm;
+    short timezone;
+    short dstflag;
+  };
+#endif
+
+#ifdef _USE_32BIT_TIME_T
+#define _timeb __timeb32
+#define _ftime _ftime32
+#else
+#define _timeb __timeb64
+#define _ftime _ftime64
+#endif
+#endif
+
+  _CRTIMP void __cdecl _ftime32(struct __timeb32 *_Time);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP void __cdecl _ftime64(struct __timeb64 *_Time);
+#endif
+
+#ifndef TIMESPEC_DEFINED
+#define TIMESPEC_DEFINED
+struct timespec {
+  time_t  tv_sec;   /* Seconds */
+  long    tv_nsec;  /* Nanoseconds */
+};
+
+struct itimerspec {
+  struct timespec  it_interval;  /* Timer period */
+  struct timespec  it_value;     /* Timer expiration */
+};
+#endif
+
+#if !defined (RC_INVOKED) && !defined (NO_OLDNAMES)
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE void __cdecl ftime(struct timeb *_Tmb) {
+  _ftime32((struct __timeb32 *)_Tmb);
 }
+#else
+__CRT_INLINE void __cdecl ftime(struct timeb *_Tmb) {
+  _ftime64((struct __timeb64 *)_Tmb);
+}
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* Not _TIMEB_H_ */
+#pragma pack(pop)
+
+#include <sec_api/sys/timeb_s.h>
+#endif
index cdd1d6e..a09f28e 100644 (file)
-/*
- * types.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * The definition of constants, data types and global variables.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_TYPES
+#define _INC_TYPES
 
-#ifndef        _TYPES_H_
-#define        _TYPES_H_
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#define __need_wchar_t
-#define __need_size_t
-#define __need_ptrdiff_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-#ifndef RC_INVOKED
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#undef _USE_32BIT_TIME_T
+#define _USE_64BIT_TIME_T
+#endif
+#else
+#if _INTEGRAL_MAX_BITS < 64
+#undef _USE_64BIT_TIME_T
+#define _USE_32BIT_TIME_T
+#endif
+#endif
 
-#ifndef _TIME_T_DEFINED
-typedef        long    time_t;
-#define        _TIME_T_DEFINED
+#ifndef _TIME32_T_DEFINED
+#define _TIME32_T_DEFINED
+typedef long __time32_t;
 #endif
 
 #ifndef _TIME64_T_DEFINED
-typedef __int64 __time64_t;
 #define _TIME64_T_DEFINED
+typedef __int64 __time64_t;
 #endif
 
-#ifndef        _OFF_T_
-#define        _OFF_T_
-typedef long _off_t;
-
-#ifndef        _NO_OLDNAMES
-typedef _off_t off_t;
-#endif
-#endif /* Not _OFF_T_ */
-
-
-#ifndef _DEV_T_
-#define        _DEV_T_
-#ifdef __MSVCRT__
-typedef unsigned int _dev_t;
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+typedef __time32_t time_t;
 #else
-typedef short _dev_t;
+typedef __time64_t time_t;
 #endif
-
-#ifndef        _NO_OLDNAMES
-typedef _dev_t dev_t;
 #endif
-#endif /* Not _DEV_T_ */
-
 
-#ifndef _INO_T_
-#define        _INO_T_
-typedef short _ino_t;
-
-#ifndef        _NO_OLDNAMES
-typedef _ino_t ino_t;
+#ifndef _INO_T_DEFINED
+#define _INO_T_DEFINED
+typedef unsigned short _ino_t;
+#ifndef        NO_OLDNAMES
+typedef unsigned short ino_t;
+#endif
 #endif
-#endif /* Not _INO_T_ */
 
+#ifndef _DEV_T_DEFINED
+#define _DEV_T_DEFINED
+typedef unsigned int _dev_t;
+#ifndef        NO_OLDNAMES
+typedef unsigned int dev_t;
+#endif
+#endif
 
 #ifndef _PID_T_
 #define        _PID_T_
+#ifndef _WIN64
 typedef int    _pid_t;
+#else
+typedef __int64        _pid_t;
+#endif
 
-#ifndef        _NO_OLDNAMES
+#ifndef        NO_OLDNAMES
 typedef _pid_t pid_t;
 #endif
 #endif /* Not _PID_T_ */
 
-
 #ifndef _MODE_T_
 #define        _MODE_T_
 typedef unsigned short _mode_t;
 
-#ifndef        _NO_OLDNAMES
+#ifndef        NO_OLDNAMES
 typedef _mode_t        mode_t;
 #endif
 #endif /* Not _MODE_T_ */
 
-
-#ifndef _SIGSET_T_
-#define        _SIGSET_T_
-typedef int    _sigset_t;
-
-#ifndef        _NO_OLDNAMES
-typedef _sigset_t      sigset_t;
+#ifndef _OFF_T_DEFINED
+#define _OFF_T_DEFINED
+#ifndef _OFF_T_
+#define _OFF_T_
+  typedef long _off_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long off_t;
 #endif
-#endif /* Not _SIGSET_T_ */
-
-#ifndef _SSIZE_T_
-#define _SSIZE_T_
-typedef long _ssize_t;
-
-#ifndef        _NO_OLDNAMES
-# ifndef _SSIZE_T_DEFINED
-#  define _SSIZE_T_DEFINED
-typedef _ssize_t ssize_t;
-# endif
 #endif
-#endif /* Not _SSIZE_T_ */
-
-#ifndef _FPOS64_T_
-#define _FPOS64_T_
-typedef long long fpos64_t;
 #endif
 
-#ifndef _OFF64_T_
-#define _OFF64_T_
-typedef long long off64_t;
+#ifndef _OFF64_T_DEFINED
+#define _OFF64_T_DEFINED
+  typedef long long _off64_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long long off64_t;
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifndef TIMESPEC_DEFINED
+#define TIMESPEC_DEFINED
+struct timespec {
+  time_t  tv_sec;   /* Seconds */
+  long    tv_nsec;  /* Nanoseconds */
+};
+
+struct itimerspec {
+  struct timespec  it_interval;  /* Timer period */
+  struct timespec  it_value;     /* Timer expiration */
+};
+#endif
 
-#endif /* Not _TYPES_H_ */
+#endif
index 39eac4a..31006d3 100644 (file)
@@ -1,6 +1,14 @@
+/**
+ * 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.
+ */
 /*
  * This file is part of the Mingw32 package.
  *
  * unistd.h maps (roughly) to io.h
  */
+#ifndef __STRICT_ANSI__
 #include <io.h>
+#endif
+
index a6b1cd6..4722cb9 100644 (file)
-/*
- * utime.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Support for the utime function.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-#ifndef        _UTIME_H_
-#define        _UTIME_H_
+#ifndef _INC_UTIME
+#define _INC_UTIME
 
-/* All the headers include this file. */
-#include <_mingw.h>
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-#define __need_wchar_t
-#define __need_size_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-#include <sys/types.h>
+#include <_mingw.h>
 
-#ifndef        RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
-/*
- * Structure used by _utime function.
- */
-struct _utimbuf
-{
-       time_t  actime;         /* Access time */
-       time_t  modtime;        /* Modification time */
-};
-
-
-#ifndef        _NO_OLDNAMES
-/* NOTE: Must be the same as _utimbuf above. */
-struct utimbuf
-{
-       time_t  actime;
-       time_t  modtime;
-};
-#endif /* Not _NO_OLDNAMES */
-
-struct __utimbuf64
-{
-       __time64_t actime;
-       __time64_t modtime;
-};
-
-
-#ifdef __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _utime (const char*, struct _utimbuf*);
+#ifndef _CRTIMP
+#define _CRTIMP __declspec(dllimport)
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+  typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#undef _USE_32BIT_TIME_T
+#endif
+#else
+#if _INTEGRAL_MAX_BITS < 64
+#define _USE_32BIT_TIME_T
+#endif
+#endif
+
+#ifndef _TIME32_T_DEFINED
+#define _TIME32_T_DEFINED
+  typedef long __time32_t;
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#define _TIME64_T_DEFINED
+#if _INTEGRAL_MAX_BITS >= 64
+  typedef __int64 __time64_t;
+#endif
+#endif
 
-#ifndef        _NO_OLDNAMES
-_CRTIMP int __cdecl __MINGW_NOTHROW    utime (const char*, struct utimbuf*);
-#endif /* Not _NO_OLDNAMES */
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+  typedef __time32_t time_t;
+#else
+  typedef __time64_t time_t;
+#endif
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _futime (int, struct _utimbuf*);
+#ifndef _UTIMBUF_DEFINED
+#define _UTIMBUF_DEFINED
+
+  struct _utimbuf {
+    time_t actime;
+    time_t modtime;
+  };
+
+  struct __utimbuf32 {
+    __time32_t actime;
+    __time32_t modtime;
+  };
+
+  struct __utimbuf64 {
+    __time64_t actime;
+    __time64_t modtime;
+  };
+
+#ifndef        NO_OLDNAMES
+  struct utimbuf {
+    time_t actime;
+    time_t modtime;
+  };
+
+  struct utimbuf32 {
+    __time32_t actime;
+    __time32_t modtime;
+  };
+#endif
+#endif
 
-/* The wide character version, only available for MSVCRT versions of the
- * C runtime library. */
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wutime (const wchar_t*, struct _utimbuf*);
-#endif /* MSVCRT runtime */
+  _CRTIMP int __cdecl _utime32(const char *_Filename,struct __utimbuf32 *_Time);
+  _CRTIMP int __cdecl _futime32(int _FileDes,struct __utimbuf32 *_Time);
+  _CRTIMP int __cdecl _wutime32(const wchar_t *_Filename,struct __utimbuf32 *_Time);
+  _CRTIMP int __cdecl _utime64(const char *_Filename,struct __utimbuf64 *_Time);
+  _CRTIMP int __cdecl _futime64(int _FileDes,struct __utimbuf64 *_Time);
+  _CRTIMP int __cdecl _wutime64(const wchar_t *_Filename,struct __utimbuf64 *_Time);
 
-/* These require newer versions of msvcrt.dll (6.10 or higher).  */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW    _utime64 (const char*, struct __utimbuf64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wutime64 (const wchar_t*, struct __utimbuf64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _futime64 (int, struct __utimbuf64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+#ifndef RC_INVOKED
+__CRT_INLINE int __cdecl _utime(const char *_Filename,struct _utimbuf *_Utimbuf) {
+  return _utime32(_Filename,(struct __utimbuf32 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _futime(int _Desc,struct _utimbuf *_Utimbuf) {
+  return _futime32(_Desc,(struct __utimbuf32 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _wutime(const wchar_t *_Filename,struct _utimbuf *_Utimbuf) {
+  return _wutime32(_Filename,(struct __utimbuf32 *)_Utimbuf);
+}
+#elif defined(_USE_64BIT_TIME_T)
+__CRT_INLINE int __cdecl _utime(const char *_Filename,struct _utimbuf *_Utimbuf) {
+  return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _futime(int _Desc,struct _utimbuf *_Utimbuf) {
+  return _futime64(_Desc,(struct __utimbuf64 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _wutime(const wchar_t *_Filename,struct _utimbuf *_Utimbuf) {
+  return _wutime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
+}
 
-#ifdef __cplusplus
+#ifndef        NO_OLDNAMES
+#ifndef _WIN64
+__CRT_INLINE int __cdecl utime(const char *_Filename,struct utimbuf *_Utimbuf) {
+  return _utime32(_Filename,(struct __utimbuf32 *)_Utimbuf);
 }
+#else
+__CRT_INLINE int __cdecl utime(const char *_Filename,struct utimbuf *_Utimbuf) {
+  return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
+}
+#endif
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* Not _UTIME_H_ */
+#pragma pack(pop)
+#endif
index 9bcf452..97875c4 100644 (file)
-/*
- * time.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Date and time functions and types.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _TIME_H_
+#define _TIME_H_
 
-#ifndef        _TIME_H_
-#define        _TIME_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#define __need_wchar_t
-#define __need_size_t
-#define __need_NULL
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-/*
- * Number of clock ticks per second. A clock tick is the unit by which
- * processor time is measured and is returned by 'clock'.
- */
-#define        CLOCKS_PER_SEC  ((clock_t)1000)
-#define        CLK_TCK         CLOCKS_PER_SEC
+#pragma pack(push,_CRT_PACKING)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-#ifndef RC_INVOKED
+#ifndef _CRTIMP
+#define _CRTIMP __declspec(dllimport)
+#endif
 
-/*
- * A type for storing the current time and date. This is the number of
- * seconds since midnight Jan 1, 1970.
- * NOTE: This is also defined in non-ISO sys/types.h.
- */
-#ifndef _TIME_T_DEFINED
-typedef        long    time_t;
-#define _TIME_T_DEFINED
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+  typedef unsigned short wchar_t;
+#endif
+
+#ifndef _TIME32_T_DEFINED
+#define _TIME32_T_DEFINED
+  typedef long __time32_t;
 #endif
 
-#ifndef __STRICT_ANSI__
-/* A 64-bit time_t to get to Y3K */
 #ifndef _TIME64_T_DEFINED
-typedef __int64 __time64_t;
 #define _TIME64_T_DEFINED
+#if _INTEGRAL_MAX_BITS >= 64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int _time64_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 __time64_t;
 #endif
 #endif
-/*
- * A type for measuring processor time (in clock ticks).
- */
-#ifndef _CLOCK_T_DEFINED
-typedef        long    clock_t;
-#define _CLOCK_T_DEFINED
 #endif
 
-#ifndef _TM_DEFINED
-/*
- * A structure for storing all kinds of useful information about the
- * current (or another) time.
- */
-struct tm
-{
-       int     tm_sec;         /* Seconds: 0-59 (K&R says 0-61?) */
-       int     tm_min;         /* Minutes: 0-59 */
-       int     tm_hour;        /* Hours since midnight: 0-23 */
-       int     tm_mday;        /* Day of the month: 1-31 */
-       int     tm_mon;         /* Months *since* january: 0-11 */
-       int     tm_year;        /* Years since 1900 */
-       int     tm_wday;        /* Days since Sunday (0-6) */
-       int     tm_yday;        /* Days since Jan. 1: 0-365 */
-       int     tm_isdst;       /* +1 Daylight Savings Time, 0 No DST,
-                                * -1 don't know */
-};
-#define _TM_DEFINED
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+  typedef __time32_t time_t;
+#else
+  typedef __time64_t time_t;
 #endif
-
-#ifdef __cplusplus
-extern "C" {
 #endif
 
-_CRTIMP clock_t __cdecl __MINGW_NOTHROW        clock (void);
-_CRTIMP time_t __cdecl __MINGW_NOTHROW time (time_t*);
-_CRTIMP double __cdecl __MINGW_NOTHROW difftime (time_t, time_t);
-_CRTIMP time_t __cdecl __MINGW_NOTHROW mktime (struct tm*);
-
-/*
- * These functions write to and return pointers to static buffers that may
- * be overwritten by other function calls. Yikes!
- *
- * NOTE: localtime, and perhaps the others of the four functions grouped
- * below may return NULL if their argument is not 'acceptable'. Also note
- * that calling asctime with a NULL pointer will produce an Invalid Page
- * Fault and crap out your program. Guess how I know. Hint: stat called on
- * a directory gives 'invalid' times in st_atime etc...
- */
-_CRTIMP char* __cdecl __MINGW_NOTHROW          asctime (const struct tm*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW          ctime (const time_t*);
-_CRTIMP struct tm*  __cdecl __MINGW_NOTHROW    gmtime (const time_t*);
-_CRTIMP struct tm*  __cdecl __MINGW_NOTHROW    localtime (const time_t*);
-
-_CRTIMP size_t __cdecl __MINGW_NOTHROW         strftime (char*, size_t, const char*, const struct tm*);
-
-#ifndef __STRICT_ANSI__
-
-extern _CRTIMP void __cdecl __MINGW_NOTHROW    _tzset (void);
-
-#ifndef _NO_OLDNAMES
-extern _CRTIMP void __cdecl __MINGW_NOTHROW    tzset (void);
+#ifndef _CLOCK_T_DEFINED
+#define _CLOCK_T_DEFINED
+  typedef long clock_t;
 #endif
 
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strdate(char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW  _strtime(char*);
-
-/* These require newer versions of msvcrt.dll (6.10 or higher). */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP __time64_t __cdecl __MINGW_NOTHROW  _time64( __time64_t*);
-_CRTIMP __time64_t __cdecl __MINGW_NOTHROW  _mktime64 (struct tm*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW _ctime64 (const __time64_t*);
-_CRTIMP struct tm*  __cdecl __MINGW_NOTHROW _gmtime64 (const __time64_t*);
-_CRTIMP struct tm*  __cdecl __MINGW_NOTHROW _localtime64 (const __time64_t*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-
-/*
- * _daylight: non zero if daylight savings time is used.
- * _timezone: difference in seconds between GMT and local time.
- * _tzname: standard/daylight savings time zone names (an array with two
- *          elements).
- */
-#ifdef __MSVCRT__
-
-/* These are for compatibility with pre-VC 5.0 suppied MSVCRT. */
-extern _CRTIMP int* __cdecl __MINGW_NOTHROW    __p__daylight (void);
-extern _CRTIMP long* __cdecl __MINGW_NOTHROW   __p__timezone (void);
-extern _CRTIMP char** __cdecl __MINGW_NOTHROW  __p__tzname (void);
-
-__MINGW_IMPORT int     _daylight;
-__MINGW_IMPORT long    _timezone;
-__MINGW_IMPORT char    *_tzname[2];
-
-#else /* not __MSVCRT (ie. crtdll) */
-
-#ifndef __DECLSPEC_SUPPORTED
-
-extern int*    _imp___daylight_dll;
-extern long*   _imp___timezone_dll;
-extern char**  _imp___tzname;
-
-#define _daylight      (*_imp___daylight_dll)
-#define _timezone      (*_imp___timezone_dll)
-#define _tzname                (*_imp___tzname)
+#ifndef _SIZE_T_DEFINED
+#define _SIZE_T_DEFINED
+#undef size_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef unsigned int size_t __attribute__ ((mode (DI)));
+#else
+  typedef unsigned __int64 size_t;
+#endif
+#else
+  typedef unsigned int size_t;
+#endif
+#endif
 
-#else /* __DECLSPEC_SUPPORTED */
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+#undef ssize_t
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int ssize_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 ssize_t;
+#endif
+#else
+  typedef int ssize_t;
+#endif
+#endif
 
-__MINGW_IMPORT int     _daylight_dll;
-__MINGW_IMPORT long    _timezone_dll;
-__MINGW_IMPORT char*   _tzname[2];
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
 
-#define _daylight      _daylight_dll
-#define _timezone      _timezone_dll
+#ifdef _USE_32BIT_TIME_T
+#define _localtime32 localtime
+#define _difftime32  difftime
+#define _ctime32     ctime
+#define _gmtime32    gmtime
+#define _mktime32    mktime
+#define _time32      _time
+#endif
 
-#endif /* __DECLSPEC_SUPPORTED */
+#ifndef _TM_DEFINED
+#define _TM_DEFINED
+  struct tm {
+    int tm_sec;
+    int tm_min;
+    int tm_hour;
+    int tm_mday;
+    int tm_mon;
+    int tm_year;
+    int tm_wday;
+    int tm_yday;
+    int tm_isdst;
+  };
+#endif
 
-#endif /* not __MSVCRT__ */
+#define CLOCKS_PER_SEC 1000
+
+  _CRTIMP int _daylight;
+  _CRTIMP long _dstbias;
+  _CRTIMP long _timezone;
+  _CRTIMP char * _tzname[2];
+
+  _CRTIMP errno_t __cdecl _get_daylight(int *_Daylight);
+  _CRTIMP errno_t __cdecl _get_dstbias(long *_Daylight_savings_bias);
+  _CRTIMP errno_t __cdecl _get_timezone(long *_Timezone);
+  _CRTIMP errno_t __cdecl _get_tzname(size_t *_ReturnValue,char *_Buffer,size_t _SizeInBytes,int _Index);
+  char *__cdecl asctime(const struct tm *_Tm);
+  _CRTIMP char *__cdecl _ctime32(const __time32_t *_Time);
+  clock_t __cdecl clock(void);
+  _CRTIMP double __cdecl _difftime32(__time32_t _Time1,__time32_t _Time2);
+  _CRTIMP struct tm *__cdecl _gmtime32(const __time32_t *_Time);
+  _CRTIMP struct tm *__cdecl _localtime32(const __time32_t *_Time);
+  size_t __cdecl strftime(char *_Buf,size_t _SizeInBytes,const char *_Format,const struct tm *_Tm);
+  _CRTIMP size_t __cdecl _strftime_l(char *_Buf,size_t _Max_size,const char *_Format,const struct tm *_Tm,_locale_t _Locale);
+  _CRTIMP char *__cdecl _strdate(char *_Buffer);
+  _CRTIMP char *__cdecl _strtime(char *_Buffer);
+  _CRTIMP __time32_t __cdecl _time32(__time32_t *_Time);
+  _CRTIMP __time32_t __cdecl _mktime32(struct tm *_Tm);
+  _CRTIMP __time32_t __cdecl _mkgmtime32(struct tm *_Tm);
+#if defined (_POSIX_) || defined(__GNUC__)
+  void __cdecl tzset(void);
+#else
+  _CRTIMP void __cdecl _tzset(void);
+#endif
 
-#ifndef _NO_OLDNAMES
+  double __cdecl _difftime64(__time64_t _Time1,__time64_t _Time2);
+  _CRTIMP char *__cdecl _ctime64(const __time64_t *_Time);
+  _CRTIMP struct tm *__cdecl _gmtime64(const __time64_t *_Time);
+  _CRTIMP struct tm *__cdecl _localtime64(const __time64_t *_Time);
+  _CRTIMP __time64_t __cdecl _mktime64(struct tm *_Tm);
+  _CRTIMP __time64_t __cdecl _mkgmtime64(struct tm *_Tm);
+  _CRTIMP __time64_t __cdecl _time64(__time64_t *_Time);
+
+  unsigned __cdecl _getsystime(struct tm *_Tm);
+  unsigned __cdecl _setsystime(struct tm *_Tm,unsigned _MilliSec);
+
+#ifndef _SIZE_T_DEFINED
+#define _SIZE_T_DEFINED
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef unsigned int size_t __attribute__ ((mode (DI)));
+#else
+  typedef unsigned __int64 size_t;
+#endif
+#else
+  typedef unsigned long size_t;
+#endif
+#endif
 
-#ifdef __MSVCRT__
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+#ifdef _WIN64
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+  typedef int ssize_t __attribute__ ((mode (DI)));
+#else
+  typedef __int64 ssize_t;
+#endif
+#else
+  typedef long ssize_t;
+#endif
+#endif
 
-/* These go in the oldnames import library for MSVCRT. */
-__MINGW_IMPORT int     daylight;
-__MINGW_IMPORT long    timezone;
-__MINGW_IMPORT char    *tzname[2];
+#ifndef _WTIME_DEFINED
+  _CRTIMP wchar_t *__cdecl _wasctime(const struct tm *_Tm);
+  _CRTIMP wchar_t *__cdecl _wctime32(const __time32_t *_Time);
+  size_t __cdecl wcsftime(wchar_t *_Buf,size_t _SizeInWords,const wchar_t *_Format,const struct tm *_Tm);
+  _CRTIMP size_t __cdecl _wcsftime_l(wchar_t *_Buf,size_t _SizeInWords,const wchar_t *_Format,const struct tm *_Tm,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wstrdate(wchar_t *_Buffer);
+  _CRTIMP wchar_t *__cdecl _wstrtime(wchar_t *_Buffer);
+  _CRTIMP wchar_t *__cdecl _wctime64(const __time64_t *_Time);
+
+#if !defined (RC_INVOKED) && !defined (_INC_WTIME_INL)
+#define _INC_WTIME_INL
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime32(_Time); }
+#else
+__CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime64(_Time); }
+#endif
+#endif
 
-#else /* not __MSVCRT__ */
+#define _WTIME_DEFINED
+#endif
 
-/* CRTDLL is royally messed up when it comes to these macros.
-   TODO: import and alias these via oldnames import library instead
-   of macros.  */
+#ifndef RC_INVOKED
+double __cdecl difftime(time_t _Time1,time_t _Time2);
+char *__cdecl ctime(const time_t *_Time);
+struct tm *__cdecl gmtime(const time_t *_Time);
+struct tm *__cdecl localtime(const time_t *_Time);
+struct tm *__cdecl localtime_r(const time_t *_Time,struct tm *);
+
+time_t __cdecl mktime(struct tm *_Tm);
+time_t __cdecl _mkgmtime(struct tm *_Tm);
+time_t __cdecl time(time_t *_Time);
+
+#ifdef _USE_32BIT_TIME_T
+#if 0
+__CRT_INLINE double __cdecl difftime(time_t _Time1,time_t _Time2) { return _difftime32(_Time1,_Time2); }
+__CRT_INLINE char *__cdecl ctime(const time_t *_Time) { return _ctime32(_Time); }
+__CRT_INLINE struct tm *__cdecl gmtime(const time_t *_Time) { return _gmtime32(_Time); }
+__CRT_INLINE time_t __cdecl mktime(struct tm *_Tm) { return _mktime32(_Tm); }
+__CRT_INLINE time_t __cdecl _mkgmtime(struct tm *_Tm) { return _mkgmtime32(_Tm); }
+__CRT_INLINE time_t __cdecl time(time_t *_Time) { return _time32(_Time); }
+#endif
+#else
+__CRT_INLINE double __cdecl difftime(time_t _Time1,time_t _Time2) { return _difftime64(_Time1,_Time2); }
+__CRT_INLINE char *__cdecl ctime(const time_t *_Time) { return _ctime64(_Time); }
+__CRT_INLINE struct tm *__cdecl gmtime(const time_t *_Time) { return _gmtime64(_Time); }
+__CRT_INLINE struct tm *__cdecl localtime(const time_t *_Time) { return _localtime64(_Time); }
+__CRT_INLINE time_t __cdecl mktime(struct tm *_Tm) { return _mktime64(_Tm); }
+__CRT_INLINE time_t __cdecl _mkgmtime(struct tm *_Tm) { return _mkgmtime64(_Tm); }
+__CRT_INLINE time_t __cdecl time(time_t *_Time) { return _time64(_Time); }
+#endif
+#endif
 
-#define daylight        _daylight
-/* NOTE: timezone not defined as macro because it would conflict with
-   struct timezone in sys/time.h.
-   Also, tzname used to a be macro, but now it's in moldname. */
-__MINGW_IMPORT char    *tzname[2];
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+#define CLK_TCK CLOCKS_PER_SEC
 
-#endif /* not __MSVCRT__ */
+  _CRTIMP extern int daylight;
+  _CRTIMP extern long timezone;
+  _CRTIMP extern char *tzname[2];
+  void __cdecl tzset(void);
+#endif
 
-#endif /* Not _NO_OLDNAMES */
-#endif /* Not __STRICT_ANSI__ */
+#ifndef _TIMEVAL_DEFINED /* also in winsock[2].h */
+#define _TIMEVAL_DEFINED
+struct timeval {
+  long tv_sec;
+  long tv_usec;
+};
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp,uvp,cmp) ((tvp)->tv_sec cmp (uvp)->tv_sec || (tvp)->tv_sec==(uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
+#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
+#endif /* _TIMEVAL_DEFINED */
 
-#ifndef _WTIME_DEFINED
-/* wide function prototypes, also declared in wchar.h */
 #ifndef __STRICT_ANSI__
-#ifdef __MSVCRT__
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wasctime(const struct tm*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wctime(const time_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wstrdate(wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wstrtime(wchar_t*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wctime64 (const __time64_t*);
-#endif
-#endif /*  __MSVCRT__ */
+#ifndef _TIMEZONE_DEFINED /* also in sys/time.h */
+#define _TIMEZONE_DEFINED
+struct timezone {
+  int tz_minuteswest;
+  int tz_dsttime;
+};
+
+  extern int __cdecl mingw_gettimeofday (struct timeval *p, struct timezone *z);
+#endif
 #endif /* __STRICT_ANSI__ */
-_CRTIMP size_t __cdecl __MINGW_NOTHROW         wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
-#define _WTIME_DEFINED
-#endif /* _WTIME_DEFINED */
 
-#ifdef __cplusplus
+#ifdef __cplusplus
 }
 #endif
 
-#endif /* Not RC_INVOKED */
+#pragma pack(pop)
+
+#include <sec_api/time_s.h>
 
-#endif /* Not _TIME_H_ */
+/* Adding timespec definition.  */
+#include <sys/timeb.h>
 
+#endif /* End _TIME_H_ */
 
index 90934a0..6065a91 100644 (file)
@@ -1,11 +1,15 @@
+/**
+ * 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.
+ */
 /*
  * This file is part of the Mingw32 package.
  *
  * unistd.h maps (roughly) to io.h
  */
 
-#ifndef _UNISTD_H
-#define _UNISTD_H
+#ifndef __STRICT_ANSI__
 
 #include <io.h>
 #include <process.h>
 #include <getopt.h>
 #undef __UNISTD_GETOPT__
 
-/* These are also defined in stdio.h. */
-#ifndef        SEEK_SET
-#define SEEK_SET 0
-#endif
-
-#ifndef        SEEK_CUR
-#define SEEK_CUR 1
-#endif
-
-#ifndef SEEK_END
-#define SEEK_END 2
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-
+#ifndef FTRUNCATE_DEFINED
+#define FTRUNCATE_DEFINED
 /* This is defined as a real library function to allow autoconf
    to verify its existence. */
 int ftruncate(int, off_t);
@@ -39,9 +31,10 @@ __CRT_INLINE int ftruncate(int __fd, off_t __length)
 {
   return _chsize (__fd, __length);
 }
+#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* _UNISTD_H */
+#endif 
index 8285f38..bf44bfe 100644 (file)
@@ -1 +1,6 @@
+/**
+ * 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.
+ */
 #include <sys/utime.h>
index 3c3ef35..8a81e9e 100644 (file)
-/*
- * wchar.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Defines of all functions for supporting wide characters. Actually it
- * just includes all those headers, which is not a good thing to do from a
- * processing time point of view, but it does mean that everything will be
- * in sync.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
+#ifndef _INC_WCHAR
+#define _INC_WCHAR
 
-#ifndef        _WCHAR_H_
-#define        _WCHAR_H_
-
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#ifndef RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
-#define __need_size_t
-#define __need_wint_t
-#define __need_wchar_t
-#define __need_NULL
-#include <stddef.h>
-
-#ifndef __VALIST
-#if defined __GNUC__ && __GNUC__ >= 3
-#define __need___va_list
-#include <stdarg.h>
-#define __VALIST __builtin_va_list
-#else
-#define __VALIST char*
-#endif
+#ifdef __cplusplus
+extern "C" {
 #endif
 
-#endif /* Not RC_INVOKED */
-
-/*
- * MSDN says that isw* char classifications are in wchar.h and wctype.h.
- * Although the wctype names are ANSI, their exposure in this header is
- * not.
- */
-#include <wctype.h>
+#define WCHAR_MIN 0
+#define WCHAR_MAX ((wchar_t) -1) /* UINT16_MAX */
 
-#ifndef        __STRICT_ANSI__
-/* This is necessary to support the the non-ANSI wchar declarations
-   here. */
-#include <sys/types.h>
-#endif /* __STRICT_ANSI__ */
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+  typedef __builtin_va_list __gnuc_va_list;
+#endif
 
-#define WCHAR_MIN      0
-#define WCHAR_MAX      0xffff
+#ifndef _VA_LIST_DEFINED
+#define _VA_LIST_DEFINED
+  typedef __gnuc_va_list va_list;
+#endif
 
 #ifndef WEOF
-#define        WEOF    (wchar_t)(0xFFFF)
+#define WEOF (wint_t)(0xFFFF)
 #endif
 
-#ifndef RC_INVOKED
+#ifndef _FILE_DEFINED
+  struct _iobuf {
+    char *_ptr;
+    int _cnt;
+    char *_base;
+    int _flag;
+    int _file;
+    int _charbuf;
+    int _bufsiz;
+    char *_tmpfname;
+  };
+  typedef struct _iobuf FILE;
+#define _FILE_DEFINED
+#endif
 
-#ifdef __cplusplus 
-extern "C" {
+#ifndef _STDIO_DEFINED
+#ifdef _WIN64
+  _CRTIMP FILE *__cdecl __iob_func(void);
+#else
+#ifdef _MSVCRT_
+extern FILE _iob[];    /* A pointer to an array of FILE */
+#define __iob_func()   (_iob)
+#else
+extern FILE (*_imp___iob)[];   /* A pointer to an array of FILE */
+#define __iob_func()   (*_imp___iob)
+#define _iob __iob_func()
+#endif
 #endif
 
-#ifndef _FILE_DEFINED  /* Also in stdio.h */
-#define        _FILE_DEFINED
-typedef struct _iobuf
-{
-       char*   _ptr;
-       int     _cnt;
-       char*   _base;
-       int     _flag;
-       int     _file;
-       int     _charbuf;
-       int     _bufsiz;
-       char*   _tmpfname;
-} FILE;
-#endif /* Not _FILE_DEFINED */
-
-#ifndef _TIME_T_DEFINED  /* Also in time.h */
-typedef long time_t;
-#define _TIME_T_DEFINED
-#endif
-
-#ifndef _TM_DEFINED /* Also in time.h */
-struct tm {
-        int tm_sec;     /* seconds after the minute - [0,59] */
-        int tm_min;     /* minutes after the hour - [0,59] */
-        int tm_hour;    /* hours since midnight - [0,23] */
-        int tm_mday;    /* day of the month - [1,31] */
-        int tm_mon;     /* months since January - [0,11] */
-        int tm_year;    /* years since 1900 */
-        int tm_wday;    /* days since Sunday - [0,6] */
-        int tm_yday;    /* days since January 1 - [0,365] */
-        int tm_isdst;   /* daylight savings time flag */
-        };
-#define _TM_DEFINED
+#define _iob __iob_func()
 #endif
 
-#ifndef _WSTDIO_DEFINED
-/*  Also in stdio.h - keep in sync */
-_CRTIMP int __cdecl __MINGW_NOTHROW    fwprintf (FILE*, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wprintf (const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    swprintf (wchar_t*, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _snwprintf (wchar_t*, size_t, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vfwprintf (FILE*, const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vwprintf (const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    vswprintf (wchar_t*, const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _vsnwprintf (wchar_t*, size_t, const wchar_t*, __VALIST);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fwscanf (FILE*, const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wscanf (const wchar_t*, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    swscanf (const wchar_t*, const wchar_t*, ...);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW fgetwc (FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW fputwc (wchar_t, FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW ungetwc (wchar_t, FILE*);
-
-#ifdef __MSVCRT__ 
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW fgetws (wchar_t*, int, FILE*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    fputws (const wchar_t*, FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW getwc (FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW getwchar (void);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW putwc (wint_t, FILE*);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW putwchar (wint_t);
-#ifndef __STRICT_ANSI__
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _getws (wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _putws (const wchar_t*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfdopen(int, wchar_t *);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfopen (const wchar_t*, const wchar_t*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfreopen (const wchar_t*, const wchar_t*, FILE*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wfsopen (const wchar_t*, const wchar_t*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wtmpnam (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wtempnam (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wrename (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wremove (const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wperror (const wchar_t*);
-_CRTIMP FILE* __cdecl __MINGW_NOTHROW  _wpopen (const wchar_t*, const wchar_t*);
-#endif  /* __STRICT_ANSI__ */
-#endif /* __MSVCRT__ */
+#ifndef _STDSTREAM_DEFINED
+#define stdin (&__iob_func()[0])
+#define stdout (&__iob_func()[1])
+#define stderr (&__iob_func()[2])
+#define _STDSTREAM_DEFINED
+#endif
 
-#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
-int __cdecl __MINGW_NOTHROW snwprintf (wchar_t* s, size_t n, const wchar_t*  format, ...);
-__CRT_INLINE int __cdecl __MINGW_NOTHROW
-vsnwprintf (wchar_t* s, size_t n, const wchar_t* format, __VALIST arg)
-  { return _vsnwprintf ( s, n, format, arg);}
-int __cdecl __MINGW_NOTHROW vwscanf (const wchar_t * __restrict__, __VALIST);
-int __cdecl __MINGW_NOTHROW vfwscanf (FILE * __restrict__,
-                      const wchar_t * __restrict__, __VALIST);
-int __cdecl __MINGW_NOTHROW vswscanf (const wchar_t * __restrict__,
-                      const wchar_t * __restrict__, __VALIST);
+#ifndef _FSIZE_T_DEFINED
+  typedef unsigned long _fsize_t;
+#define _FSIZE_T_DEFINED
 #endif
 
-#define _WSTDIO_DEFINED
-#endif /* _WSTDIO_DEFINED */
-#ifndef _WSTDLIB_DEFINED /* also declared in stdlib.h */
-_CRTIMP long __cdecl __MINGW_NOTHROW   wcstol (const wchar_t*, wchar_t**, int);
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW wcstoul (const wchar_t*, wchar_t**, int);
-_CRTIMP double __cdecl __MINGW_NOTHROW wcstod (const wchar_t*, wchar_t**);
-#if !defined __NO_ISOCEXT /* in libmingwex.a */
-float __cdecl __MINGW_NOTHROW wcstof (const wchar_t * __restrict__, wchar_t ** __restrict__);
-long double __cdecl __MINGW_NOTHROW wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__);
-#endif /* __NO_ISOCEXT */
-#ifdef __MSVCRT__ 
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wgetenv(const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wputenv(const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wsearchenv(const wchar_t*, const wchar_t*, wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wsystem(const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wmakepath(wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*);
-_CRTIMP void __cdecl __MINGW_NOTHROW   _wsplitpath (const wchar_t*, wchar_t*, wchar_t*, wchar_t*, wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wfullpath (wchar_t*, const wchar_t*, size_t);
-#endif
-#define  _WSTDLIB_DEFINED
-#endif /* _WSTDLIB_DEFINED */
+#ifndef _WFINDDATA_T_DEFINED
+  struct _wfinddata32_t {
+    unsigned attrib;
+    __time32_t time_create;
+    __time32_t time_access;
+    __time32_t time_write;
+    _fsize_t size;
+    wchar_t name[260];
+  };
+
+  struct _wfinddata32i64_t {
+    unsigned attrib;
+    __time32_t time_create;
+    __time32_t time_access;
+    __time32_t time_write;
+    __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;
+    __int64 size;
+    wchar_t name[260];
+  };
+
+#if !defined(_WIN64) //defined(_USE_32BIT_TIME_T)
+#define _wfinddata_t _wfinddata32_t
+#define _wfinddatai64_t _wfinddata32i64_t
+
+#define _wfindfirst _wfindfirst32
+#define _wfindnext _wfindnext32
+#define _wfindfirsti64 _wfindfirst32i64
+#define _wfindnexti64 _wfindnext32i64
+#else
+#define _wfinddata_t _wfinddata64i32_t
+#define _wfinddatai64_t _wfinddata64_t
 
-#ifndef _WTIME_DEFINED
-#ifndef __STRICT_ANSI__
-#ifdef __MSVCRT__
-/* wide function prototypes, also declared in time.h */
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wasctime (const struct tm*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wctime (const time_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wstrdate (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wstrtime (wchar_t*);
-#if __MSVCRT_VERSION__ >= 0x601
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW       _wctime64 (const __time64_t*);
-#endif
-#endif /* __MSVCRT__ */
-#endif /* __STRICT_ANSI__ */
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
-#define _WTIME_DEFINED
-#endif /* _WTIME_DEFINED */ 
+#define _wfindfirst _wfindfirst64i32
+#define _wfindnext _wfindnext64i32
+#define _wfindfirsti64 _wfindfirst64
+#define _wfindnexti64 _wfindnext64
+#endif
 
+#define _WFINDDATA_T_DEFINED
+#endif
 
-#ifndef _WSTRING_DEFINED
-/*
- * Unicode versions of the standard string calls.
- * Also in string.h.
- */
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcscat (wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcschr (const wchar_t*, wchar_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcscmp (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcscoll (const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcscpy (wchar_t*, const wchar_t*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcscspn (const wchar_t*, const wchar_t*);
-/* Note:  _wcserror requires __MSVCRT_VERSION__ >= 0x0700.  */
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcslen (const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsncat (wchar_t*, const wchar_t*, size_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsncmp(const wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsncpy(wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcspbrk(const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsrchr(const wchar_t*, wchar_t);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcsspn(const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsstr(const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcstok(wchar_t*, const wchar_t*);
-_CRTIMP size_t __cdecl __MINGW_NOTHROW wcsxfrm(wchar_t*, const wchar_t*, size_t);
-
-#ifndef        __STRICT_ANSI__
-/*
- * Unicode versions of non-ANSI functions provided by CRTDLL.
- */
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
 
-/* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
-#define                _wcscmpi        _wcsicmp
-
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsdup (const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcsicmp (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcsicoll (const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcslwr (wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcsnicmp (const wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsnset (wchar_t*, wchar_t, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsrev (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsset (wchar_t*, wchar_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wcsupr (wchar_t*);
-
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW  _wcsncoll(const wchar_t*, const wchar_t*, size_t);
-_CRTIMP int   __cdecl __MINGW_NOTHROW _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
-#if __MSVCRT_VERSION__ >= 0x0700
-_CRTIMP  wchar_t* __cdecl __MINGW_NOTHROW _wcserror(int);
-_CRTIMP  wchar_t* __cdecl __MINGW_NOTHROW __wcserror(const wchar_t*);
-#endif
-#endif
-
-#ifndef        _NO_OLDNAMES
-/* NOTE: There is no _wcscmpi, but this is for compatibility. */
-__CRT_INLINE int __cdecl __MINGW_NOTHROW
-wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2)
-  {return _wcsicmp (__ws1, __ws2);}
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsdup (const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsicmp (const wchar_t*, const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsicoll (const wchar_t*, const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcslwr (wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    wcsnicmp (const wchar_t*, const wchar_t*, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsnset (wchar_t*, wchar_t, size_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsrev (wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsset (wchar_t*, wchar_t);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW wcsupr (wchar_t*);
-#endif /* Not _NO_OLDNAMES */
-
-#endif /* Not strict ANSI */
+#ifndef _CONST_RETURN
+#define _CONST_RETURN
+#endif
 
-#define _WSTRING_DEFINED
-#endif  /* _WSTRING_DEFINED */
-
-/* These are resolved by -lmingwex. Alternatively, they can be resolved by
-   adding -lmsvcp60 to your command line, which will give you the VC++
-   versions of these functions. If you want the latter and don't have
-   msvcp60.dll in your windows system directory, you can easily obtain
-   it with a search from your favorite search engine.  */
-#ifndef __STRICT_ANSI__
-typedef wchar_t _Wint_t;
-#endif
-
-typedef int mbstate_t;
-
-wint_t __cdecl __MINGW_NOTHROW btowc(int);
-size_t __cdecl __MINGW_NOTHROW mbrlen(const char * __restrict__, size_t,
-                     mbstate_t * __restrict__);
-size_t __cdecl __MINGW_NOTHROW mbrtowc(wchar_t * __restrict__, const char * __restrict__,
-                      size_t, mbstate_t * __restrict__);
-size_t __cdecl __MINGW_NOTHROW mbsrtowcs(wchar_t * __restrict__, const char ** __restrict__,
-                        size_t, mbstate_t * __restrict__);
-size_t __cdecl __MINGW_NOTHROW wcrtomb(char * __restrict__, wchar_t,
-                      mbstate_t * __restrict__);
-size_t __cdecl __MINGW_NOTHROW wcsrtombs(char * __restrict__, const wchar_t ** __restrict__,
-                        size_t, mbstate_t * __restrict__);
-int __cdecl __MINGW_NOTHROW wctob(wint_t);
+#define _WConst_return _CONST_RETURN
 
-#ifndef __NO_ISOCEXT /* these need static lib libmingwex.a */
-__CRT_INLINE int __cdecl __MINGW_NOTHROW fwide(FILE* __UNUSED_PARAM(stream),
-                              int __UNUSED_PARAM(mode))
-  {return -1;} /* limited to byte orientation */ 
-__CRT_INLINE int __cdecl __MINGW_NOTHROW mbsinit(const mbstate_t* __UNUSED_PARAM(ps))
-  {return 1;}
-wchar_t* __cdecl __MINGW_NOTHROW wmemset(wchar_t *, wchar_t, size_t);
-wchar_t* __cdecl __MINGW_NOTHROW wmemchr(const wchar_t*, wchar_t, size_t);
-int wmemcmp(const wchar_t*, const wchar_t *, size_t);
-wchar_t* __cdecl __MINGW_NOTHROW wmemcpy(wchar_t* __restrict__,
-                        const wchar_t* __restrict__,
-                        size_t);
-wchar_t* __cdecl __MINGW_NOTHROW wmemmove(wchar_t* s1, const wchar_t *, size_t);
-long long __cdecl __MINGW_NOTHROW wcstoll(const wchar_t * __restrict__,
-                         wchar_t** __restrict__, int);
-unsigned long long __cdecl __MINGW_NOTHROW wcstoull(const wchar_t * __restrict__,
-                           wchar_t ** __restrict__, int);
-#endif /* __NO_ISOCEXT */
+#ifndef _CRT_CTYPEDATA_DEFINED
+#define _CRT_CTYPEDATA_DEFINED
+#ifndef _CTYPE_DISABLE_MACROS
 
-#ifndef        __STRICT_ANSI__
-/* non-ANSI wide char functions from io.h, direct.h, sys/stat.h and locale.h.  */
+#ifndef __PCTYPE_FUNC
+#define __PCTYPE_FUNC __pctype_func()
+#ifdef _MSVCRT_
+#define __pctype_func() (_pctype)
+#else
+#define __pctype_func() (*_imp___pctype)
+#endif
+#endif
 
-#ifndef        _FSIZE_T_DEFINED
-typedef        unsigned long   _fsize_t;
-#define _FSIZE_T_DEFINED
+#ifndef _pctype
+#ifdef _MSVCRT_
+  extern unsigned short *_pctype;
+#else
+  extern unsigned short **_imp___pctype;
+#define _pctype (*_imp___pctype)
+#endif
+#endif
+#endif
 #endif
 
-#ifndef _WFINDDATA_T_DEFINED
-struct _wfinddata_t {
-       unsigned        attrib;
-       time_t          time_create;    /* -1 for FAT file systems */
-       time_t          time_access;    /* -1 for FAT file systems */
-       time_t          time_write;
-       _fsize_t        size;
-       wchar_t         name[260];      /* may include spaces. */
-};
-struct _wfinddatai64_t {
-       unsigned    attrib;
-       time_t      time_create;
-       time_t      time_access;
-       time_t      time_write;
-       __int64     size;
-       wchar_t     name[260];
-};
-struct __wfinddata64_t {
-        unsigned    attrib;
-        __time64_t  time_create;    
-        __time64_t  time_access;
-        __time64_t  time_write;
-        _fsize_t    size;
-        wchar_t     name[260];
-};
-#define _WFINDDATA_T_DEFINED
+#ifndef _CRT_WCTYPEDATA_DEFINED
+#define _CRT_WCTYPEDATA_DEFINED
+#ifndef _CTYPE_DISABLE_MACROS
+#ifndef _wctype
+#ifdef _MSVCRT_
+  extern unsigned short *_wctype;
+#else
+  extern unsigned short **_imp___wctype;
+#define _wctype (*_imp___wctype)
+#endif
 #endif
 
-/* Wide character versions. Also defined in io.h. */
-/* CHECK: I believe these only exist in MSVCRT, and not in CRTDLL. Also
-   applies to other wide character versions? */
-#if !defined (_WIO_DEFINED)
-#if defined (__MSVCRT__)
-#include <stdint.h>  /* For intptr_t.  */
-_CRTIMP int __cdecl __MINGW_NOTHROW    _waccess (const wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wchmod (const wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wcreat (const wchar_t*, int);
-_CRTIMP long __cdecl __MINGW_NOTHROW   _wfindfirst (const wchar_t*, struct _wfinddata_t *);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wfindnext (long, struct _wfinddata_t *);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wunlink (const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wopen (const wchar_t*, int, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wsopen (const wchar_t*, int, int, ...);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wmktemp (wchar_t*);
-_CRTIMP long __cdecl __MINGW_NOTHROW   _wfindfirsti64 (const wchar_t*, struct _wfinddatai64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wfindnexti64 (long, struct _wfinddatai64_t*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst64(const wchar_t*, struct __wfinddata64_t*); 
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindnext64(intptr_t, struct __wfinddata64_t*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-#endif /* defined (__MSVCRT__) */
-#define _WIO_DEFINED
-#endif /* _WIO_DEFINED */
+#ifdef _MSVCRT_
+#define __pwctype_func() (_pwctype)
+#else
+#define __pwctype_func() (*_imp___pwctype)
+#endif
+
+#ifndef _pwctype
+#ifdef _MSVCRT_
+  extern unsigned short *_pwctype;
+#else
+  extern unsigned short **_imp___pwctype;
+#define _pwctype (*_imp___pwctype)
+#endif
+#endif
+
+#endif
+#endif
+
+#define _UPPER 0x1
+#define _LOWER 0x2
+#define _DIGIT 0x4
+#define _SPACE 0x8
+
+#define _PUNCT 0x10
+#define _CONTROL 0x20
+#define _BLANK 0x40
+#define _HEX 0x80
+
+#define _LEADBYTE 0x8000
+#define _ALPHA (0x0100|_UPPER|_LOWER)
+
+#ifndef _WCTYPE_DEFINED
+#define _WCTYPE_DEFINED
+
+  int __cdecl iswalpha(wint_t _C);
+  _CRTIMP int __cdecl _iswalpha_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswupper(wint_t _C);
+  _CRTIMP int __cdecl _iswupper_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswlower(wint_t _C);
+  _CRTIMP int __cdecl _iswlower_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswdigit(wint_t _C);
+  _CRTIMP int __cdecl _iswdigit_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswxdigit(wint_t _C);
+  _CRTIMP int __cdecl _iswxdigit_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswspace(wint_t _C);
+  _CRTIMP int __cdecl _iswspace_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswpunct(wint_t _C);
+  _CRTIMP int __cdecl _iswpunct_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswalnum(wint_t _C);
+  _CRTIMP int __cdecl _iswalnum_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswprint(wint_t _C);
+  _CRTIMP int __cdecl _iswprint_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswgraph(wint_t _C);
+  _CRTIMP int __cdecl _iswgraph_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswcntrl(wint_t _C);
+  _CRTIMP int __cdecl _iswcntrl_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswascii(wint_t _C);
+  int __cdecl isleadbyte(int _C);
+  _CRTIMP int __cdecl _isleadbyte_l(int _C,_locale_t _Locale);
+  wint_t __cdecl towupper(wint_t _C);
+  _CRTIMP wint_t __cdecl _towupper_l(wint_t _C,_locale_t _Locale);
+  wint_t __cdecl towlower(wint_t _C);
+  _CRTIMP wint_t __cdecl _towlower_l(wint_t _C,_locale_t _Locale);
+  int __cdecl iswctype(wint_t _C,wctype_t _Type);
+  _CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
+  _CRTIMP int __cdecl __iswcsymf(wint_t _C);
+  _CRTIMP int __cdecl _iswcsymf_l(wint_t _C,_locale_t _Locale);
+  _CRTIMP int __cdecl __iswcsym(wint_t _C);
+  _CRTIMP int __cdecl _iswcsym_l(wint_t _C,_locale_t _Locale);
+  int __cdecl is_wctype(wint_t _C,wctype_t _Type);
+#endif
 
 #ifndef _WDIRECT_DEFINED
-/* Also in direct.h */
-#ifdef __MSVCRT__ 
-_CRTIMP int __cdecl __MINGW_NOTHROW      _wchdir (const wchar_t*);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW  _wgetcwd (wchar_t*, int);
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW  _wgetdcwd (int, wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW      _wmkdir (const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW      _wrmdir (const wchar_t*);
-#endif /* __MSVCRT__ */
 #define _WDIRECT_DEFINED
-#endif /* _WDIRECT_DEFINED */
+
+  _CRTIMP wchar_t *__cdecl _wgetcwd(wchar_t *_DstBuf,int _SizeInWords);
+  _CRTIMP wchar_t *__cdecl _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
+  wchar_t *__cdecl _wgetdcwd_nolock(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
+  _CRTIMP int __cdecl _wchdir(const wchar_t *_Path);
+  _CRTIMP int __cdecl _wmkdir(const wchar_t *_Path);
+  _CRTIMP int __cdecl _wrmdir(const wchar_t *_Path);
+#endif
+
+#ifndef _WIO_DEFINED
+#define _WIO_DEFINED
+
+  _CRTIMP int __cdecl _waccess(const wchar_t *_Filename,int _AccessMode);
+  _CRTIMP int __cdecl _wchmod(const wchar_t *_Filename,int _Mode);
+  _CRTIMP int __cdecl _wcreat(const wchar_t *_Filename,int _PermissionMode);
+  _CRTIMP intptr_t __cdecl _wfindfirst32(const wchar_t *_Filename,struct _wfinddata32_t *_FindData);
+  _CRTIMP int __cdecl _wfindnext32(intptr_t _FindHandle,struct _wfinddata32_t *_FindData);
+  _CRTIMP int __cdecl _wunlink(const wchar_t *_Filename);
+  _CRTIMP int __cdecl _wrename(const wchar_t *_NewFilename,const wchar_t *_OldFilename);
+  _CRTIMP wchar_t *__cdecl _wmktemp(wchar_t *_TemplateName);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP intptr_t __cdecl _wfindfirst32i64(const wchar_t *_Filename,struct _wfinddata32i64_t *_FindData);
+  intptr_t __cdecl _wfindfirst64i32(const wchar_t *_Filename,struct _wfinddata64i32_t *_FindData);
+  _CRTIMP intptr_t __cdecl _wfindfirst64(const wchar_t *_Filename,struct _wfinddata64_t *_FindData);
+  _CRTIMP int __cdecl _wfindnext32i64(intptr_t _FindHandle,struct _wfinddata32i64_t *_FindData);
+  int __cdecl _wfindnext64i32(intptr_t _FindHandle,struct _wfinddata64i32_t *_FindData);
+  _CRTIMP int __cdecl _wfindnext64(intptr_t _FindHandle,struct _wfinddata64_t *_FindData);
+#endif
+  _CRTIMP errno_t __cdecl _wsopen_s(int *_FileHandle,const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,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
+
+#ifndef _WLOCALE_DEFINED
+#define _WLOCALE_DEFINED
+  _CRTIMP wchar_t *__cdecl _wsetlocale(int _Category,const wchar_t *_Locale);
+#endif
+
+#ifndef _WPROCESS_DEFINED
+#define _WPROCESS_DEFINED
+
+  _CRTIMP intptr_t __cdecl _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+  _CRTIMP intptr_t __cdecl _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+  _CRTIMP intptr_t __cdecl _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
+  _CRTIMP intptr_t __cdecl _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+  _CRTIMP intptr_t __cdecl _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
+  _CRTIMP intptr_t __cdecl _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
+#ifndef _CRT_WSYSTEM_DEFINED
+#define _CRT_WSYSTEM_DEFINED
+  _CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
+#endif
+#endif
+
+#ifndef _WCTYPE_INLINE_DEFINED
+#undef _CRT_WCTYPE_NOINLINE
+#if !defined(__cplusplus) || defined(_CRT_WCTYPE_NOINLINE)
+#define iswalpha(_c) (iswctype(_c,_ALPHA))
+#define iswupper(_c) (iswctype(_c,_UPPER))
+#define iswlower(_c) (iswctype(_c,_LOWER))
+#define iswdigit(_c) (iswctype(_c,_DIGIT))
+#define iswxdigit(_c) (iswctype(_c,_HEX))
+#define iswspace(_c) (iswctype(_c,_SPACE))
+#define iswpunct(_c) (iswctype(_c,_PUNCT))
+#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
+#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
+#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
+#define iswcntrl(_c) (iswctype(_c,_CONTROL))
+#define iswascii(_c) ((unsigned)(_c) < 0x80)
+
+#define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
+#define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
+#define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
+#define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
+#define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
+#define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
+#define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
+#define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
+#define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
+#define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
+#define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
+#ifndef _CTYPE_DISABLE_MACROS
+#define isleadbyte(_c) (__PCTYPE_FUNC[(unsigned char)(_c)] & _LEADBYTE)
+#endif
+#endif
+#define _WCTYPE_INLINE_DEFINED
+#endif
+
+#if !defined(_POSIX_) || defined(__GNUC__)
+#ifndef _INO_T_DEFINED
+#define _INO_T_DEFINED
+  typedef unsigned short _ino_t;
+#ifndef        NO_OLDNAMES
+  typedef unsigned short ino_t;
+#endif
+#endif
+
+#ifndef _DEV_T_DEFINED
+#define _DEV_T_DEFINED
+  typedef unsigned int _dev_t;
+#ifndef        NO_OLDNAMES
+  typedef unsigned int dev_t;
+#endif
+#endif
+
+#ifndef _OFF_T_DEFINED
+#define _OFF_T_DEFINED
+#ifndef _OFF_T_
+#define _OFF_T_
+  typedef long _off_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long off_t;
+#endif
+#endif
+#endif
+
+#ifndef _OFF64_T_DEFINED
+#define _OFF64_T_DEFINED
+  typedef long long _off64_t;
+#if !defined(NO_OLDNAMES) || defined(_POSIX)
+  typedef long long off64_t;
+#endif
+#endif
 
 #ifndef _STAT_DEFINED
-/*
- * The structure manipulated and returned by stat and fstat.
- *
- * NOTE: If called on a directory the values in the time fields are not only
- * invalid, they will cause localtime et. al. to return NULL. And calling
- * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
- */
-struct _stat
-{
-       _dev_t  st_dev;         /* Equivalent to drive number 0=A 1=B ... */
-       _ino_t  st_ino;         /* Always zero ? */
-       _mode_t st_mode;        /* See above constants */
-       short   st_nlink;       /* Number of links. */
-       short   st_uid;         /* User: Maybe significant on NT ? */
-       short   st_gid;         /* Group: Ditto */
-       _dev_t  st_rdev;        /* Seems useless (not even filled in) */
-       _off_t  st_size;        /* File size in bytes */
-       time_t  st_atime;       /* Accessed date (always 00:00 hrs local
-                                * on FAT) */
-       time_t  st_mtime;       /* Modified time */
-       time_t  st_ctime;       /* Creation time */
-};
-
-#ifndef        _NO_OLDNAMES
-/* NOTE: Must be the same as _stat above. */
-struct stat
-{
-       _dev_t  st_dev;         /* Equivalent to drive number 0=A 1=B ... */
-       _ino_t  st_ino;         /* Always zero ? */
-       _mode_t st_mode;        /* See above constants */
-       short   st_nlink;       /* Number of links. */
-       short   st_uid;         /* User: Maybe significant on NT ? */
-       short   st_gid;         /* Group: Ditto */
-       _dev_t  st_rdev;        /* Seems useless (not even filled in) */
-       _off_t  st_size;        /* File size in bytes */
-       time_t  st_atime;       /* Accessed date (always 00:00 hrs local
-                                * on FAT) */
-       time_t  st_mtime;       /* Modified time */
-       time_t  st_ctime;       /* Creation time */
-};
-#endif /* _NO_OLDNAMES */
-
-#if defined (__MSVCRT__)
-struct _stati64 {
+#define _STAT_DEFINED
+
+#ifdef _USE_32BIT_TIME_T
+#ifdef WIN64
+#define _fstat _fstat32
+#define _stat _stat32
+#define _wstat _wstat32
+#else
+#define _fstat32 _fstat
+#define _stat32 _stat
+#define _wstat32 _wstat
+#endif
+#define _fstati64 _fstat32i64
+#define _stati64 _stat32i64
+#define _wstati64 _wstat32i64
+#else
+#define _fstat _fstat64i32
+#define _fstati64 _fstat64
+#define _stat _stat64i32
+#define _stati64 _stat64
+#define _wstat _wstat64i32
+#define _wstati64 _wstat64
+#endif
+
+  struct _stat32 {
     _dev_t st_dev;
     _ino_t st_ino;
     unsigned short st_mode;
@@ -429,55 +428,446 @@ struct _stati64 {
     short st_uid;
     short st_gid;
     _dev_t st_rdev;
-    __int64 st_size;
+    _off_t st_size;
+    __time32_t st_atime;
+    __time32_t st_mtime;
+    __time32_t st_ctime;
+  };
+
+#ifndef        NO_OLDNAMES
+  struct stat {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    _off_t st_size;
     time_t st_atime;
     time_t st_mtime;
     time_t st_ctime;
-    };
+  };
+#endif
 
-struct __stat64
-{
+#if _INTEGRAL_MAX_BITS >= 64
+
+  struct _stat32i64 {
     _dev_t st_dev;
     _ino_t st_ino;
-    _mode_t st_mode;
+    unsigned short st_mode;
     short st_nlink;
     short st_uid;
     short st_gid;
     _dev_t st_rdev;
     __int64 st_size;
+    __time32_t st_atime;
+    __time32_t st_mtime;
+    __time32_t st_ctime;
+  };
+
+  struct _stat64i32 {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    _off_t st_size;
     __time64_t st_atime;
     __time64_t st_mtime;
     __time64_t st_ctime;
-};
-#endif  /* __MSVCRT__ */
-#define _STAT_DEFINED
-#endif /* _STAT_DEFINED */
-
-#if !defined ( _WSTAT_DEFINED)
-/* also declared in sys/stat.h */
-#if defined __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wstat (const wchar_t*, struct _stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wstati64 (const wchar_t*, struct _stati64*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW _wstat64 (const wchar_t*, struct __stat64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-#endif  /* __MSVCRT__ */
+  };
+
+  struct _stat64 {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    __int64 st_size;
+    __time64_t st_atime;
+    __time64_t st_mtime;
+    __time64_t st_ctime;
+  };
+#endif
+
+#define __stat64 _stat64
+
+#endif
+
+#ifndef _WSTAT_DEFINED
 #define _WSTAT_DEFINED
-#endif /* ! _WSTAT_DEFIND  */
 
-#ifndef _WLOCALE_DEFINED  /* also declared in locale.h */
-_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wsetlocale (int, const wchar_t*);
-#define _WLOCALE_DEFINED
+  _CRTIMP int __cdecl _wstat32(const wchar_t *_Name,struct _stat32 *_Stat);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP int __cdecl _wstat32i64(const wchar_t *_Name,struct _stat32i64 *_Stat);
+  int __cdecl _wstat64i32(const wchar_t *_Name,struct _stat64i32 *_Stat);
+  _CRTIMP int __cdecl _wstat64(const wchar_t *_Name,struct _stat64 *_Stat);
+#endif
+#endif
 #endif
 
-#endif /* not __STRICT_ANSI__ */
+#ifndef _WCONIO_DEFINED
+#define _WCONIO_DEFINED
 
-#ifdef __cplusplus
-}      /* end of extern "C" */
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
+
+  _CRTIMP wchar_t *_cgetws(wchar_t *_Buffer);
+  _CRTIMP wint_t __cdecl _getwch(void);
+  _CRTIMP wint_t __cdecl _getwche(void);
+  _CRTIMP wint_t __cdecl _putwch(wchar_t _WCh);
+  _CRTIMP wint_t __cdecl _ungetwch(wint_t _WCh);
+  _CRTIMP int __cdecl _cputws(const wchar_t *_String);
+  _CRTIMP int __cdecl _cwprintf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vcwprintf_p(const wchar_t *_Format,va_list _ArgList);
+
+  _CRTIMP int __cdecl _cwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  wint_t __cdecl _putwch_nolock(wchar_t _WCh);
+  wint_t __cdecl _getwch_nolock(void);
+  wint_t __cdecl _getwche_nolock(void);
+  wint_t __cdecl _ungetwch_nolock(wint_t _WCh);
+#endif
+
+#ifndef _WSTDIO_DEFINED
+#define _WSTDIO_DEFINED
+
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
+
+#ifdef _POSIX_
+  _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode);
+#else
+  _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode,int _ShFlag);
 #endif
 
-#endif /* Not RC_INVOKED */
+  wint_t __cdecl fgetwc(FILE *_File);
+  _CRTIMP wint_t __cdecl _fgetwchar(void);
+  wint_t __cdecl fputwc(wchar_t _Ch,FILE *_File);
+  _CRTIMP wint_t __cdecl _fputwchar(wchar_t _Ch);
+  wint_t __cdecl getwc(FILE *_File);
+  wint_t __cdecl getwchar(void);
+  wint_t __cdecl putwc(wchar_t _Ch,FILE *_File);
+  wint_t __cdecl putwchar(wchar_t _Ch);
+  wint_t __cdecl ungetwc(wint_t _Ch,FILE *_File);
+  wchar_t *__cdecl fgetws(wchar_t *_Dst,int _SizeInWords,FILE *_File);
+  int __cdecl fputws(const wchar_t *_Str,FILE *_File);
+  _CRTIMP wchar_t *__cdecl _getws(wchar_t *_String);
+  _CRTIMP int __cdecl _putws(const wchar_t *_Str);
+  int __cdecl fwprintf(FILE *_File,const wchar_t *_Format,...);
+  int __cdecl wprintf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _scwprintf(const wchar_t *_Format,...);
+  int __cdecl vfwprintf(FILE *_File,const wchar_t *_Format,va_list _ArgList);
+  int __cdecl vwprintf(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl swprintf(wchar_t*, const wchar_t*, ...);
+  _CRTIMP int __cdecl vswprintf(wchar_t*, const wchar_t*,va_list);
+  _CRTIMP int __cdecl _swprintf_c(wchar_t *_DstBuf,size_t _SizeInWords,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vswprintf_c(wchar_t *_DstBuf,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,va_list _Args);
+#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+  int __cdecl snwprintf (wchar_t *s, size_t n, const wchar_t * format, ...);
+  __CRT_INLINE int __cdecl vsnwprintf (wchar_t *s, size_t n, const wchar_t *format, va_list arg) { return _vsnwprintf(s,n,format,arg); }
+  int __cdecl vwscanf (const wchar_t *, va_list);
+  int __cdecl vfwscanf (FILE *,const wchar_t *,va_list);
+  int __cdecl vswscanf (const wchar_t *,const wchar_t *,va_list);
+#endif
+  _CRTIMP int __cdecl _fwprintf_p(FILE *_File,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _wprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vfwprintf_p(FILE *_File,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _vwprintf_p(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vswprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _scwprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vscwprintf_p(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _wprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _wprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _fwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _fwprintf_p_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vfwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vfwprintf_p_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _swprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vswprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _vswprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _scwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _scwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vscwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _snwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vsnwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _swprintf(wchar_t *_Dest,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vswprintf(wchar_t *_Dest,const wchar_t *_Format,va_list _Args);
+  _CRTIMP int __cdecl __swprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,...);
+  _CRTIMP int __cdecl __vswprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,va_list _Args);
+#ifndef RC_INVOKED
+#include <vadefs.h>
+#endif
+
+#ifdef _CRT_NON_CONFORMING_SWPRINTFS
+#ifndef __cplusplus
+#define swprintf _swprintf
+#define vswprintf _vswprintf
+#define _swprintf_l __swprintf_l
+#define _vswprintf_l __vswprintf_l
+#endif
+#endif
 
-#endif /* not _WCHAR_H_ */
+  _CRTIMP wchar_t *__cdecl _wtempnam(const wchar_t *_Directory,const wchar_t *_FilePrefix);
+  _CRTIMP int __cdecl _vscwprintf(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _vscwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  int __cdecl fwscanf(FILE *_File,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _fwscanf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
+  int __cdecl swscanf(const wchar_t *_Src,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _swscanf_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _snwscanf(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _snwscanf_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+  int __cdecl wscanf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _wscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP FILE *__cdecl _wfdopen(int _FileHandle ,const wchar_t *_Mode);
+  _CRTIMP FILE *__cdecl _wfopen(const wchar_t *_Filename,const wchar_t *_Mode);
+  _CRTIMP FILE *__cdecl _wfreopen(const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
+
+#ifndef _CRT_WPERROR_DEFINED
+#define _CRT_WPERROR_DEFINED
+  _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
+#endif
+  _CRTIMP FILE *__cdecl _wpopen(const wchar_t *_Command,const wchar_t *_Mode);
+#if !defined(NO_OLDNAMES) && !defined(wpopen)
+#define wpopen _wpopen
+#endif
+  _CRTIMP int __cdecl _wremove(const wchar_t *_Filename);
+  _CRTIMP wchar_t *__cdecl _wtmpnam(wchar_t *_Buffer);
+  _CRTIMP wint_t __cdecl _fgetwc_nolock(FILE *_File);
+  _CRTIMP wint_t __cdecl _fputwc_nolock(wchar_t _Ch,FILE *_File);
+  _CRTIMP wint_t __cdecl _ungetwc_nolock(wint_t _Ch,FILE *_File);
 
+#undef _CRT_GETPUTWCHAR_NOINLINE
+
+#if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE)
+#define getwchar() fgetwc(stdin)
+#define putwchar(_c) fputwc((_c),stdout)
+#else
+  __CRT_INLINE wint_t __cdecl getwchar() {return (fgetwc(stdin)); }
+  __CRT_INLINE wint_t __cdecl putwchar(wchar_t _C) {return (fputwc(_C,stdout)); }
+#endif
+
+#define getwc(_stm) fgetwc(_stm)
+#define putwc(_c,_stm) fputwc(_c,_stm)
+#define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
+#define _getwc_nolock(_c) _fgetwc_nolock(_c)
+#endif
 
+#ifndef _WSTDLIB_DEFINED
+#define _WSTDLIB_DEFINED
+
+  _CRTIMP wchar_t *__cdecl _itow(int _Value,wchar_t *_Dest,int _Radix);
+  _CRTIMP wchar_t *__cdecl _ltow(long _Value,wchar_t *_Dest,int _Radix);
+  _CRTIMP wchar_t *__cdecl _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix);
+  double __cdecl wcstod(const wchar_t *_Str,wchar_t **_EndPtr);
+  _CRTIMP double __cdecl _wcstod_l(const wchar_t *_Str,wchar_t **_EndPtr,_locale_t _Locale);
+  float __cdecl wcstof( const wchar_t *nptr, wchar_t **endptr);
+#if !defined __NO_ISOCEXT /* in libmingwex.a */
+  float __cdecl wcstof (const wchar_t * __restrict__, wchar_t ** __restrict__);
+  long double __cdecl wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__);
+#endif /* __NO_ISOCEXT */
+  long __cdecl wcstol(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP long __cdecl _wcstol_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+  unsigned long __cdecl wcstoul(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP unsigned long __cdecl _wcstoul_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wgetenv(const wchar_t *_VarName);
+#ifndef _CRT_WSYSTEM_DEFINED
+#define _CRT_WSYSTEM_DEFINED
+  _CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
+#endif
+  _CRTIMP double __cdecl _wtof(const wchar_t *_Str);
+  _CRTIMP double __cdecl _wtof_l(const wchar_t *_Str,_locale_t _Locale);
+  _CRTIMP int __cdecl _wtoi(const wchar_t *_Str);
+  _CRTIMP int __cdecl _wtoi_l(const wchar_t *_Str,_locale_t _Locale);
+  _CRTIMP long __cdecl _wtol(const wchar_t *_Str);
+  _CRTIMP long __cdecl _wtol_l(const wchar_t *_Str,_locale_t _Locale);
+
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix);
+  _CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
+  _CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
+  _CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
+  _CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+  _CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
+  _CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
+#endif
+#endif
+
+#ifndef _POSIX_
+#ifndef _WSTDLIBP_DEFINED
+#define _WSTDLIBP_DEFINED
+  _CRTIMP wchar_t *__cdecl _wfullpath(wchar_t *_FullPath,const wchar_t *_Path,size_t _SizeInWords);
+  _CRTIMP void __cdecl _wmakepath(wchar_t *_ResultPath,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
+#ifndef _CRT_WPERROR_DEFINED
+#define _CRT_WPERROR_DEFINED
+  _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
+#endif
+  _CRTIMP int __cdecl _wputenv(const wchar_t *_EnvString);
+  _CRTIMP void __cdecl _wsearchenv(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath);
+  _CRTIMP void __cdecl _wsplitpath(const wchar_t *_FullPath,wchar_t *_Drive,wchar_t *_Dir,wchar_t *_Filename,wchar_t *_Ext);
+#endif
+#endif
+
+#ifndef _WSTRING_DEFINED
+#define _WSTRING_DEFINED
+  _CRTIMP wchar_t *__cdecl _wcsdup(const wchar_t *_Str);
+  wchar_t *__cdecl wcscat(wchar_t *_Dest,const wchar_t *_Source);
+  _CONST_RETURN wchar_t *__cdecl wcschr(const wchar_t *_Str,wchar_t _Ch);
+  int __cdecl wcscmp(const wchar_t *_Str1,const wchar_t *_Str2);
+  wchar_t *__cdecl wcscpy(wchar_t *_Dest,const wchar_t *_Source);
+  size_t __cdecl wcscspn(const wchar_t *_Str,const wchar_t *_Control);
+  size_t __cdecl wcslen(const wchar_t *_Str);
+  size_t __cdecl wcsnlen(const wchar_t *_Src,size_t _MaxCount);
+  wchar_t *__cdecl wcsncat(wchar_t *_Dest,const wchar_t *_Source,size_t _Count);
+  int __cdecl wcsncmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  wchar_t *__cdecl wcsncpy(wchar_t *_Dest,const wchar_t *_Source,size_t _Count);
+  _CONST_RETURN wchar_t *__cdecl wcspbrk(const wchar_t *_Str,const wchar_t *_Control);
+  _CONST_RETURN wchar_t *__cdecl wcsrchr(const wchar_t *_Str,wchar_t _Ch);
+  size_t __cdecl wcsspn(const wchar_t *_Str,const wchar_t *_Control);
+  _CONST_RETURN wchar_t *__cdecl wcsstr(const wchar_t *_Str,const wchar_t *_SubStr);
+  wchar_t *__cdecl wcstok(wchar_t *_Str,const wchar_t *_Delim);
+  _CRTIMP wchar_t *__cdecl _wcserror(int _ErrNum);
+  _CRTIMP wchar_t *__cdecl __wcserror(const wchar_t *_Str);
+  _CRTIMP int __cdecl _wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2);
+  _CRTIMP int __cdecl _wcsicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _wcsnicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount);
+  _CRTIMP wchar_t *__cdecl _wcsrev(wchar_t *_Str);
+  _CRTIMP wchar_t *__cdecl _wcsset(wchar_t *_Str,wchar_t _Val);
+  _CRTIMP wchar_t *__cdecl _wcslwr(wchar_t *_String);
+  _CRTIMP wchar_t *_wcslwr_l(wchar_t *_String,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wcsupr(wchar_t *_String);
+  _CRTIMP wchar_t *_wcsupr_l(wchar_t *_String,_locale_t _Locale);
+  size_t __cdecl wcsxfrm(wchar_t *_Dst,const wchar_t *_Src,size_t _MaxCount);
+  _CRTIMP size_t __cdecl _wcsxfrm_l(wchar_t *_Dst,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
+  int __cdecl wcscoll(const wchar_t *_Str1,const wchar_t *_Str2);
+  _CRTIMP int __cdecl _wcscoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2);
+  _CRTIMP int __cdecl _wcsicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsncoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _wcsncoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
+  _CRTIMP int __cdecl _wcsnicoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  _CRTIMP int __cdecl _wcsnicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
+
+#ifndef        NO_OLDNAMES
+    /* NOTE: There is no _wcscmpi, but this is for compatibility. */
+  int __cdecl wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2);
+  __CRT_INLINE int __cdecl wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2) { return _wcsicmp (__ws1, __ws2); }
+  #define              _wcscmpi        _wcsicmp
+
+  wchar_t *__cdecl wcsdup(const wchar_t *_Str);
+#define wcswcs wcsstr
+  int __cdecl wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2);
+  int __cdecl wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
+  wchar_t *__cdecl wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount);
+  wchar_t *__cdecl wcsrev(wchar_t *_Str);
+  wchar_t *__cdecl wcsset(wchar_t *_Str,wchar_t _Val);
+  wchar_t *__cdecl wcslwr(wchar_t *_Str);
+  wchar_t *__cdecl wcsupr(wchar_t *_Str);
+  int __cdecl wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2);
+#endif
+#endif
+
+#ifndef _TM_DEFINED
+#define _TM_DEFINED
+  struct tm {
+    int tm_sec;
+    int tm_min;
+    int tm_hour;
+    int tm_mday;
+    int tm_mon;
+    int tm_year;
+    int tm_wday;
+    int tm_yday;
+    int tm_isdst;
+  };
+#endif
+
+#ifndef _WTIME_DEFINED
+#define _WTIME_DEFINED
+
+  _CRTIMP wchar_t *__cdecl _wasctime(const struct tm *_Tm);
+  _CRTIMP wchar_t *__cdecl _wctime32(const __time32_t *_Time);
+  size_t __cdecl wcsftime(wchar_t *_Buf,size_t _SizeInWords,const wchar_t *_Format,const struct tm *_Tm);
+  _CRTIMP size_t __cdecl _wcsftime_l(wchar_t *_Buf,size_t _SizeInWords,const wchar_t *_Format,const struct tm *_Tm,_locale_t _Locale);
+  _CRTIMP wchar_t *__cdecl _wstrdate(wchar_t *_Buffer);
+  _CRTIMP wchar_t *__cdecl _wstrtime(wchar_t *_Buffer);
+#if _INTEGRAL_MAX_BITS >= 64
+  _CRTIMP wchar_t *__cdecl _wctime64(const __time64_t *_Time);
+#endif
+
+#if !defined (RC_INVOKED) && !defined (_INC_WTIME_INL)
+#define _INC_WTIME_INL
+#ifdef _USE_32BIT_TIME_T
+__CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime32(_Time); }
+#else
+__CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime64(_Time); }
+#endif
+#endif
+#endif
+
+  typedef int mbstate_t;
+  typedef wchar_t _Wint_t;
+
+  wint_t __cdecl btowc(int);
+  size_t __cdecl mbrlen(const char *_Ch,size_t _SizeInBytes,mbstate_t *_State);
+  size_t __cdecl mbrtowc(wchar_t *_DstCh,const char *_SrcCh,size_t _SizeInBytes,mbstate_t *_State);
+  size_t __cdecl mbsrtowcs(wchar_t *_Dest,const char **_PSrc,size_t _Count,mbstate_t *_State);
+  size_t __cdecl wcrtomb(char *_Dest,wchar_t _Source,mbstate_t *_State);
+  size_t __cdecl wcsrtombs(char *_Dest,const wchar_t **_PSource,size_t _Count,mbstate_t *_State);
+  int __cdecl wctob(wint_t _WCh);
+
+#ifndef __NO_ISOCEXT /* these need static lib libmingwex.a */
+  wchar_t *__cdecl wmemset(wchar_t *s, wchar_t c, size_t n);
+  _CONST_RETURN wchar_t *__cdecl wmemchr(const wchar_t *s, wchar_t c, size_t n);
+  int wmemcmp(const wchar_t *s1, const wchar_t *s2,size_t n);
+  wchar_t *__cdecl wmemcpy(wchar_t *s1,const wchar_t *s2,size_t n);
+  wchar_t *__cdecl wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);
+  long long __cdecl wcstoll(const wchar_t *nptr,wchar_t **endptr, int base);
+  unsigned long long __cdecl wcstoull(const wchar_t *nptr,wchar_t **endptr, int base);
+#endif /* __NO_ISOCEXT */
+
+  void *__cdecl memmove(void *_Dst,const void *_Src,size_t _MaxCount);
+  void *__cdecl memcpy(void *_Dst,const void *_Src,size_t _MaxCount);
+  __CRT_INLINE int __cdecl fwide(FILE *_F,int _M) { (void)_F; return (_M); }
+  __CRT_INLINE int __cdecl mbsinit(const mbstate_t *_P) { return (!_P || *_P==0); }
+  __CRT_INLINE _CONST_RETURN wchar_t *__cdecl wmemchr(const wchar_t *_S,wchar_t _C,size_t _N) { for (;0<_N;++_S,--_N) if (*_S==_C) return (_CONST_RETURN wchar_t *)(_S); return (0); }
+  __CRT_INLINE int __cdecl wmemcmp(const wchar_t *_S1,const wchar_t *_S2,size_t _N) { for (; 0 < _N; ++_S1,++_S2,--_N) if (*_S1!=*_S2) return (*_S1 < *_S2 ? -1 : +1); return (0); }
+  __CRT_INLINE wchar_t *__cdecl wmemcpy(wchar_t *_S1,const wchar_t *_S2,size_t _N) { return (wchar_t *)memcpy(_S1,_S2,_N*sizeof(wchar_t)); }
+  __CRT_INLINE wchar_t *__cdecl wmemmove(wchar_t *_S1,const wchar_t *_S2,size_t _N) { return (wchar_t *)memmove(_S1,_S2,_N*sizeof(wchar_t)); }
+  __CRT_INLINE wchar_t *__cdecl wmemset(wchar_t *_S,wchar_t _C,size_t _N) {
+    wchar_t *_Su = _S;
+    for (;0<_N;++_Su,--_N) {
+      *_Su = _C;
+    }
+    return (_S);
+  }
+#ifdef __cplusplus
+}
+#endif
+
+#pragma pack(pop)
+
+#include <sec_api/wchar_s.h>
+#endif
index 57f61f7..a44cb38 100644 (file)
-/*
- * wctype.h
- *
- * Functions for testing wide character types and converting characters.
- *
- * This file is part of the Mingw32 package.
- *
- * Contributors:
- *  Created by Mumit Khan <khan@xraylith.wisc.edu>
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
+/**
+ * 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 _INC_WCTYPE
+#define _INC_WCTYPE
 
-#ifndef _WCTYPE_H_
-#define _WCTYPE_H_
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-/* All the headers include this file. */
 #include <_mingw.h>
 
-#define        __need_wchar_t
-#define        __need_wint_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-/*
- * The following flags are used to tell iswctype and _isctype what character
- * types you are looking for.
- */
-#define        _UPPER          0x0001
-#define        _LOWER          0x0002
-#define        _DIGIT          0x0004
-#define        _SPACE          0x0008
-#define        _PUNCT          0x0010
-#define        _CONTROL        0x0020
-#define        _BLANK          0x0040
-#define        _HEX            0x0080
-#define        _LEADBYTE       0x8000
-
-#define        _ALPHA          0x0103
-
-#ifndef RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef WEOF
-#define        WEOF    (wchar_t)(0xFFFF)
+#ifndef _CRTIMP
+#define _CRTIMP __declspec(dllimport)
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+  typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
 #endif
 
 #ifndef _WCTYPE_T_DEFINED
-typedef wchar_t wctype_t;
+  typedef unsigned short wint_t;
+  typedef unsigned short wctype_t;
 #define _WCTYPE_T_DEFINED
 #endif
 
-/* Wide character equivalents - also in ctype.h */
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswalnum(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswalpha(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswascii(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswcntrl(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswctype(wint_t, wctype_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    is_wctype(wint_t, wctype_t);    /* Obsolete! */
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswdigit(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswgraph(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswlower(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswprint(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswpunct(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswspace(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswupper(wint_t);
-_CRTIMP int __cdecl __MINGW_NOTHROW    iswxdigit(wint_t);
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined __STRICT_ANSI__ || defined __cplusplus
-int __cdecl __MINGW_NOTHROW iswblank (wint_t);
-#endif
-
-/* Older MS docs uses wchar_t for arg and return type, while newer
-   online MS docs say arg is wint_t and return is int.
-   ISO C uses wint_t for both.  */
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW towlower (wint_t);
-_CRTIMP wint_t __cdecl __MINGW_NOTHROW towupper (wint_t);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW    isleadbyte (int);
-
-/* Also in ctype.h */
-
-#ifndef _CTYPE_H_
-#ifdef __DECLSPEC_SUPPORTED
-# if __MSVCRT_VERSION__ <= 0x0700
-  __MINGW_IMPORT unsigned short _ctype[];
-# endif 
-# ifdef __MSVCRT__
-  __MINGW_IMPORT const unsigned short* _pctype;
-# else /* CRTDLL */
-  __MINGW_IMPORT const unsigned short* _pctype_dll;
-# define  _pctype _pctype_dll
-# endif
-
-#else          /* ! __DECLSPEC_SUPPORTED */
-# if __MSVCRT_VERSION__ <= 0x0700
-  extern unsigned short** _imp___ctype;
-# define _ctype (*_imp___ctype)
-# endif
-# ifdef __MSVCRT__
-  extern unsigned short** _imp___pctype;
-# define _pctype (*_imp___pctype)
-# else /* CRTDLL */
-  extern unsigned short** _imp___pctype_dll;
-# define _pctype (*_imp___pctype_dll)
-# endif        /* CRTDLL */
-#endif         /*  __DECLSPEC_SUPPORTED */
-#endif
-
-#if !(defined (__NO_INLINE__) || defined(__NO_CTYPE_INLINES) \
-      || defined(__WCTYPE_INLINES_DEFINED))
-#define __WCTYPE_INLINES_DEFINED
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalnum(wint_t wc) {return (iswctype(wc,_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalpha(wint_t wc) {return (iswctype(wc,_ALPHA));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswascii(wint_t wc) {return ((wc & ~0x7F) ==0);}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswcntrl(wint_t wc) {return (iswctype(wc,_CONTROL));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswdigit(wint_t wc) {return (iswctype(wc,_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswgraph(wint_t wc) {return (iswctype(wc,_PUNCT|_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswlower(wint_t wc) {return (iswctype(wc,_LOWER));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswprint(wint_t wc) {return (iswctype(wc,_BLANK|_PUNCT|_ALPHA|_DIGIT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswpunct(wint_t wc) {return (iswctype(wc,_PUNCT));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswspace(wint_t wc) {return (iswctype(wc,_SPACE));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswupper(wint_t wc) {return (iswctype(wc,_UPPER));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswxdigit(wint_t wc) {return (iswctype(wc,_HEX));}
-__CRT_INLINE int __cdecl __MINGW_NOTHROW isleadbyte(int c) {return (_pctype[(unsigned char)(c)] & _LEADBYTE);}
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
-     || !defined __STRICT_ANSI__ || defined __cplusplus
-__CRT_INLINE int __cdecl __MINGW_NOTHROW iswblank (wint_t wc)
-  {return (iswctype(wc, _BLANK) || wc == L'\t');}
-#endif
-
-#endif /* !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED)) */
-
-typedef wchar_t wctrans_t;
-
-/* These are resolved by libmingwex.a.  Note, that they are also exported
-   by the MS C++ runtime lib (msvcp60.dll).  The msvcp60.dll implementations
-   of wctrans and towctrans are not C99 compliant in that wctrans("tolower")
-   returns 0, while std specifies that a non-zero value should be returned
-   for a valid string descriptor.  If you want the MS behaviour (and you have
-   msvcp60.dll in your path) add -lmsvcp60 to your command line.  */
-
-wint_t __cdecl __MINGW_NOTHROW         towctrans(wint_t, wctrans_t);
-wctrans_t __cdecl __MINGW_NOTHROW      wctrans(const char*);
-wctype_t __cdecl __MINGW_NOTHROW       wctype(const char*);
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
 
-#ifdef __cplusplus
-}
+#ifndef _CRT_CTYPEDATA_DEFINED
+#define _CRT_CTYPEDATA_DEFINED
+#ifndef _CTYPE_DISABLE_MACROS
+
+#ifndef __PCTYPE_FUNC
+#define __PCTYPE_FUNC __pctype_func()
+#ifdef _MSVCRT_
+#define __pctype_func() (_pctype)
+#else
+#define __pctype_func() (*_imp___pctype)
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifndef _pctype
+#ifdef _MSVCRT_
+  extern unsigned short *_pctype;
+#else
+  extern unsigned short **_imp___pctype;
+#define _pctype (*_imp___pctype)
+#endif
+#endif
 
-#endif /* Not _WCTYPE_H_ */
+#endif
+#endif
 
+#ifndef _CRT_WCTYPEDATA_DEFINED
+#define _CRT_WCTYPEDATA_DEFINED
+#ifndef _CTYPE_DISABLE_MACROS
+#ifndef _wctype
+#ifdef _MSVCRT_
+  extern unsigned short *_wctype;
+#else
+  extern unsigned short **_imp___wctype;
+#define _wctype (*_imp___wctype)
+#endif
+#endif
+
+#ifndef _pwctype
+#ifdef _MSVCRT_
+  extern unsigned short *_pwctype;
+#else
+  extern unsigned short **_imp___pwctype;
+#define _pwctype (*_imp___pwctype)
+#define __pwctype_func() (*_imp___pwctype)
+#endif
+#endif
+#endif
+#endif
+
+#define _UPPER 0x1
+#define _LOWER 0x2
+#define _DIGIT 0x4
+#define _SPACE 0x8
+
+#define _PUNCT 0x10
+#define _CONTROL 0x20
+#define _BLANK 0x40
+#define _HEX 0x80
+
+#define _LEADBYTE 0x8000
+#define _ALPHA (0x0100|_UPPER|_LOWER)
+
+#ifndef _WCTYPE_DEFINED
+#define _WCTYPE_DEFINED
+
+  int __cdecl iswalpha(wint_t);
+  int __cdecl iswupper(wint_t);
+  int __cdecl iswlower(wint_t);
+  int __cdecl iswdigit(wint_t);
+  int __cdecl iswxdigit(wint_t);
+  int __cdecl iswspace(wint_t);
+  int __cdecl iswpunct(wint_t);
+  int __cdecl iswalnum(wint_t);
+  int __cdecl iswprint(wint_t);
+  int __cdecl iswgraph(wint_t);
+  int __cdecl iswcntrl(wint_t);
+  int __cdecl iswascii(wint_t);
+  int __cdecl isleadbyte(int);
+  wint_t __cdecl towupper(wint_t);
+  wint_t __cdecl towlower(wint_t);
+  int __cdecl iswctype(wint_t,wctype_t);
+  _CRTIMP int __cdecl __iswcsymf(wint_t);
+  _CRTIMP int __cdecl __iswcsym(wint_t);
+  int __cdecl is_wctype(wint_t,wctype_t);
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
+int __cdecl isblank(int _C);
+#endif
+#endif
 
+#ifndef _WCTYPE_INLINE_DEFINED
+#define _WCTYPE_INLINE_DEFINED
+#ifndef __cplusplus
+#define iswalpha(_c) (iswctype(_c,_ALPHA))
+#define iswupper(_c) (iswctype(_c,_UPPER))
+#define iswlower(_c) (iswctype(_c,_LOWER))
+#define iswdigit(_c) (iswctype(_c,_DIGIT))
+#define iswxdigit(_c) (iswctype(_c,_HEX))
+#define iswspace(_c) (iswctype(_c,_SPACE))
+#define iswpunct(_c) (iswctype(_c,_PUNCT))
+#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
+#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
+#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
+#define iswcntrl(_c) (iswctype(_c,_CONTROL))
+#define iswascii(_c) ((unsigned)(_c) < 0x80)
+#define isleadbyte(c) (__pctype_func()[(unsigned char)(c)] & _LEADBYTE)
+#else
+  __CRT_INLINE int __cdecl iswalpha(wint_t _C) {return (iswctype(_C,_ALPHA)); }
+  __CRT_INLINE int __cdecl iswupper(wint_t _C) {return (iswctype(_C,_UPPER)); }
+  __CRT_INLINE int __cdecl iswlower(wint_t _C) {return (iswctype(_C,_LOWER)); }
+  __CRT_INLINE int __cdecl iswdigit(wint_t _C) {return (iswctype(_C,_DIGIT)); }
+  __CRT_INLINE int __cdecl iswxdigit(wint_t _C) {return (iswctype(_C,_HEX)); }
+  __CRT_INLINE int __cdecl iswspace(wint_t _C) {return (iswctype(_C,_SPACE)); }
+  __CRT_INLINE int __cdecl iswpunct(wint_t _C) {return (iswctype(_C,_PUNCT)); }
+  __CRT_INLINE int __cdecl iswalnum(wint_t _C) {return (iswctype(_C,_ALPHA|_DIGIT)); }
+  __CRT_INLINE int __cdecl iswprint(wint_t _C) {return (iswctype(_C,_BLANK|_PUNCT|_ALPHA|_DIGIT)); }
+  __CRT_INLINE int __cdecl iswgraph(wint_t _C) {return (iswctype(_C,_PUNCT|_ALPHA|_DIGIT)); }
+  __CRT_INLINE int __cdecl iswcntrl(wint_t _C) {return (iswctype(_C,_CONTROL)); }
+  __CRT_INLINE int __cdecl iswascii(wint_t _C) {return ((unsigned)(_C) < 0x80); }
+  __CRT_INLINE int __cdecl isleadbyte(int _C) {return (__pctype_func()[(unsigned char)(_C)] & _LEADBYTE); }
+#endif
+#endif
+
+  typedef wchar_t wctrans_t;
+  wint_t __cdecl towctrans(wint_t,wctrans_t);
+  wctrans_t __cdecl wctrans(const char *);
+  wctype_t __cdecl wctype(const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#pragma pack(pop)
+#endif