OSDN Git Service

Add prototypes for new msvcrt.dll versions
authordannysmith <dannysmith>
Fri, 26 Mar 2004 11:30:21 +0000 (11:30 +0000)
committerdannysmith <dannysmith>
Fri, 26 Mar 2004 11:30:21 +0000 (11:30 +0000)
* include/_mingw.h (__MSVCRT_VERSION__): Define default as 0x0600.

* include/time.h (__time64_t): Add typedef.
(_mktime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
(_ctime64): Likewise.
(_wctime64): Likewise.
(_gmtime64): Likewise.
(_localtime64): Likewise.
(wcsftime): Move into _WTIME_DEFINED block.
Regroup non-ANSI prototypes.

* include/io.h: Include <stdint.h>.
(__finddata64_t): Add struct definition.
(__wfinddata64_t): Likewise.
(_findfirst64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
(_findnext64): Likewise.
(_wfindfirst64): Likewise.
(_wfindnext64): Likewise.

* include/sys/timeb.h (__timeb64): Add struct definition.
(_ftime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.

* include/sys/utime.h (__utimbuf64): Add struct definition.
(_utime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
(_futime64): Likewise.
(_wutime64): Likewise.

* include/sys/stat.h (__stat64):  Add struct definition.
(_fstat64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
(_stat64): Likewise.
(_wstat64): Likwise.

* include/sys/types.h (__time64_t):  Add typedef.

* include/wchar.h (__wfinddata64_t): Add structure definition.
(__stat64): Likewise.
(_wctime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
(_wfindfirst64): Likewise.
(_wfindnext64): Likewise.
(_wutime64): Likewise.
(_wstat64): Likwise.

* include/malloc.h (_aligned_free): Add prototype for
__MSVCRT_VERSION__ >= 0x0700.
(_aligned_malloc): Likewise.
(_aligned_offset_malloc): Likewise.
(_aligned_offset_realloc): Likewise.
(_aligned_realloc): Likewise.

* include/string.h (_wcserror): Add prototype for
__MSVCRT_VERSION__ >= 0x0700.
(__wcserror): Likewise.

* include/math.h (_set_SSE2_enable): Add prototype for
__MSVCRT_VERSION__ >= 0x0701.

12 files changed:
winsup/mingw/ChangeLog
winsup/mingw/include/_mingw.h
winsup/mingw/include/io.h
winsup/mingw/include/malloc.h
winsup/mingw/include/math.h
winsup/mingw/include/string.h
winsup/mingw/include/sys/stat.h
winsup/mingw/include/sys/timeb.h
winsup/mingw/include/sys/types.h
winsup/mingw/include/sys/utime.h
winsup/mingw/include/time.h
winsup/mingw/include/wchar.h

index 0141943..65641bb 100644 (file)
@@ -1,5 +1,53 @@
 2004-03-25  Danny Smith  <dannysmith@users.sourceforge.net>
 
+       * include/_mingw.h (__MSVCRT_VERSION__): Define default as 0x0600.
+       * include/time.h (__time64_t): Add typedef.
+       (_mktime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
+       (_ctime64): Likewise.
+       (_wctime64): Likewise.
+       (_gmtime64): Likewise.
+       (_localtime64): Likewise.
+       (wcsftime): Move into _WTIME_DEFINED block.
+       Regroup non-ANSI prototypes.
+       * include/io.h: Include <stdint.h>.
+       (__finddata64_t): Add struct definition.
+       (__wfinddata64_t): Likewise.
+       (_findfirst64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
+       (_findnext64): Likewise.
+       (_wfindfirst64): Likewise.
+       (_wfindnext64): Likewise.
+       * include/sys/timeb.h (__timeb64): Add struct definition.
+       (_ftime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
+       * include/sys/utime.h (__utimbuf64): Add struct definition.
+       (_utime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
+       (_futime64): Likewise.
+       (_wutime64): Likewise.
+       * include/sys/stat.h (__stat64):  Add struct definition.
+       (_fstat64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
+       (_stat64): Likewise.
+       (_wstat64): Likwise.
+       * include/sys/types.h (__time64_t):  Add typedef.
+       * include/wchar.h (__wfinddata64_t): Add structure definition.
+       (__stat64): Likewise.
+       (_wctime64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
+       (_wfindfirst64): Likewise.
+       (_wfindnext64): Likewise.
+       (_wutime64): Likewise.
+       (_wstat64): Likwise.
+       * include/malloc.h (_aligned_free): Add prototype for
+       __MSVCRT_VERSION__ >= 0x0700.
+       (_aligned_malloc): Likewise.
+       (_aligned_offset_malloc): Likewise.
+       (_aligned_offset_realloc): Likewise.
+       (_aligned_realloc): Likewise.
+       * include/string.h (_wcserror): Add prototype for
+       __MSVCRT_VERSION__ >= 0x0700.
+       (__wcserror): Likewise.
+       * include/math.h (_set_SSE2_enable): Add prototype for
+       __MSVCRT_VERSION__ >= 0x0701.
+
+2004-03-25  Danny Smith  <dannysmith@users.sourceforge.net>
+
        * include/stdio.h (_fsopen): Add prototype.
        * include/tchar.h (_tfsopen): Add defines.
        Thanks to "Gerik" <gerikr at users dot sourceforge dot net>
index d606aa1..e71d146 100644 (file)
 # endif
 #endif
 
+#ifndef __MSVCRT_VERSION__
+/*  High byte is the major version, low byte is the minor. */
+# define __MSVCRT_VERSION__ 0x0600
+#endif
+
 #define __MINGW32_VERSION 4.0
 #define __MINGW32_MAJOR_VERSION 4
 #define __MINGW32_MINOR_VERSION 0
index 433aa57..8349804 100644 (file)
@@ -33,7 +33,8 @@
  * NOTE: This also defines off_t, the file offset type, through
  *       an inclusion of sys/types.h */
 
-#include <sys/types.h> /* To get time_t. */
+#include <sys/types.h> /* To get time_t.  */
+#include <stdint.h>  /* For intptr_t.  */
 
 /*
  * Attributes of files as returned by _findfirst et al.
@@ -86,6 +87,14 @@ struct _finddatai64_t {
     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 {
@@ -96,6 +105,7 @@ struct _wfinddata_t {
        _fsize_t        size;
        wchar_t         name[FILENAME_MAX];     /* may include spaces. */
 };
+
 struct _wfinddatai64_t {
     unsigned    attrib;
     time_t      time_create;
@@ -105,6 +115,15 @@ struct _wfinddatai64_t {
     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];
+};
+
 #define _WFINDDATA_T_DEFINED
 #endif
 
@@ -118,6 +137,7 @@ extern "C" {
  * _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.
  */
+/*  FIXME: Should these all use intptr_t, as per recent MSDN docs?  */
 _CRTIMP int __cdecl _findfirst (const char*, struct _finddata_t*);
 _CRTIMP int __cdecl _findnext (int, struct _finddata_t*);
 _CRTIMP int __cdecl _findclose (int);
@@ -129,16 +149,19 @@ _CRTIMP char* __cdecl _mktemp (char*);
 _CRTIMP int __cdecl _rmdir (const char*);
 _CRTIMP int __cdecl _chmod (const char*, int);
 
-
 #ifdef __MSVCRT__
 _CRTIMP __int64 __cdecl _filelengthi64(int);
 _CRTIMP long __cdecl _findfirsti64(const char*, struct _finddatai64_t*);
 _CRTIMP int __cdecl _findnexti64(long, struct _finddatai64_t*);
 _CRTIMP __int64 __cdecl _lseeki64(int, __int64, int);
 _CRTIMP __int64 __cdecl _telli64(int);
+/* These require newer versions of msvcrt.dll (6.1 or higher). */ 
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP intptr_t __cdecl _findfirst64(const char*, struct __finddata64_t*);
+_CRTIMP intptr_t __cdecl _findnext64(intptr_t, struct __finddata64_t*); 
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
 #endif /* __MSVCRT__ */
 
-
 #ifndef _NO_OLDNAMES
 
 #ifndef _UWIN
@@ -162,7 +185,6 @@ _CRTIMP int __cdecl chmod (const char*, int);
  * it the same as FOPEN_MAX. */
 #define        HANDLE_MAX      FOPEN_MAX
 
-
 /* 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 */
@@ -238,6 +260,10 @@ _CRTIMP int __cdecl _wsopen(const wchar_t*, int, int, ...);
 _CRTIMP wchar_t * __cdecl _wmktemp(wchar_t*);
 _CRTIMP long __cdecl _wfindfirsti64(const wchar_t*, struct _wfinddatai64_t*);
 _CRTIMP int __cdecl _wfindnexti64(long, struct _wfinddatai64_t*);
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP intptr_t __cdecl _wfindfirst64(const wchar_t*, struct __wfinddata64_t*); 
+_CRTIMP intptr_t __cdecl _wfindnext64(intptr_t, struct __wfinddata64_t*);
+#endif
 #endif /* defined (__MSVCRT__) */
 #define _WIO_DEFINED
 #endif /* _WIO_DEFINED */
index 06bfcf4..a1a38f5 100644 (file)
@@ -79,6 +79,16 @@ _CRTIMP size_t __cdecl _get_sbh_threshold (void);
 _CRTIMP int __cdecl _set_sbh_threshold (size_t);
 _CRTIMP void* __cdecl _expand (void*, size_t); 
 
+/* These require msvcr70.dll or higher. */ 
+#if __MSVCRT_VERSION__ >= 0x0700
+_CRTIMP void * __cdecl _aligned_offset_malloc(size_t, size_t, size_t);
+_CRTIMP void * __cdecl _aligned_offset_realloc(void*, size_t, size_t, size_t);
+
+_CRTIMP void* __cdecl _aligned_malloc (size_t, size_t);
+_CRTIMP void* __cdecl _aligned_realloc (void*, size_t, size_t);
+_CRTIMP void __cdecl _aligned_free (void*);
+#endif /* __MSVCRT_VERSION__ >= 0x0700 */
+
 #ifdef __cplusplus
 }
 #endif
index 9640522..919646f 100644 (file)
@@ -236,6 +236,12 @@ _CRTIMP int __cdecl fpclass (double);
 
 #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 */
+
+
 #endif /* __STRICT_ANSI__ */
 
 
index afedab7..790ccba 100644 (file)
@@ -140,7 +140,11 @@ _CRTIMP wchar_t* __cdecl _wcsupr (wchar_t*);
 
 #ifdef __MSVCRT__
 _CRTIMP int __cdecl  _wcsncoll(const wchar_t*, const wchar_t*, size_t);
-_CRTIMP int __cdecl  _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
+_CRTIMP int   __cdecl _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
+#if __MSVCRT_VERSION__ >= 0x0700
+_CRTIMP  wchar_t* __cdecl _wcserror(int);
+_CRTIMP  wchar_t* __cdecl __wcserror(const wchar_t*);
+#endif
 #endif
 
 
index f782d2f..3d24c61 100644 (file)
@@ -130,6 +130,7 @@ struct stat
        time_t  st_mtime;       /* Modified time */
        time_t  st_ctime;       /* Creation time */
 };
+
 #if defined (__MSVCRT__)
 struct _stati64 {
     _dev_t st_dev;
@@ -144,6 +145,21 @@ struct _stati64 {
     time_t st_mtime;
     time_t st_ctime;
 };
+
+struct __stat64
+{
+    _dev_t st_dev;
+    _ino_t st_ino;
+    _mode_t 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 */
@@ -156,16 +172,6 @@ _CRTIMP int __cdecl        _fstat (int, struct _stat*);
 _CRTIMP int __cdecl    _chmod (const char*, int);
 _CRTIMP int __cdecl    _stat (const char*, struct _stat*);
 
-#if defined (__MSVCRT__)
-_CRTIMP int __cdecl  _fstati64(int, struct _stati64 *);
-_CRTIMP int __cdecl  _stati64(const char *, struct _stati64 *);
-#if !defined ( _WSTAT_DEFINED) /* also declared in wchar.h */
-_CRTIMP int __cdecl    _wstat(const wchar_t*, struct _stat*);
-_CRTIMP int __cdecl    _wstati64 (const wchar_t*, struct _stati64*);
-#define _WSTAT_DEFINED
-#endif /* _WSTAT_DEFIND */
-#endif /* __MSVCRT__ */
-
 #ifndef        _NO_OLDNAMES
 
 /* These functions live in liboldnames.a. */
@@ -175,6 +181,23 @@ _CRTIMP int __cdecl        stat (const char*, struct stat*);
 
 #endif /* Not _NO_OLDNAMES */
 
+#if defined (__MSVCRT__)
+_CRTIMP int __cdecl  _fstati64(int, struct _stati64 *);
+_CRTIMP int __cdecl  _stati64(const char *, struct _stati64 *);
+/* These require newer versions of msvcrt.dll (6.10 or higher).  */ 
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP int __cdecl _fstat64 (int, struct __stat64*);
+_CRTIMP int __cdecl _stat64 (const char*, struct __stat64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+#if !defined ( _WSTAT_DEFINED) /* also declared in wchar.h */
+_CRTIMP int __cdecl    _wstat(const wchar_t*, struct _stat*);
+_CRTIMP int __cdecl    _wstati64 (const wchar_t*, struct _stati64*);
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP int __cdecl _wstat64 (const wchar_t*, struct __stat64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+#define _WSTAT_DEFINED
+#endif /* _WSTAT_DEFIND */
+#endif /* __MSVCRT__ */
 
 #ifdef __cplusplus
 }
index 4e5b1bf..a093104 100644 (file)
@@ -29,6 +29,7 @@
 
 /* All the headers include this file. */
 #include <_mingw.h>
+#include <sys/types.h>
 
 #ifndef        RC_INVOKED
 
@@ -56,6 +57,13 @@ struct timeb
 };
 #endif
 
+struct __timeb64
+{
+       __time64_t time;
+       short millitm;
+       short timezone;
+       short dstflag;
+};
 
 #ifdef __cplusplus
 extern "C" {
@@ -68,6 +76,11 @@ _CRTIMP void __cdecl _ftime (struct _timeb*);
 _CRTIMP void __cdecl   ftime (struct timeb*);
 #endif /* Not _NO_OLDNAMES */
 
+/* This requires newer versions of msvcrt.dll (6.10 or higher).  */ 
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP void __cdecl   _ftime64 (struct __timeb64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+
 #ifdef __cplusplus
 }
 #endif
index a1f66ab..ba51252 100644 (file)
@@ -45,6 +45,10 @@ typedef      long    time_t;
 #define        _TIME_T_DEFINED
 #endif
 
+#ifndef _TIME64_T_DEFINED
+typedef __int64 __time64_t;
+#define _TIME64_T_DEFINED
+#endif
 
 #ifndef        _OFF_T_
 #define        _OFF_T_
@@ -118,6 +122,7 @@ typedef _ssize_t ssize_t;
 #endif
 #endif /* Not _SSIZE_T_ */ 
 
+
 #endif /* Not RC_INVOKED */
 
 #endif /* Not _TYPES_H_ */
index f95ec84..14a2870 100644 (file)
@@ -57,12 +57,23 @@ struct utimbuf
 };
 #endif /* Not _NO_OLDNAMES */
 
+struct __utimbuf64
+{
+       __time64_t actime;
+       __time64_t modtime;
+};
+
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 _CRTIMP int __cdecl    _utime (const char*, struct _utimbuf*);
+
+#ifndef        _NO_OLDNAMES
+_CRTIMP int __cdecl    utime (const char*, struct utimbuf*);
+#endif /* Not _NO_OLDNAMES */
+
 _CRTIMP int __cdecl    _futime (int, struct _utimbuf*);
 
 /* The wide character version, only available for MSVCRT versions of the
@@ -70,9 +81,13 @@ _CRTIMP int __cdecl  _futime (int, struct _utimbuf*);
 #ifdef __MSVCRT__
 _CRTIMP int __cdecl    _wutime (const wchar_t*, struct _utimbuf*);
 #endif /* MSVCRT runtime */
-#ifndef        _NO_OLDNAMES
-_CRTIMP int __cdecl    utime (const char*, struct utimbuf*);
-#endif /* Not _NO_OLDNAMES */
+
+/* These require newer versions of msvcrt.dll (6.10 or higher).  */ 
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP int __cdecl    _utime64 (const char*, struct __utimbuf64*);
+_CRTIMP int __cdecl    _wutime64 (const wchar_t*, struct __utimbuf64*);
+_CRTIMP int __cdecl    _futime64 (int, struct __utimbuf64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
 
 #ifdef __cplusplus
 }
index 45d6b0e..2a75e18 100644 (file)
@@ -62,6 +62,13 @@ typedef      long    time_t;
 #define _TIME_T_DEFINED
 #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
+#endif
+#endif
 /*
  * A type for measuring processor time (in clock ticks).
  */
@@ -70,7 +77,6 @@ typedef       long    clock_t;
 #define _CLOCK_T_DEFINED
 #endif
 
-
 /*
  * A structure for storing all kinds of useful information about the
  * current (or another) time.
@@ -113,12 +119,10 @@ _CRTIMP char* __cdecl             ctime (const time_t*);
 _CRTIMP struct tm*  __cdecl    gmtime (const time_t*);
 _CRTIMP struct tm*  __cdecl    localtime (const time_t*);
 
-
-_CRTIMP size_t __cdecl strftime (char*, size_t, const char*, const struct tm*);
-
-_CRTIMP size_t __cdecl wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
+_CRTIMP size_t __cdecl         strftime (char*, size_t, const char*, const struct tm*);
 
 #ifndef __STRICT_ANSI__
+
 extern _CRTIMP void __cdecl    _tzset (void);
 
 #ifndef _NO_OLDNAMES
@@ -128,7 +132,14 @@ extern _CRTIMP void __cdecl        tzset (void);
 _CRTIMP char* __cdecl  _strdate(char*);
 _CRTIMP char* __cdecl  _strtime(char*);
 
-#endif /* Not __STRICT_ANSI__ */
+/* These require newer versions of msvcrt.dll (6.10 or higher). */ 
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP __time64_t __cdecl  _time64( __time64_t);
+_CRTIMP __time64_t __cdecl  _mktime64 (struct tm*);
+_CRTIMP char* __cdecl _ctime64 (const __time64_t*);
+_CRTIMP struct tm*  __cdecl _gmtime64 (const __time64_t*);
+_CRTIMP struct tm*  __cdecl _localtime64 (const __time64_t*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
 
 /*
  * _daylight: non zero if daylight savings time is used.
@@ -181,19 +192,6 @@ __MINGW_IMPORT int daylight;
 __MINGW_IMPORT long    timezone;
 __MINGW_IMPORT char    *tzname[2];
 
-#ifndef _WTIME_DEFINED
-
-/* wide function prototypes, also declared in wchar.h */
-
-_CRTIMP wchar_t* __cdecl       _wasctime(const struct tm*);
-_CRTIMP wchar_t* __cdecl       _wctime(const time_t*);
-_CRTIMP wchar_t* __cdecl       _wstrdate(wchar_t*);
-_CRTIMP wchar_t* __cdecl       _wstrtime(wchar_t*);
-
-#define _WTIME_DEFINED
-#endif /* _WTIME_DEFINED */ 
-
-
 #else /* not __MSVCRT__ */
 
 /* CRTDLL is royally messed up when it comes to these macros.
@@ -208,6 +206,24 @@ __MINGW_IMPORT char        *tzname[2];
 #endif /* not __MSVCRT__ */
 
 #endif /* Not _NO_OLDNAMES */
+#endif /* Not __STRICT_ANSI__ */
+
+#ifndef __STRICT_ANSI__
+#ifndef _WTIME_DEFINED
+/* wide function prototypes, also declared in wchar.h */
+#ifdef __MSVCRT__
+_CRTIMP wchar_t* __cdecl       _wasctime(const struct tm*);
+_CRTIMP wchar_t* __cdecl       _wctime(const time_t*);
+_CRTIMP wchar_t* __cdecl       _wstrdate(wchar_t*);
+_CRTIMP wchar_t* __cdecl       _wstrtime(wchar_t*);
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP wchar_t* __cdecl       _wctime64 (const __time64_t*);
+#endif
+#endif /*  __MSVCRT__ */
+_CRTIMP size_t __cdecl         wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
+#define _WTIME_DEFINED
+#endif /* _WTIME_DEFINED */ 
+#endif /* __STRICT_ANSI__ */
 
 #ifdef __cplusplus
 }
index d4367c5..7a297ec 100644 (file)
@@ -36,6 +36,7 @@
 #include <string.h>
 #include <time.h>
 #include <sys/types.h>
+#include <stdint.h>
 
 #define __need_size_t
 #define __need_wint_t
@@ -62,20 +63,28 @@ typedef     unsigned long   _fsize_t;
 
 #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. */
+       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];
+       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];
 };
 #define _WFINDDATA_T_DEFINED
 #endif
@@ -96,6 +105,10 @@ _CRTIMP int __cdecl _wsopen (const wchar_t*, int, int, ...);
 _CRTIMP wchar_t* __cdecl _wmktemp (wchar_t*);
 _CRTIMP long __cdecl   _wfindfirsti64 (const wchar_t*, struct _wfinddatai64_t*);
 _CRTIMP int __cdecl    _wfindnexti64 (long, struct _wfinddatai64_t*);
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP intptr_t __cdecl _wfindfirst64(const wchar_t*, struct __wfinddata64_t*); 
+_CRTIMP intptr_t __cdecl _wfindnext64(intptr_t, struct __wfinddata64_t*);
+#endif
 #endif /* defined (__MSVCRT__) */
 #define _WIO_DEFINED
 #endif /* _WIO_DEFINED */
@@ -218,6 +231,21 @@ struct _stati64 {
     time_t st_mtime;
     time_t st_ctime;
     };
+
+struct __stat64
+{
+    _dev_t st_dev;
+    _ino_t st_ino;
+    _mode_t 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 */
@@ -227,6 +255,9 @@ struct _stati64 {
 #if defined __MSVCRT__
 _CRTIMP int __cdecl    _wstat (const wchar_t*, struct _stat*);
 _CRTIMP int __cdecl    _wstati64 (const wchar_t*, struct _stati64*);
+#if __MSVCRT_VERSION__ >= 0x0601
+_CRTIMP int __cdecl _wstat64 (const wchar_t*, struct __stat64*);
+#endif /* __MSVCRT_VERSION__ >= 0x0601 */
 #endif  /* __MSVCRT__ */
 #define _WSTAT_DEFINED
 #endif /* ! _WSTAT_DEFIND  */
@@ -238,6 +269,9 @@ _CRTIMP wchar_t* __cdecl    _wasctime (const struct tm*);
 _CRTIMP wchar_t* __cdecl       _wctime (const time_t*);
 _CRTIMP wchar_t* __cdecl       _wstrdate (wchar_t*);
 _CRTIMP wchar_t* __cdecl       _wstrtime (wchar_t*);
+#if __MSVCRT_VERSION__ >= 0x601
+_CRTIMP wchar_t* __cdecl       _wctime64 (const __time64_t*);
+#endif
 #endif /* __MSVCRT__ */
 _CRTIMP size_t __cdecl         wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
 #define _WTIME_DEFINED
@@ -314,7 +348,6 @@ unsigned long long __cdecl wcstoull(const wchar_t* __restrict__ nptr,
                            wchar_t ** __restrict__ endptr, int base);
 #endif /* __NO_ISOCEXT */
 
-
 #ifdef __cplusplus
 }      /* end of extern "C" */
 #endif