+2013-06-04 Earnie Boyd <earnie@users.sourceforge.net>
+
+ * include/_mingw.h (MSVCRT_VERSION): Determine a value based on the
+ _WIN32_WINNT value. Add a TODO for check to see if the older
+ __MSVCRT_VERSION__ macro is defined and use it as the value for
+ MSVCRT_VERSION. Give an error if both MSVCRT_VERSION and
+ __MSVCRT_VERSION__ are defined and the values do not match.
+ Remove warnings for value when _USE_32BIT_TIME_T is defined.
+ * include/io.h (_wfindfirst32, _wfindfirst64): Correct declaration of
+ parameter data type. Create _CRTALIAS rather than declaring _CRTIMP.
+ (_findfirst32(), _findnext32()): Create _CRTALIAS rather than declaring
+ a _CRTIMP.
+ (_findfirst64i32, _findfirst32i64, _findnext64i32, _findnext32i64):
+ Remove the _CRTIMP from the declaration, these become inline functions.
+ Also guard for __NO_INLINE__ and make appropriate defined alternatives.
+ (_wfindfirst64i32, _wfindfirst32i64, _wfindnext64i32, _wfindnext32i64):
+ Ditto.
+ * include/sdkddkver.h (_WIN32_WINNT_WIN8): Add definition.
+ * include/sys/stat.h (_stat32, _fstat32, _wstat32): Define as a
+ _CRTALIAS.
+ (_fstat32i64, _stat32i64, _wstat32i64): Add as __CRT_INLINE functions
+ and make appropriate alternative macros for __NO_INLINE__ use.
+ * include/sys/timeb.h (_time32): Create _CRTALIAS when MSVCRT_VERSION
+ < 800.
+ * include/sys/types.h (MSVCRT_VERSION): Remove guard for >= 800 with
+ _USE_32BIT_TIME_T.
+ * include/time.h (_time32, _difftime32, _mktime32, _ctime32, _gmtime32,
+ _localtime32, _wctime32): Create _CRTALIAS when MSVCRT_VERSION < 800.
+ (_difftime64, _mkgtime64): Guard declaration for MSVCRT_VERSION > 800.
+ These functions do not exist in MSVCRT.DLL before Vista.
+ * include/wchar.h (_wctime32): Create _CRTALIAS when MSVCRT_VERSION
+ < 800.
+ (_wfindfirst32, _wfindnext32): Create _CRTALIAS.
+
2013-05-28 Earnie Boyd <earnie@users.sourceforge.net>
* include/time.h: Correct use of MSVCRT_VERSION.
# endif
#endif
+/* @TODO: Need to convert __MSVCRT_VERSION__ value to MSVCRT_VERSION value.
+ * HEX to DECIMAL will not work. */
+#if 0
+#ifdef __MSVCRT_VERSION__
+#ifdef MSVCRT_VERSION
+#if MSVCRT_VERSION != __MSVCRT_VERSION__
+#error You have specified __MSVCRT_VERSION__ and MSVCRT_VERSION and they are \
+not equal.
+#endif /* MSVCRT_VERSION != __MSVCRT_VERSION__ */
+#else /* ndef MSVCRT_VERSION */
+#define MSVCRT_VERSION __MSVCRT_VERSION__
+#endif /* MSVCRT_VERSION */
+#endif /* __MSVCRT_VERSION__ */
+#endif /* 0 */
+
/*
* We need to set a default MSVCRT_VERSION which describes the MSVCRT.DLL on
* the users system. We are defaulting to XP but we recommend the user define
* WIN8 = 1010
*/
#ifndef MSVCRT_VERSION
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
+#define MSVCRT_VERSION 1010
+#elif _WIN32_WINNT >= _WIN32_WINNT_WIN7
+#define MSVCRT_VERSION 900
+#elif _WIN32_WINNT >= _WIN32_WINNT_VISTA
+#define MSVCRT_VERSION 800
+#elif _WIN32_WINNT >= _WIN32_WINNT_WINXP
#define MSVCRT_VERSION 710
-#endif
-
-#ifdef _USE_32BIT_TIME_T
-#if MSVCRT_VERSION < 800
-#warning Your MSVCRT_VERSION does not support the use of _USE_32BIT_TIME_T.
-#warning You should define MSVCRT_VERSION based on your MSVCRT.DLL version.
-#warning ME = 600, XP = 710, VISTA = 800, WIN7 = 900 and WIN8 = 1010.
-#endif /* MSVCRT_VERSION < 800 */
-#endif /* _USE_32BIT_TIME_T */
+#elif _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+#define MSVCRT_VERSION 700
+#elif _WIN32_WINNT >= _WIN32_WINNT_WINME
+#define MSVCRT_VERSION 600
+#else
+#define MSVCRT_VERSION 700
+#endif /* _WIN32_WINNT >= _WIN32_WINNT_WINME */
+#endif /* ndef MSVCRT_VERSION */
struct threadlocalinfostruct;
struct threadmbinfostruct;
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
_fsize_t size;
char name[FILENAME_MAX];
};
-#if defined(_HAVE_32BIT_TIME_T)
-#if defined(_USE_32BIT_TIME_T)
-#define _finddata_t _finddata32_t
-#define _finddatai64_t _finddata32i64_t
-#define _findfirst _findfirst32
-#define _findnext _findnext32
-#define _findfirsti64 _findfirst32i64
-#define _findnexti64 _findnext32i64
-#else /* !_USE_32BIT_TIME_T */
-#define _finddata_t _finddata64i32_t
-#define _finddatai64_t __finddata64_t
-#define _findfirst _findfirst64i32
-#define _findnext _findnext64i32
-#define _findfirsti64 _findfirst64
-#define _findnexti64 _findnext64
-#endif /* _USE_32BIT_TIME_T */
-#else /* !_HAVE_32BIT_TIME_T */
-#define _finddata_t _finddata64i32_t
-#define _finddatai64_t __finddata64_t
-#endif /* _HAVE_32BIT_TIME_T */
+
#define _FINDDATA_T_DEFINED
#endif /* !_FINDDATA_T_DEFINED */
__int32 size;
wchar_t name[FILENAME_MAX];
};
-#if defined(_HAVE_32BIT_TIME_T)
-#if 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 /* ! _USE_32BIT_TIME_T */
-#define _wfinddata_t _wfinddata64i32_t
-#define _wfinddatai64_t _wfinddata64_t
-#define _wfindfirst _wfindfirst64i32
-#define _wfindnext _wfindnext64i32
-#define _wfindfirsti64 _wfindfirst64
-#define _wfindnexti64 _wfindnext64
-#endif /* _USE_32BIT_TIME_T */
-#else /* ! _HAVE_32BIT_TIME_T */
-#define _wfinddata_t _wfinddata64i32_t
-#define _wfinddatai64_t _wfinddata64_t
-#endif /* _HAVE_32BIT_TIME_T */
#define _WFINDDATA_T_DEFINED
#endif /* ! _WFINDDATA_T_DEFINED */
intptr_t _findfirst64i32 (const char *filespec,struct _finddata64i32_t *fileinfo);
intptr_t _wfindfirst (const wchar_t *filespec,struct _wfinddata_t *fileinfo);
-intptr_t _wfindfirst32 (const wchar_t *filespec,struct __wfinddata32_t *fileinfo);
-intptr_t _wfindfirst64 (const wchar_t *filespec, struct __wfinddata64_t *fileinfo);
+intptr_t _wfindfirst32 (const wchar_t *filespec,struct _wfinddata32_t *fileinfo);
+intptr_t _wfindfirst64 (const wchar_t *filespec, struct _wfinddata64_t *fileinfo);
intptr_t _wfindfirsti64 (const wchar_t *filespec, struct _wfinddatai64_t *fileinfo);
intptr_t _wfindfirst32i64(const wchar_t *filespec, struct _wfinddata32i64_t *fileinfo);
intptr_t _wfindfirst64i32(const wchar_t *filespec, struct _wfinddata64i32_t *fileinfo);
*/
_CRTIMP int __cdecl __MINGW_NOTHROW _findclose (intptr_t);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst32 (const char*, struct _finddata32_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findnext32 (intptr_t, struct _finddata32_t*);
+
+/* _findfirst32 and _findnext32 do not exist in MSVCRT.DLL */
+_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst (const char*, struct _finddata32_t*);
+_CRTALIAS intptr_t __cdecl __MINGW_NOTHROW _findfirst32 (const char* _v1, struct _finddata32_t* _v2) {
+ return _findfirst(_v1, _v2);
+}
+_CRTIMP int __cdecl __MINGW_NOTHROW _findnext (intptr_t, struct _finddata32_t*);
+_CRTALIAS int __cdecl __MINGW_NOTHROW _findnext32 (intptr_t _v1, struct _finddata32_t* _v2) {
+ return _findnext(_v1, _v2);
+}
_CRTIMP int __cdecl __MINGW_NOTHROW _chdir (const char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW _getcwd (char*, int);
_CRTIMP __int64 __cdecl __MINGW_NOTHROW _lseeki64(int, __int64, int);
_CRTIMP __int64 __cdecl __MINGW_NOTHROW _telli64(int);
_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst64(const char*, struct __finddata64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst32i64(const char*, struct _finddata32i64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst64i32(const char*, struct _finddata64i32_t*);
+intptr_t __cdecl __MINGW_NOTHROW _findfirst32i64(const char*, struct _finddata32i64_t*);
+intptr_t __cdecl __MINGW_NOTHROW _findfirst64i32(const char*, struct _finddata64i32_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _findnext64(intptr_t, struct __finddata64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findnext32i64(intptr_t, struct _finddata32i64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findnext64i32(intptr_t, struct _finddata64i32_t*);
+int __cdecl __MINGW_NOTHROW _findnext32i64(intptr_t, struct _finddata32i64_t*);
+int __cdecl __MINGW_NOTHROW _findnext64i32(intptr_t, struct _finddata64i32_t*);
+
+#ifndef __NO_INLINE__
+#include <string.h>
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _findfirst32i64(const char* _filename, struct _finddata32i64_t* _fdata) {
+ struct __finddata64_t fd;
+ intptr_t ret = _findfirst64(_filename, &fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct __finddata64_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time32_t)fd.time_create;
+ _fdata->time_access = (__time32_t)fd.time_access;
+ _fdata->time_write = (__time32_t)fd.time_write;
+ _fdata->size = fd.size;
+ strncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _findfirst64i32(const char* _filename, struct _finddata64i32_t* _fdata) {
+ struct _finddata32_t fd;
+ intptr_t ret = _findfirst32(_filename, &fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _finddata32_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time64_t)fd.time_create;
+ _fdata->time_access = (__time64_t)fd.time_access;
+ _fdata->time_write = (__time64_t)fd.time_write;
+ _fdata->size = fd.size;
+ strncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _findnext32i64(intptr_t _fp, struct _finddata32i64_t* _fdata) {
+ struct __finddata64_t fd;
+ int ret = _findnext64(_fp,&fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _finddata32i64_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time32_t)fd.time_create;
+ _fdata->time_access = (__time32_t)fd.time_access;
+ _fdata->time_write = (__time32_t)fd.time_write;
+ _fdata->size = fd.size;
+ strncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _findnext64i32(intptr_t _fp, struct _finddata64i32_t* _fdata) {
+ struct _finddata32_t fd;
+ int ret = _findnext32(_fp, &fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _finddata64i32_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time64_t)fd.time_create;
+ _fdata->time_access = (__time64_t)fd.time_access;
+ _fdata->time_write = (__time64_t)fd.time_write;
+ _fdata->size = fd.size;
+ strncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+#else /* def __NO_INLINE__ */
+#define _findfirst64i32 _findfirst64
+#define _findfirst32i64 _findfirst32
+#define _findnext64i32 _findnext64
+#define _findnext32i64 _findnext32
+#endif /* ndef __NO_INLINE__ */
#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)
-{
+__CRT_INLINE off64_t lseek64 (int fd, off64_t offset, int whence) {
return _lseeki64(fd, (__int64) offset, whence);
}
#endif
* 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. */
+ 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 */
/* Wide character versions. Also declared in wchar.h. */
#if !defined (_WIO_DEFINED)
+#define _WIO_DEFINED
_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 _wfindfirst32 (const wchar_t*, struct __wfinddata32_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext32 (intptr_t, struct __wfinddata32_t*);
+
+/* _wfindfirst32 and _wfindnext32 do not exist in MSVCRT.DLL */
+_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst (const wchar_t*, struct _wfinddata32_t*);
+intptr_t __cdecl __MINGW_NOTHROW _wfindfirst32 (const wchar_t*, struct _wfinddata32_t*);
+_CRTALIAS intptr_t __cdecl __MINGW_NOTHROW _wfindfirst32 (const wchar_t* _v1, struct _wfinddata32_t* _v2) {
+ return _wfindfirst(_v1, _v2);
+}
+_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext (intptr_t, struct _wfinddata32_t*);
+int __cdecl __MINGW_NOTHROW _wfindnext32 (intptr_t, struct _wfinddata32_t*);
+_CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnext32 (intptr_t _v1, struct _wfinddata32_t* _v2) {
+ return _wfindnext(_v1, _v2);
+}
+
_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 _wfindfirst64(const wchar_t*, struct _wfinddata64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst32i64 (const wchar_t*, struct _wfinddata32i64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst64i32 (const wchar_t*, struct _wfinddata64i32_t*);
+intptr_t __cdecl __MINGW_NOTHROW _wfindfirst32i64 (const wchar_t*, struct _wfinddata32i64_t*);
+intptr_t __cdecl __MINGW_NOTHROW _wfindfirst64i32 (const wchar_t*, struct _wfinddata64i32_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext64(intptr_t, struct _wfinddata64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext32i64 (intptr_t, struct _wfinddata32i64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext64i32 (intptr_t, struct _wfinddata64i32_t*);
-#define _WIO_DEFINED
+int __cdecl __MINGW_NOTHROW _wfindnext32i64 (intptr_t, struct _wfinddata32i64_t*);
+int __cdecl __MINGW_NOTHROW _wfindnext64i32 (intptr_t, struct _wfinddata64i32_t*);
+
+#ifndef __NO_INLINE__
+#include <string.h>
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _wfindfirst32i64(const wchar_t* _filename, struct _wfinddata32i64_t* _fdata) {
+ struct _wfinddata64_t fd;
+ intptr_t ret = _wfindfirst64(_filename, &fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _wfinddata64_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time32_t)fd.time_create;
+ _fdata->time_access = (__time32_t)fd.time_access;
+ _fdata->time_write = (__time32_t)fd.time_write;
+ _fdata->size = fd.size;
+ wcsncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _wfindfirst64i32(const wchar_t* _filename, struct _wfinddata64i32_t* _fdata) {
+ struct _wfinddata32_t fd;
+ intptr_t ret = _wfindfirst32(_filename, &fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _wfinddata32_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time64_t)fd.time_create;
+ _fdata->time_access = (__time64_t)fd.time_access;
+ _fdata->time_write = (__time64_t)fd.time_write;
+ _fdata->size = fd.size;
+ wcsncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _wfindnext32i64(intptr_t _fp, struct _wfinddata32i64_t* _fdata) {
+ struct _wfinddata64_t fd;
+ int ret = _wfindnext64(_fp,&fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _wfinddata32i64_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time32_t)fd.time_create;
+ _fdata->time_access = (__time32_t)fd.time_access;
+ _fdata->time_write = (__time32_t)fd.time_write;
+ _fdata->size = fd.size;
+ wcsncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+__CRT_INLINE __cdecl __MINGW_NOTHROW intptr_t _wfindnext64i32(intptr_t _fp, struct _wfinddata64i32_t* _fdata) {
+ struct _wfinddata32_t fd;
+ int ret = _wfindnext32(_fp, &fd);
+ if (ret == -1) {
+ memset(_fdata, 0, sizeof(struct _wfinddata64i32_t));
+ return ret;
+ }
+ _fdata->attrib = fd.attrib;
+ _fdata->time_create = (__time64_t)fd.time_create;
+ _fdata->time_access = (__time64_t)fd.time_access;
+ _fdata->time_write = (__time64_t)fd.time_write;
+ _fdata->size = fd.size;
+ wcsncpy(_fdata->name, fd.name, FILENAME_MAX);
+ return ret;
+}
+
+#else /* def __NO_INLINE__ */
+#define _findfirst64i32 _findfirst64
+#define _finddata64i32_t __finddata64_t
+#define _findfirst32i64 _findfirst32
+#define _finddata32i64_t _finddata32_t
+#define _findnext64i32 _findnext64
+#define _findnext32i64 _findnext32
+
+#define _wfindfirst64i32 _wfindfirst64
+#define _wfindnext64i32 _wfindnext64
+#define _wfinddata64i32_t _wfinddata64_t
+#define _wfindfirst32i64 _wfindfirst32
+#define _wfindnext32i64 _wfindnext32
+#define _wfinddata32i64_t _wfinddata32_t
+#endif /* ndef __NO_INLINE__ */
+
#endif /* _WIO_DEFINED */
#ifndef _NO_OLDNAMES
}
#endif
+#if defined(_USE_32BIT_TIME_T)
+#define _finddata_t _finddata32_t
+#define _finddatai64_t _finddata32i64_t
+#define _findfirst _findfirst32
+#define _findnext _findnext32
+#define _findfirsti64 _findfirst32i64
+#define _findnexti64 _findnext32i64
+#define _wfinddata_t _wfinddata32_t
+#define _wfinddatai64_t _wfinddata32i64_t
+#define _wfindfirst _wfindfirst32
+#define _wfindnext _wfindnext32
+#define _wfindfirsti64 _wfindfirst32i64
+#define _wfindnexti64 _wfindnext32i64
+
+#else /* !_USE_32BIT_TIME_T */
+#define _finddata_t _finddata64i32_t
+#define _finddatai64_t __finddata64_t
+#define _findfirst _findfirst64i32
+#define _findnext _findnext64i32
+#define _findfirsti64 _findfirst64
+#define _findnexti64 _findnext64
+#define _wfinddata_t _wfinddata64i32_t
+#define _wfinddatai64_t _wfinddata64_t
+#define _wfindfirst _wfindfirst64i32
+#define _wfindnext _wfindnext64i32
+#define _wfindfirsti64 _wfindfirst64
+#define _wfindnexti64 _wfindnext64
+
+#endif /* _USE_32BIT_TIME_T */
+
+
#endif /* Not RC_INVOKED */
#endif /* _IO_H_ not defined */
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
*/
#define _WIN32_WINNT_NT4 0x0400
-#define _WIN32_WINNT_NT4E 0x0401
-#define _WIN32_WINNT_WIN95 0x0400
-#define _WIN32_WINNT_WIN98 0x0410
-#define _WIN32_WINNT_WINME 0x0490
+#define _WIN32_WINNT_NT4E 0x0401
+#define _WIN32_WINNT_WIN95 0x0400
+#define _WIN32_WINNT_WIN98 0x0410
+#define _WIN32_WINNT_WINME 0x0490
#define _WIN32_WINNT_WIN2K 0x0500
#define _WIN32_WINNT_WINXP 0x0501
#define _WIN32_WINNT_WS03 0x0502
#define _WIN32_WINNT_WS08 0x0600
#define _WIN32_WINNT_LONGORN 0x0600
#define _WIN32_WINNT_WIN7 0x0601
+#define _WIN32_WINNT_WIN8 0x0602
/**
* Version constants defining _WIN32_IE versions.
__time64_t st_ctime;
};
-#define __stat64 _stat64
-#if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
-#define _fstat _fstat32
-#define _fstati64 _fstat32i64
-#define _stat _stat32
-#define _stati64 _stat32i64
-#else /* !_USE_32BIT_TIME_T */
-#define _fstat _fstat64i32
-#define _fstati64 _fstat64
-#define _stat _stat64i32
-#define _stati64 _stat64
-#endif /* _USE_32BIT_TIME_T */
-#define _STAT_DEFINED
-#endif /* _STAT_DEFINED */
-
#ifdef __cplusplus
extern "C" {
#endif
+/* _stat32 does not exist in MSVCRT.DLL */
+_CRTIMP int __cdecl __MINGW_NOTHROW _stat (const char*, struct _stat32*);
+_CRTALIAS int __cdecl __MINGW_NOTHROW _stat32 (const char* _v1, struct _stat32* _v2) {
+ return _stat(_v1, _v2);
+}
-_CRTIMP int __cdecl __MINGW_NOTHROW _stat32 (const char*, struct _stat32*);
_CRTIMP int __cdecl __MINGW_NOTHROW _stat64 (const char*, struct _stat64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _stat32i64 (const char*, struct _stat32i64*);
+int __cdecl __MINGW_NOTHROW _stat32i64 (const char*, struct _stat32i64*);
int __cdecl __MINGW_NOTHROW _stat64i32 (const char*, struct _stat64i32*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _fstat32 (int, struct _stat32*);
+
+/* _fstat32 does not exist in MSVCRT.DLL */
+_CRTIMP int __cdecl __MINGW_NOTHROW _fstat (int, struct _stat32*);
+_CRTALIAS int __cdecl __MINGW_NOTHROW _fstat32 (int _v1, struct _stat32* _v2) {
+ return _fstat(_v1, _v2);
+}
+
_CRTIMP int __cdecl __MINGW_NOTHROW _fstat64 (int, struct _stat64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _fstat32i64 (int, struct _stat32i64*);
+int __cdecl __MINGW_NOTHROW _fstat32i64 (int, struct _stat32i64*);
int __cdecl __MINGW_NOTHROW _fstat64i32 (int, struct _stat64i32*);
#ifndef __NO_INLINE__
#include <string.h> /* Need memset declaration */
_stat->st_ctime = st.st_ctime;
return ret;
}
+ __CRT_INLINE int __cdecl _fstat32i64(int desc, struct _stat32i64 *_stat)
+ {
+ struct _stat32 st;
+ int ret = _fstat32(desc, &st);
+ if (ret == -1) {
+ memset(_stat, 0, sizeof(struct _stat32i64));
+ return -1;
+ }
+ _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;
+ }
__CRT_INLINE int __cdecl _stat64i32(const char *fname, struct _stat64i32 *_stat)
{
struct _stat64 st;
_stat->st_ctime = st.st_ctime;
return ret;
}
+ __CRT_INLINE int __cdecl _stat32i64(const char *fname, struct _stat32i64 *_stat)
+ {
+ struct _stat32 st;
+ int ret = _stat32(fname, &st);
+ if (ret == -1) {
+ memset(_stat, 0, sizeof(struct _stat32i64));
+ return -1;
+ }
+ _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;
+ }
#else
+#define _stat32i64 _stat32
+#define _fstat32i64 _fstat32
#define _stat64i32 _stat64
#define _fstat64i32 _fstat64
#endif
+#define __stat64 _stat64
+#if defined(_USE_32BIT_TIME_T)
+#define _fstat _fstat32
+#define _fstati64 _fstat32i64
+#define _stat _stat32
+#define _stati64 _stat32i64
+#else /* !_USE_32BIT_TIME_T */
+#define _fstat _fstat64i32
+#define _fstati64 _fstat64
+#define _stat _stat64i32
+#define _stati64 _stat64
+#endif /* _USE_32BIT_TIME_T */
+#define _STAT_DEFINED
+#endif /* _STAT_DEFINED */
+
#if !defined(_NO_OLDNAMES) && !defined(__STRICT_ANSI__)
#define stat _stat
#define fstat _fstat
#endif /* !defined(_NO_OLDNAMES) && !defined(__STRICT_ANSI__) */
#if !defined ( _WSTAT_DEFINED) /* also declared in wchar.h */
-_CRTIMP int __cdecl __MINGW_NOTHROW _wstat32 (const wchar_t*, struct _stat32*);
+/* _wstat32 does not exist in MSVCRT.DLL */
+_CRTALIAS int __cdecl __MINGW_NOTHROW _wstat32 (const wchar_t* _v1, struct _stat32* _v2) {
+ _CRTIMP int __cdecl __MINGW_NOTHROW _wstat (const wchar_t*, struct _stat32*);
+ return _wstat(_v1, _v2);
+}
+
_CRTIMP int __cdecl __MINGW_NOTHROW _wstat64 (const wchar_t*, struct _stat64*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wstat32i64 (const wchar_t*, struct _stat32i64*);
int __cdecl __MINGW_NOTHROW _wstat64i32 (const wchar_t*, struct _stat64i32*);
_stat->st_ctime = st.st_ctime;
return ret;
}
+ __CRT_INLINE int __cdecl _wstat32i64(const wchar_t *fname, struct _stat32i64 *_stat)
+ {
+ struct _stat32 st;
+ int ret = _wstat32(fname, &st);
+ if (ret == -1) {
+ memset(_stat, 0, sizeof(struct _stat32i64));
+ return -1;
+ }
+ _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;
+ }
#else
+#define _wstat32i64 _wstat32
#define _wstat64i32 _wstat64
#endif
-#if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
+#if defined(_USE_32BIT_TIME_T)
#define _wstat _wstat32
#define _wstati64 _wstat32i64
#else /* !_USE_32BIT_TIME_T */
#ifndef RC_INVOKED
-/*
- * TODO: Structure not tested.
- */
-struct _timeb
-{
- time_t time;
- short millitm;
- short timezone;
- short dstflag;
-};
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
* TODO: Structure not tested.
short dstflag;
};
-#ifndef _NO_OLDNAMES
-/*
- * TODO: Structure not tested.
- */
-struct timeb
-{
- time_t time;
- short millitm;
- short timezone;
- short dstflag;
-};
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* TODO: Not tested. */
-_CRTIMP void __cdecl __MINGW_NOTHROW _ftime (struct _timeb*);
-
-#ifndef _NO_OLDNAMES
-_CRTIMP void __cdecl __MINGW_NOTHROW ftime (struct timeb*);
-#endif /* Not _NO_OLDNAMES */
-
/* This requires newer versions of msvcrt.dll (6.10 or higher). */
struct __timeb64
{
short dstflag;
};
+#ifdef _USE_32BIT_TIME_T
+#define _timeb __timeb32
+#else
+#define _timeb __timeb64
+#endif
+
+_CRTIMP void __cdecl __MINGW_NOTHROW _ftime (struct _timeb*);
_CRTIMP void __cdecl __MINGW_NOTHROW _ftime64 (struct __timeb64*);
+#if MSVCRT_VERSION >= 800
_CRTIMP void __cdecl __MINGW_NOTHROW _ftime32 (struct __timeb32*);
-
-#if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
-_CRTALIAS void __cdecl __MINGW_NOTHROW _ftime (struct _timeb* _v) { return(_ftime32 ((struct __timeb32*)_v)); }
#else
+_CRTALIAS void __cdecl __MINGW_NOTHROW _ftime32 (struct __timeb32* _v1) {
+ return _ftime((struct _timeb *)_v1);
+}
+#endif
-_CRTALIAS void __cdecl __MINGW_NOTHROW _ftime (struct _timeb* _v) { return(_ftime64 ((struct __timeb64*)_v)); }
+#if defined(_USE_32BIT_TIME_T)
+#define _ftime _ftime32
+
+#else
+#define _ftime _ftime64
#endif
+#ifndef _NO_OLDNAMES
+#define ftime _ftime
+#define timeb _timeb
+#endif /* Not _NO_OLDNAMES */
+
#ifdef __cplusplus
}
#endif
#ifndef _TIME_T_DEFINED
/* FIXME __STRICT_ANSI__ ! */
-#if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
+#if defined(_USE_32BIT_TIME_T)
typedef __time32_t time_t;
#else
#endif
#ifndef _TIME_T_DEFINED
-# if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
+# if defined(_USE_32BIT_TIME_T)
typedef __time32_t time_t;
# else
typedef __time64_t time_t;
#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
* 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 char* __cdecl __MINGW_NOTHROW asctime (const struct tm*);
+_CRTIMP size_t __cdecl __MINGW_NOTHROW strftime (char*, size_t, const char*, const struct tm*);
+#if MSVCRT_VERSION < 800
+_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*);
+_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*);
+#endif
#ifndef __STRICT_ANSI__
-extern _CRTIMP void __cdecl __MINGW_NOTHROW _tzset (void);
+extern _CRTIMP void __cdecl __MINGW_NOTHROW _tzset (void);
#ifndef _NO_OLDNAMES
-extern _CRTIMP void __cdecl __MINGW_NOTHROW tzset (void);
+extern _CRTIMP void __cdecl __MINGW_NOTHROW tzset (void);
#endif
_CRTIMP char* __cdecl __MINGW_NOTHROW _strdate(char*);
_CRTIMP char* __cdecl __MINGW_NOTHROW _ctime32 (const __time32_t*);
_CRTIMP struct tm* __cdecl __MINGW_NOTHROW _gmtime32 (const __time32_t*);
_CRTIMP struct tm* __cdecl __MINGW_NOTHROW _localtime32(const __time32_t*);
+#else /* MSVCRT_VERSION < 800 */
+_CRTALIAS __time32_t __cdecl __MINGW_NOTHROW _time32 (__time32_t *_v) {
+ return ((__time32_t)time((time_t)_v));
+}
+_CRTALIAS double __cdecl __MINGW_NOTHROW _difftime32 (__time32_t _v1, __time32_t _v2) {
+ return (difftime((time_t)_v1, (time_t)_v2));
+}
+_CRTALIAS __time32_t __cdecl __MINGW_NOTHROW _mktime32(struct tm* _v1) {
+ return ((__time32_t)mktime(_v1));
+}
+_CRTALIAS char* __cdecl __MINGW_NOTHROW _ctime32(const __time32_t* _v1) {
+ return (ctime((time_t)_v1));
+}
+_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW _gmtime32(const __time32_t* _v1) {
+ return (gmtime((time_t)_v1));
+}
+_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW _localtime32(const __time32_t* _v1) {
+ return (localtime((time_t)_v1));
+}
+#endif /* MSVCRT_VERSION >= 800 */
#if defined(_USE_32BIT_TIME_T)
-_CRTALIAS time_t __cdecl __MINGW_NOTHROW time (time_t* _v)
+/* Prevent circular recursion. */
+#if MSVCRT_VERSION >= 800
+_CRTALIAS time_t __cdecl __MINGW_NOTHROW time (time_t* _v)
{ return(_time32 (_v)); }
-_CRTALIAS double __cdecl __MINGW_NOTHROW difftime(time_t _v1, time_t _v2)
+_CRTALIAS double __cdecl __MINGW_NOTHROW difftime(time_t _v1, time_t _v2)
{ return(_difftime32 (_v1,_v2)); }
-_CRTALIAS time_t __cdecl __MINGW_NOTHROW mktime (struct tm* _v)
+_CRTALIAS time_t __cdecl __MINGW_NOTHROW mktime (struct tm* _v)
{ return(_mktime32 (_v)); }
-_CRTALIAS time_t __cdecl __MINGW_NOTHROW _mkgmtime (struct tm* _v)
+_CRTALIAS time_t __cdecl __MINGW_NOTHROW _mkgmtime (struct tm* _v)
{ return(_mkgmtime32 (_v)); }
-_CRTALIAS char* __cdecl __MINGW_NOTHROW ctime (const time_t* _v)
+_CRTALIAS char* __cdecl __MINGW_NOTHROW ctime (const time_t* _v)
{ return(_ctime32 (_v)); }
-_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW gmtime (const time_t* _v)
+_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW gmtime (const time_t* _v)
{ return(_gmtime32 (_v)); }
-_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW localtime (const time_t* _v)
+_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW localtime (const time_t* _v)
{ return(_localtime32 (_v)); }
+#endif /* MSVCRT_VERSION >= 800 */
-#else
-_CRTALIAS time_t __cdecl __MINGW_NOTHROW time (time_t* _v)
- { return(_time64 (_v)); }
+#else /* !defined(_USE_32BIT_TIME_T) */
+/* _difftime64 and _mkgmtime64 are missing from MSVCRT.DLL pre Vista. */
+#if MSVCRT_VERSION >= 800
_CRTALIAS double __cdecl __MINGW_NOTHROW difftime(time_t _v1, time_t _v2)
{ return(_difftime64 (_v1,_v2)); }
-_CRTALIAS time_t __cdecl __MINGW_NOTHROW mktime (struct tm* _v)
- { return(_mktime64 (_v)); }
_CRTALIAS time_t __cdecl __MINGW_NOTHROW _mkgmtime (struct tm* _v)
{ return(_mkgmtime64 (_v)); }
+#endif /* MSVCRT_VERSION >= 800 */
+_CRTALIAS time_t __cdecl __MINGW_NOTHROW time (time_t* _v)
+ { return(_time64 (_v)); }
+_CRTALIAS time_t __cdecl __MINGW_NOTHROW mktime (struct tm* _v)
+ { return(_mktime64 (_v)); }
_CRTALIAS char* __cdecl __MINGW_NOTHROW ctime (const time_t* _v)
{ return(_ctime64 (_v)); }
_CRTALIAS struct tm* __cdecl __MINGW_NOTHROW gmtime (const time_t* _v)
{ return(_localtime64 (_v)); }
#endif /* _USE_32BIT_TIME_T */
-#else /* MSVCRT_VERSION < 800 */
-_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*);
-_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*);
-#endif /* MSVCRT_VERSION >= 800 */
-
/*
* _daylight: non zero if daylight savings time is used.
* _timezone: difference in seconds between GMT and local time.
#ifndef __STRICT_ANSI__
_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*);
+_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wctime(const time_t*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wctime64 (const __time64_t*);
#ifdef MSVCRT_VERSION >= 800
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wctime32 (const __time32_t*);
-#endif
+#else
+_CRTALIAS whcar_t* __cdecl __MINGW_NOTHROW _wctime32 (const __time32_t* _v) {
+ return(_wctime((time_t)_v));
+}
+#endif /* MSVCRT_VERSION >= 800 */
-#ifdef _USE_32BIT_TIME_T && MSVCRT_VERSION >= 800
+#ifdef _USE_32BIT_TIME_T
_CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW _wctime (const time_t* _v) { return(_wctime32 (_v)); }
#else
_CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW _wctime (const time_t* _v) { return(_wctime64 (_v)); }
#ifndef __STRICT_ANSI__
_CRTIMP int __cdecl __MINGW_NOTHROW swprintf (wchar_t*, const wchar_t*, ...);
_CRTIMP int __cdecl __MINGW_NOTHROW vswprintf (wchar_t*, const wchar_t*, __VALIST);
-#endif
+#endif /* ndef __STRICT_ANSI__ */
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW fgetws (wchar_t*, int, FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fputws (const wchar_t*, FILE*);
const wchar_t * __restrict__, __VALIST);
int __cdecl __MINGW_NOTHROW vswscanf (const wchar_t * __restrict__,
const wchar_t * __restrict__, __VALIST);
-#endif
+#endif /* ndef __NO_ISOCEXT__ */
#define _WSTDIO_DEFINED
#endif /* _WSTDIO_DEFINED */
#ifndef __STRICT_ANSI__
/* 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*);
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wctime64 (const __time64_t*);
+
+/* MSVCRT.DLL may not have _wctime32 depending on OS version */
+#if MSVCRT_VERSION >= 800
_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wctime32 (const __time32_t*);
-#if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
+#else /* MSVCRT_VERSION < 800 */
+_CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW _wctime32 (const __time32_t* _v1) {
+ _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wctime (const __time32_t*);
+ return _wctime(_v1);
+}
+#endif /* MSVCRT_VERSION >= 800 */
+
+#if MSVCRT_VERSION >= 800
+#if defined(_USE_32BIT_TIME_T)
_CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW _wctime (const time_t* _v) { return(_wctime32 (_v)); }
-#else
+#else /* MSVCRT_VERSION < 800 */
_CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW _wctime (const time_t* _v) { return(_wctime64 (_v)); }
-#endif
+#endif /* defined(_USE_32BIT_TIME_T) */
+#endif /* MSVCRT_VERSION >= 800 */
+
+#else /* MSVCRT_VERSION < 800 */
+#ifdef _USE_32BIT_TIME_T
+#define _wctime _wctime32
+#else /* ndef _USE_32BIT_TIME_T */
+#define _wctime _wctime64
+
+#endif /* def _USE_32BIT_TIME_T */
+#endif /* MSVCRT_VERSION >= 800 */
#endif /* __STRICT_ANSI__ */
_CRTIMP size_t __cdecl __MINGW_NOTHROW wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
__int64 size;
wchar_t name[260];
};
-struct __wfinddata64_t {
+struct _wfinddata64_t {
unsigned attrib;
__time64_t time_create;
__time64_t time_access;
wchar_t name[260];
};
#include <stdio.h>
-struct __wfinddata32_t {
+struct _wfinddata32_t {
unsigned attrib;
__time32_t time_create;
__time32_t time_access;
/* Wide character versions. Also defined in io.h. */
#if !defined (_WIO_DEFINED)
+#define _WIO_DEFINED
#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 long __cdecl __MINGW_NOTHROW _wfindfirst64i32 (const wchar_t*, struct _wfinddata64i32_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext32i64 (long, struct _wfinddata32i64_t*);
_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext64i32 (long, struct _wfinddata64i32_t*);
-_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*);
-_CRTIMP long __cdecl __MINGW_NOTHROW _wfindfirst32 (const wchar_t*, struct __wfinddata32_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext32 (long, struct __wfinddata32_t*);
+_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*);
+
+/* _wfindfirst32 and _wfindnext32 do not exist in MSVCRT.DLL */
+_CRTALIAS intptr_t __cdecl __MINGW_NOTHROW _wfindfirst32 (const wchar_t* _v1, struct _wfinddata32_t* _v2) {
+ _CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst (const wchar_t*, struct _wfinddata32_t*);
+ return _wfindfirst(_v1, _v2);
+}
+_CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnext32 (intptr_t _v1, struct _wfinddata32_t* _v2) {
+ _CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext (intptr_t, struct _wfinddata32_t*);
+ return _wfindnext(_v1, _v2);
+}
+
+#if 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 /* !defined(_USE_32BIT_TIME_T)
+#define _wfinddata_t _wfinddata64i32_t
+#define _wfinddatai64_t _wfinddata64_t
+#define _wfindfirst _wfindfirst64i32
+#define _wfindnext _wfindnext64i32
+#define _wfindfirsti64 _wfindfirst64
+#define _wfindnexti64 _wfindnext64
+
+#endif /* defined(_USE_32BIT_TIME_T) */
-#if defined(_USE_32BIT_TIME_T) && MSVCRT_VERSION >= 800
-_CRTALIAS long __cdecl __MINGW_NOTHROW _wfindfirst (const wchar_t* _v1, struct _wfinddata_t* _v2) { return(_wfindfirst32 (_v1,(struct __wfinddata32_t*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnext (long _v1, struct _wfinddata_t* _v2) { return(_wfindnext32 (_v1,(struct __wfinddata32_t*)_v2)); }
-_CRTALIAS long __cdecl __MINGW_NOTHROW _wfindfirsti64 (const wchar_t* _v1, struct _wfinddatai64_t* _v2) { return(_wfindfirst32i64 (_v1,(struct _wfinddata32i64_t*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnexti64 (long _v1, struct _wfinddatai64_t* _v2) { return(_wfindnext32i64 (_v1,(struct _wfinddata32i64_t*)_v2)); }
-#else
-
-_CRTALIAS long __cdecl __MINGW_NOTHROW _wfindfirst (const wchar_t* _v1, struct _wfinddata_t* _v2) { return(_wfindfirst64i32 (_v1,(struct _wfinddata64i32_t*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnext (long _v1, struct _wfinddata_t* _v2) { return(_wfindnext64i32 (_v1,(struct _wfinddata64i32_t*)_v2)); }
-_CRTALIAS long __cdecl __MINGW_NOTHROW _wfindfirsti64 (const wchar_t* _v1, struct _wfinddatai64_t* _v2) { return(_wfindfirst64 (_v1,(struct __wfinddata64_t*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnexti64 (long _v1, struct _wfinddatai64_t* _v2) { return(_wfindnext64 (_v1,(struct __wfinddata64_t*)_v2)); }
-#endif /* !_USE_32BIT_TIME_T*/
-
-#define _WIO_DEFINED
#endif /* _WIO_DEFINED */
#ifndef _WDIRECT_DEFINED