Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
8408e3a9
Commit
8408e3a9
authored
May 23, 2009
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcrt: Add explicit 32- and 64-bit versions of the time functions.
parent
b175a43f
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
344 additions
and
44 deletions
+344
-44
msvcrt.h
dlls/msvcrt/msvcrt.h
+11
-7
msvcrt.spec
dlls/msvcrt/msvcrt.spec
+16
-0
headers.c
dlls/msvcrt/tests/headers.c
+10
-5
time.c
dlls/msvcrt/time.c
+221
-20
crtdefs.h
include/msvcrt/crtdefs.h
+11
-3
timeb.h
include/msvcrt/sys/timeb.h
+21
-1
time.h
include/msvcrt/time.h
+42
-7
wchar.h
include/msvcrt/wchar.h
+12
-1
No files found.
dlls/msvcrt/msvcrt.h
View file @
8408e3a9
...
...
@@ -198,8 +198,15 @@ extern unsigned msvcrt_create_io_inherit_block(WORD*, BYTE**);
#define _RT_CRNL 252
#define _RT_BANNER 255
struct
MSVCRT__timeb
{
MSVCRT_time_t
time
;
struct
MSVCRT___timeb32
{
MSVCRT___time32_t
time
;
unsigned
short
millitm
;
short
timezone
;
short
dstflag
;
};
struct
MSVCRT___timeb64
{
MSVCRT___time64_t
time
;
unsigned
short
millitm
;
short
timezone
;
short
dstflag
;
...
...
@@ -659,11 +666,9 @@ char* __cdecl MSVCRT_setlocale(int,const char*);
int
__cdecl
MSVCRT_fclose
(
MSVCRT_FILE
*
);
void
__cdecl
MSVCRT_terminate
(
void
);
MSVCRT_FILE
*
__cdecl
MSVCRT__iob_func
(
void
);
MSVCRT_time_t
__cdecl
MSVCRT_mktime
(
struct
MSVCRT_tm
*
t
);
struct
MSVCRT_tm
*
__cdecl
MSVCRT_localtime
(
const
MSVCRT_time_t
*
secs
);
struct
MSVCRT_tm
*
__cdecl
MSVCRT_gmtime
(
const
MSVCRT_time_t
*
secs
);
MSVCRT_clock_t
__cdecl
MSVCRT_clock
(
void
);
double
__cdecl
MSVCRT_difftime
(
MSVCRT_time_t
time1
,
MSVCRT_time_t
time2
);
MSVCRT___time32_t
__cdecl
MSVCRT__time32
(
MSVCRT___time32_t
*
);
MSVCRT___time64_t
__cdecl
MSVCRT__time64
(
MSVCRT___time64_t
*
);
MSVCRT_time_t
__cdecl
MSVCRT_time
(
MSVCRT_time_t
*
);
MSVCRT_FILE
*
__cdecl
MSVCRT__fdopen
(
int
,
const
char
*
);
MSVCRT_FILE
*
__cdecl
MSVCRT__wfdopen
(
int
,
const
MSVCRT_wchar_t
*
);
...
...
@@ -697,7 +702,6 @@ MSVCRT_wchar_t*** __cdecl __p__wenviron(void);
char
*
__cdecl
_strdate
(
char
*
date
);
char
*
__cdecl
_strtime
(
char
*
date
);
int
__cdecl
_setmbcp
(
int
);
void
__cdecl
MSVCRT__ftime
(
struct
MSVCRT__timeb
*
buf
);
int
__cdecl
MSVCRT__close
(
int
);
int
__cdecl
MSVCRT__dup
(
int
);
int
__cdecl
MSVCRT__dup2
(
int
,
int
);
...
...
dlls/msvcrt/msvcrt.spec
View file @
8408e3a9
...
...
@@ -210,9 +210,13 @@
@ cdecl _cputs(str)
@ cdecl _creat(str long) MSVCRT__creat
@ varargs _cscanf(str)
@ cdecl _ctime32(ptr) MSVCRT__ctime32
@ cdecl _ctime64(ptr) MSVCRT__ctime64
@ extern _ctype MSVCRT__ctype
@ cdecl _cwait(ptr long long)
@ extern _daylight MSVCRT___daylight
@ cdecl _difftime32(long long) MSVCRT__difftime32
@ cdecl _difftime64(long long) MSVCRT__difftime64
@ extern _dstbias MSVCRT__dstbias
@ cdecl _dup (long) MSVCRT__dup
@ cdecl _dup2 (long long) MSVCRT__dup2
...
...
@@ -263,6 +267,8 @@
@ cdecl _fstat64(long ptr) MSVCRT__fstat64
@ cdecl _fstati64(long ptr) MSVCRT__fstati64
@ cdecl _ftime(ptr) MSVCRT__ftime
@ cdecl _ftime32(ptr) MSVCRT__ftime32
@ cdecl _ftime64(ptr) MSVCRT__ftime64
@ cdecl -ret64 _ftol() ntdll._ftol
@ cdecl _fullpath(ptr str long)
@ cdecl _futime(long ptr)
...
...
@@ -286,6 +292,8 @@
@ cdecl _getw(ptr) MSVCRT__getw
@ cdecl _getws(ptr) MSVCRT__getws
@ cdecl _global_unwind2(ptr)
@ cdecl _gmtime32(ptr) MSVCRT__gmtime32
@ cdecl _gmtime64(ptr) MSVCRT__gmtime64
@ cdecl _heapadd (ptr long)
@ cdecl _heapchk()
@ cdecl _heapmin()
...
...
@@ -341,6 +349,8 @@
@ cdecl _lfind(ptr ptr ptr long ptr)
@ cdecl _loaddll(str)
@ cdecl -i386 _local_unwind2(ptr long)
@ cdecl _localtime32(ptr) MSVCRT__localtime32
@ cdecl _localtime64(ptr) MSVCRT__localtime64
@ cdecl _lock(long)
@ cdecl _locking(long long long) MSVCRT__locking
@ cdecl _logb( double )
...
...
@@ -414,6 +424,8 @@
@ cdecl _memicmp(str str long) ntdll._memicmp
@ cdecl _mkdir(str) MSVCRT__mkdir
@ cdecl _mktemp(str)
@ cdecl _mktime32(ptr) MSVCRT__mktime32
@ cdecl _mktime64(ptr) MSVCRT__mktime64
@ cdecl _msize(ptr)
@ cdecl _nextafter(double double)
@ cdecl _onexit(ptr) MSVCRT__onexit
...
...
@@ -493,6 +505,8 @@
@ cdecl _tell(long)
@ cdecl -ret64 _telli64(long)
@ cdecl _tempnam(str str)
@ cdecl _time32(ptr) MSVCRT__time32
@ cdecl _time64(ptr) MSVCRT__time64
@ extern _timezone MSVCRT___timezone
@ cdecl _tolower(long) MSVCRT__tolower
@ cdecl _toupper(long) MSVCRT__toupper
...
...
@@ -530,6 +544,8 @@
@ cdecl _wcsset(wstr long)
@ cdecl _wcsupr(wstr) ntdll._wcsupr
@ cdecl _wctime(ptr) MSVCRT__wctime
@ cdecl _wctime32(ptr) MSVCRT__wctime32
@ cdecl _wctime64(ptr) MSVCRT__wctime64
@ extern _wenviron
@ varargs _wexecl(wstr wstr)
@ varargs _wexecle(wstr wstr)
...
...
dlls/msvcrt/tests/headers.c
View file @
8408e3a9
...
...
@@ -115,11 +115,16 @@ static void test_structs(void)
CHECK_FIELD
(
tm
,
tm_wday
);
CHECK_FIELD
(
tm
,
tm_yday
);
CHECK_FIELD
(
tm
,
tm_isdst
);
CHECK_STRUCT
(
_timeb
);
CHECK_FIELD
(
_timeb
,
time
);
CHECK_FIELD
(
_timeb
,
millitm
);
CHECK_FIELD
(
_timeb
,
timezone
);
CHECK_FIELD
(
_timeb
,
dstflag
);
CHECK_STRUCT
(
__timeb32
);
CHECK_FIELD
(
__timeb32
,
time
);
CHECK_FIELD
(
__timeb32
,
millitm
);
CHECK_FIELD
(
__timeb32
,
timezone
);
CHECK_FIELD
(
__timeb32
,
dstflag
);
CHECK_STRUCT
(
__timeb64
);
CHECK_FIELD
(
__timeb64
,
time
);
CHECK_FIELD
(
__timeb64
,
millitm
);
CHECK_FIELD
(
__timeb64
,
timezone
);
CHECK_FIELD
(
__timeb64
,
dstflag
);
CHECK_STRUCT
(
_iobuf
);
CHECK_FIELD
(
_iobuf
,
_ptr
);
CHECK_FIELD
(
_iobuf
,
_cnt
);
...
...
dlls/msvcrt/time.c
View file @
8408e3a9
...
...
@@ -85,9 +85,9 @@ static inline void unix_tm_to_msvcrt( struct MSVCRT_tm *dest, const struct tm *s
#define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
/**********************************************************************
*
mktime
(MSVCRT.@)
*
_mktime64
(MSVCRT.@)
*/
MSVCRT_
time_t
CDECL
MSVCRT_mktime
(
struct
MSVCRT_tm
*
mstm
)
MSVCRT_
__time64_t
CDECL
MSVCRT__mktime64
(
struct
MSVCRT_tm
*
mstm
)
{
time_t
secs
;
struct
tm
tm
;
...
...
@@ -99,10 +99,33 @@ MSVCRT_time_t CDECL MSVCRT_mktime(struct MSVCRT_tm *mstm)
return
secs
<
0
?
-
1
:
secs
;
}
/**********************************************************************
* _mktime32 (MSVCRT.@)
*/
MSVCRT___time32_t
CDECL
MSVCRT__mktime32
(
struct
MSVCRT_tm
*
mstm
)
{
return
MSVCRT__mktime64
(
mstm
);
}
/**********************************************************************
* mktime (MSVCRT.@)
*/
#ifdef _WIN64
MSVCRT___time64_t
CDECL
MSVCRT_mktime
(
struct
MSVCRT_tm
*
mstm
)
{
return
MSVCRT__mktime64
(
mstm
);
}
#else
MSVCRT___time32_t
CDECL
MSVCRT_mktime
(
struct
MSVCRT_tm
*
mstm
)
{
return
MSVCRT__mktime32
(
mstm
);
}
#endif
/*********************************************************************
*
localtime
(MSVCRT.@)
*
_localtime64
(MSVCRT.@)
*/
struct
MSVCRT_tm
*
CDECL
MSVCRT_
localtime
(
const
MSVCRT_time
_t
*
secs
)
struct
MSVCRT_tm
*
CDECL
MSVCRT_
_localtime64
(
const
MSVCRT___time64
_t
*
secs
)
{
struct
tm
tm
;
thread_data_t
*
data
;
...
...
@@ -119,9 +142,33 @@ struct MSVCRT_tm* CDECL MSVCRT_localtime(const MSVCRT_time_t* secs)
}
/*********************************************************************
*
gmtime
(MSVCRT.@)
*
_localtime32
(MSVCRT.@)
*/
struct
MSVCRT_tm
*
CDECL
MSVCRT_gmtime
(
const
MSVCRT_time_t
*
secs
)
struct
MSVCRT_tm
*
CDECL
MSVCRT__localtime32
(
const
MSVCRT___time32_t
*
secs
)
{
MSVCRT___time64_t
secs64
=
*
secs
;
return
MSVCRT__localtime64
(
&
secs64
);
}
/*********************************************************************
* localtime (MSVCRT.@)
*/
#ifdef _WIN64
struct
MSVCRT_tm
*
CDECL
MSVCRT_localtime
(
const
MSVCRT___time64_t
*
secs
)
{
return
MSVCRT__localtime64
(
secs
);
}
#else
struct
MSVCRT_tm
*
CDECL
MSVCRT_localtime
(
const
MSVCRT___time32_t
*
secs
)
{
return
MSVCRT__localtime32
(
secs
);
}
#endif
/*********************************************************************
* _gmtime64 (MSVCRT.@)
*/
struct
MSVCRT_tm
*
CDECL
MSVCRT__gmtime64
(
const
MSVCRT___time64_t
*
secs
)
{
thread_data_t
*
const
data
=
msvcrt_get_thread_data
();
int
i
;
...
...
@@ -154,6 +201,30 @@ struct MSVCRT_tm* CDECL MSVCRT_gmtime(const MSVCRT_time_t* secs)
return
&
data
->
time_buffer
;
}
/*********************************************************************
* _gmtime32 (MSVCRT.@)
*/
struct
MSVCRT_tm
*
CDECL
MSVCRT__gmtime32
(
const
MSVCRT___time32_t
*
secs
)
{
MSVCRT___time64_t
secs64
=
*
secs
;
return
MSVCRT__gmtime64
(
&
secs64
);
}
/*********************************************************************
* gmtime (MSVCRT.@)
*/
#ifdef _WIN64
struct
MSVCRT_tm
*
CDECL
MSVCRT_gmtime
(
const
MSVCRT___time64_t
*
secs
)
{
return
MSVCRT__gmtime64
(
secs
);
}
#else
struct
MSVCRT_tm
*
CDECL
MSVCRT_gmtime
(
const
MSVCRT___time32_t
*
secs
)
{
return
MSVCRT__gmtime32
(
secs
);
}
#endif
/**********************************************************************
* _strdate (MSVCRT.@)
*/
...
...
@@ -223,17 +294,40 @@ MSVCRT_clock_t CDECL MSVCRT_clock(void)
}
/*********************************************************************
*
difftime
(MSVCRT.@)
*
_difftime64
(MSVCRT.@)
*/
double
CDECL
MSVCRT_
difftime
(
MSVCRT_time_t
time1
,
MSVCRT_time
_t
time2
)
double
CDECL
MSVCRT_
_difftime64
(
MSVCRT___time64_t
time1
,
MSVCRT___time64
_t
time2
)
{
return
(
double
)(
time1
-
time2
);
}
/*********************************************************************
* _ftime (MSVCRT.@)
* _difftime32 (MSVCRT.@)
*/
double
CDECL
MSVCRT__difftime32
(
MSVCRT___time32_t
time1
,
MSVCRT___time32_t
time2
)
{
return
(
double
)(
time1
-
time2
);
}
/*********************************************************************
* difftime (MSVCRT.@)
*/
void
CDECL
MSVCRT__ftime
(
struct
MSVCRT__timeb
*
buf
)
#ifdef _WIN64
double
CDECL
MSVCRT_difftime
(
MSVCRT___time64_t
time1
,
MSVCRT___time64_t
time2
)
{
return
MSVCRT__difftime64
(
time1
,
time2
);
}
#else
double
CDECL
MSVCRT_difftime
(
MSVCRT___time32_t
time1
,
MSVCRT___time32_t
time2
)
{
return
MSVCRT__difftime32
(
time1
,
time2
);
}
#endif
/*********************************************************************
* _ftime64 (MSVCRT.@)
*/
void
CDECL
MSVCRT__ftime64
(
struct
MSVCRT___timeb64
*
buf
)
{
TIME_ZONE_INFORMATION
tzinfo
;
FILETIME
ft
;
...
...
@@ -253,20 +347,78 @@ void CDECL MSVCRT__ftime(struct MSVCRT__timeb *buf)
}
/*********************************************************************
*
time
(MSVCRT.@)
*
_ftime32
(MSVCRT.@)
*/
MSVCRT_time_t
CDECL
MSVCRT_time
(
MSVCRT_time_t
*
buf
)
void
CDECL
MSVCRT__ftime32
(
struct
MSVCRT___timeb32
*
buf
)
{
MSVCRT_time_t
curtime
;
struct
MSVCRT__timeb
tb
;
struct
MSVCRT___timeb64
buf64
;
MSVCRT__ftime
(
&
tb
);
MSVCRT__ftime64
(
&
buf64
);
buf
->
time
=
buf64
.
time
;
buf
->
millitm
=
buf64
.
millitm
;
buf
->
timezone
=
buf64
.
timezone
;
buf
->
dstflag
=
buf64
.
dstflag
;
}
/*********************************************************************
* _ftime (MSVCRT.@)
*/
#ifdef _WIN64
void
CDECL
MSVCRT__ftime
(
struct
MSVCRT___timeb64
*
buf
)
{
return
MSVCRT__ftime64
(
buf
);
}
#else
void
CDECL
MSVCRT__ftime
(
struct
MSVCRT___timeb32
*
buf
)
{
return
MSVCRT__ftime32
(
buf
);
}
#endif
/*********************************************************************
* _time64 (MSVCRT.@)
*/
MSVCRT___time64_t
CDECL
MSVCRT__time64
(
MSVCRT___time64_t
*
buf
)
{
MSVCRT___time64_t
curtime
;
struct
MSVCRT___timeb64
tb
;
MSVCRT__ftime64
(
&
tb
);
curtime
=
tb
.
time
;
return
buf
?
*
buf
=
curtime
:
curtime
;
}
/*********************************************************************
* _time32 (MSVCRT.@)
*/
MSVCRT___time32_t
CDECL
MSVCRT__time32
(
MSVCRT___time32_t
*
buf
)
{
MSVCRT___time32_t
curtime
;
struct
MSVCRT___timeb64
tb
;
MSVCRT__ftime64
(
&
tb
);
curtime
=
tb
.
time
;
return
buf
?
*
buf
=
curtime
:
curtime
;
}
/*********************************************************************
* time (MSVCRT.@)
*/
#ifdef _WIN64
MSVCRT___time64_t
CDECL
MSVCRT_time
(
MSVCRT___time64_t
*
buf
)
{
return
MSVCRT__time64
(
buf
);
}
#else
MSVCRT___time32_t
CDECL
MSVCRT_time
(
MSVCRT___time32_t
*
buf
)
{
return
MSVCRT__time32
(
buf
);
}
#endif
/*********************************************************************
* _daylight (MSVCRT.@)
*/
int
MSVCRT___daylight
=
0
;
...
...
@@ -443,20 +595,69 @@ MSVCRT_wchar_t * CDECL MSVCRT__wasctime(const struct MSVCRT_tm *mstm)
}
/*********************************************************************
* ctime (MSVCRT.@)
* _ctime64 (MSVCRT.@)
*/
char
*
CDECL
MSVCRT__ctime64
(
const
MSVCRT___time64_t
*
time
)
{
struct
MSVCRT_tm
*
t
;
t
=
MSVCRT__localtime64
(
time
);
if
(
!
t
)
return
NULL
;
return
MSVCRT_asctime
(
t
);
}
/*********************************************************************
* _ctime32 (MSVCRT.@)
*/
char
*
CDECL
MSVCRT_
ctime
(
const
MSVCRT_time
_t
*
time
)
char
*
CDECL
MSVCRT_
_ctime32
(
const
MSVCRT___time32
_t
*
time
)
{
struct
MSVCRT_tm
*
t
;
t
=
MSVCRT_
localtime
(
time
);
t
=
MSVCRT_
_localtime32
(
time
);
if
(
!
t
)
return
NULL
;
return
MSVCRT_asctime
(
t
);
}
/*********************************************************************
* ctime (MSVCRT.@)
*/
#ifdef _WIN64
char
*
CDECL
MSVCRT_ctime
(
const
MSVCRT___time64_t
*
time
)
{
return
MSVCRT__ctime64
(
time
);
}
#else
char
*
CDECL
MSVCRT_ctime
(
const
MSVCRT___time32_t
*
time
)
{
return
MSVCRT__ctime32
(
time
);
}
#endif
/*********************************************************************
* _wctime64 (MSVCRT.@)
*/
MSVCRT_wchar_t
*
CDECL
MSVCRT__wctime64
(
const
MSVCRT___time64_t
*
time
)
{
return
MSVCRT__wasctime
(
MSVCRT__localtime64
(
time
)
);
}
/*********************************************************************
* _wctime32 (MSVCRT.@)
*/
MSVCRT_wchar_t
*
CDECL
MSVCRT__wctime32
(
const
MSVCRT___time32_t
*
time
)
{
return
MSVCRT__wasctime
(
MSVCRT__localtime32
(
time
)
);
}
/*********************************************************************
* _wctime (MSVCRT.@)
*/
MSVCRT_wchar_t
*
CDECL
MSVCRT__wctime
(
const
MSVCRT_time_t
*
time
)
#ifdef _WIN64
MSVCRT_wchar_t
*
CDECL
MSVCRT__wctime
(
const
MSVCRT___time64_t
*
time
)
{
return
MSVCRT__w
asctime
(
MSVCRT_localtime
(
time
)
);
return
MSVCRT__w
ctime64
(
time
);
}
#else
MSVCRT_wchar_t
*
CDECL
MSVCRT__wctime
(
const
MSVCRT___time32_t
*
time
)
{
return
MSVCRT__wctime32
(
time
);
}
#endif
include/msvcrt/crtdefs.h
View file @
8408e3a9
...
...
@@ -126,11 +126,19 @@ typedef __int64 __time64_t;
#define _TIME64_T_DEFINED
#endif
#ifdef _USE_32BIT_TIME_T
# ifdef _WIN64
# error You cannot use 32-bit time_t in Win64
# endif
#elif !defined(_WIN64)
# define _USE_32BIT_TIME_T
#endif
#ifndef _TIME_T_DEFINED
#ifdef _WIN64
typedef
__time64_t
time_t
;
#else
#ifdef _USE_32BIT_TIME_T
typedef
__time32_t
time_t
;
#else
typedef
__time64_t
time_t
;
#endif
#define _TIME_T_DEFINED
#endif
...
...
include/msvcrt/sys/timeb.h
View file @
8408e3a9
...
...
@@ -33,6 +33,20 @@ struct _timeb
short
timezone
;
short
dstflag
;
};
struct
__timeb32
{
__time32_t
time
;
unsigned
short
millitm
;
short
timezone
;
short
dstflag
;
};
struct
__timeb64
{
__time64_t
time
;
unsigned
short
millitm
;
short
timezone
;
short
dstflag
;
};
#endif
/* _TIMEB_DEFINED */
...
...
@@ -40,12 +54,18 @@ struct _timeb
extern
"C"
{
#endif
void
__cdecl
_ftime
(
struct
_timeb
*
);
void
__cdecl
_ftime32
(
struct
__timeb32
*
);
void
__cdecl
_ftime64
(
struct
__timeb64
*
);
#ifdef __cplusplus
}
#endif
#ifdef _USE_32BIT_TIME_T
static
inline
void
__cdecl
_ftime
(
struct
_timeb
*
tb
)
{
return
_ftime32
((
struct
__timeb32
*
)
tb
);
}
#else
static
inline
void
__cdecl
_ftime
(
struct
_timeb
*
tb
)
{
return
_ftime64
((
struct
__timeb64
*
)
tb
);
}
#endif
#define timeb _timeb
...
...
include/msvcrt/time.h
View file @
8408e3a9
...
...
@@ -77,6 +77,15 @@ extern long _timezone;
extern
char
*
_tzname
;
#endif
#ifdef _USE_32BIT_TIME_T
#define _ctime32 ctime
#define _difftime32 difftime
#define _gmtime32 gmtime
#define _localtime32 localtime
#define _mktime32 mktime
#define _time32 time
#endif
unsigned
__cdecl
_getsystime
(
struct
tm
*
);
unsigned
__cdecl
_setsystime
(
struct
tm
*
,
unsigned
);
char
*
__cdecl
_strdate
(
char
*
);
...
...
@@ -85,21 +94,47 @@ void __cdecl _tzset(void);
char
*
__cdecl
asctime
(
const
struct
tm
*
);
clock_t
__cdecl
clock
(
void
);
char
*
__cdecl
ctime
(
const
time_t
*
);
double
__cdecl
difftime
(
time_t
,
time_t
);
struct
tm
*
__cdecl
gmtime
(
const
time_t
*
);
struct
tm
*
__cdecl
localtime
(
const
time_t
*
);
time_t
__cdecl
mktime
(
struct
tm
*
);
char
*
__cdecl
_ctime32
(
const
__time32_t
*
);
char
*
__cdecl
_ctime64
(
const
__time64_t
*
);
double
__cdecl
_difftime32
(
__time32_t
,
__time32_t
);
double
__cdecl
_difftime64
(
__time64_t
,
__time64_t
);
struct
tm
*
__cdecl
_gmtime32
(
const
__time32_t
*
);
struct
tm
*
__cdecl
_gmtime64
(
const
__time64_t
*
);
struct
tm
*
__cdecl
_localtime32
(
const
__time32_t
*
);
struct
tm
*
__cdecl
_localtime64
(
const
__time64_t
*
);
__time32_t
__cdecl
_mktime32
(
struct
tm
*
);
__time64_t
__cdecl
_mktime64
(
struct
tm
*
);
size_t
__cdecl
strftime
(
char
*
,
size_t
,
const
char
*
,
const
struct
tm
*
);
time_t
__cdecl
time
(
time_t
*
);
__time32_t
__cdecl
_time32
(
__time32_t
*
);
__time64_t
__cdecl
_time64
(
__time64_t
*
);
#ifndef _USE_32BIT_TIME_T
static
inline
char
*
ctime
(
const
time_t
*
t
)
{
return
_ctime64
(
t
);
}
static
inline
double
difftime
(
time_t
t1
,
time_t
t2
)
{
return
_difftime64
(
t1
,
t2
);
}
static
inline
struct
tm
*
gmtime
(
const
time_t
*
t
)
{
return
_gmtime64
(
t
);
}
static
inline
struct
tm
*
localtime
(
const
time_t
*
t
)
{
return
_localtime64
(
t
);
}
static
inline
time_t
mktime
(
struct
tm
*
tm
)
{
return
_mktime64
(
tm
);
}
static
inline
time_t
time
(
time_t
*
t
)
{
return
_time64
(
t
);
}
#endif
#ifndef _WTIME_DEFINED
#define _WTIME_DEFINED
#ifdef _USE_32BIT_TIME_T
#define _wctime32 _wctime
#endif
wchar_t
*
__cdecl
_wasctime
(
const
struct
tm
*
);
size_t
__cdecl
wcsftime
(
wchar_t
*
,
size_t
,
const
wchar_t
*
,
const
struct
tm
*
);
wchar_t
*
__cdecl
_wctime
(
const
time_t
*
);
wchar_t
*
__cdecl
_wctime32
(
const
__time32_t
*
);
wchar_t
*
__cdecl
_wctime64
(
const
__time64_t
*
);
wchar_t
*
__cdecl
_wstrdate
(
wchar_t
*
);
wchar_t
*
__cdecl
_wstrtime
(
wchar_t
*
);
#ifndef _USE_32BIT_TIME_T
static
inline
wchar_t
*
_wctime
(
const
time_t
*
t
)
{
return
_wctime64
(
t
);
}
#endif
#endif
/* _WTIME_DEFINED */
#ifdef __cplusplus
...
...
include/msvcrt/wchar.h
View file @
8408e3a9
...
...
@@ -370,11 +370,22 @@ size_t __cdecl wcsxfrm(wchar_t*,const wchar_t*,size_t);
#ifndef _WTIME_DEFINED
#define _WTIME_DEFINED
#ifdef _USE_32BIT_TIME_T
#define _wctime32 _wctime
#endif
wchar_t
*
__cdecl
_wasctime
(
const
struct
tm
*
);
size_t
__cdecl
wcsftime
(
wchar_t
*
,
size_t
,
const
wchar_t
*
,
const
struct
tm
*
);
wchar_t
*
__cdecl
_wctime
(
const
time_t
*
);
wchar_t
*
__cdecl
_wctime32
(
const
__time32_t
*
);
wchar_t
*
__cdecl
_wctime64
(
const
__time64_t
*
);
wchar_t
*
__cdecl
_wstrdate
(
wchar_t
*
);
wchar_t
*
__cdecl
_wstrtime
(
wchar_t
*
);
#ifndef _USE_32BIT_TIME_T
static
inline
wchar_t
*
_wctime
(
const
time_t
*
t
)
{
return
_wctime64
(
t
);
}
#endif
#endif
/* _WTIME_DEFINED */
wchar_t
__cdecl
btowc
(
int
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment