Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
6c4b7758
Commit
6c4b7758
authored
Nov 30, 2020
by
Piotr Caban
Committed by
Alexandre Julliard
Nov 30, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcrt: Use struct tm from public header.
Signed-off-by:
Piotr Caban
<
piotr@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
8180f400
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
48 deletions
+46
-48
msvcrt.h
dlls/msvcrt/msvcrt.h
+1
-3
time.c
dlls/msvcrt/time.c
+45
-45
No files found.
dlls/msvcrt/msvcrt.h
View file @
6c4b7758
...
...
@@ -44,8 +44,6 @@ typedef void (__cdecl *MSVCRT_security_error_handler)(int, void *);
typedef
struct
{
ULONG
x80
[
3
];}
MSVCRT__LDOUBLE
;
/* Intel 80 bit FP format has sizeof() 12 */
#define MSVCRT_tm tm
typedef
struct
__lc_time_data
{
union
{
const
char
*
str
[
43
];
...
...
@@ -145,7 +143,7 @@ struct __thread_data {
void
*
unk2
[
2
];
char
*
asctime_buffer
;
/* buffer for asctime */
wchar_t
*
wasctime_buffer
;
/* buffer for wasctime */
struct
MSVCRT_tm
*
time_buffer
;
/* buffer for localtime/gmtime */
struct
tm
*
time_buffer
;
/* buffer for localtime/gmtime */
char
*
efcvt_buffer
;
/* buffer for ecvt/fcvt */
int
unk3
[
2
];
void
*
unk4
[
3
];
...
...
dlls/msvcrt/time.c
View file @
6c4b7758
...
...
@@ -64,7 +64,7 @@ static inline BOOL IsLeapYear(int Year)
return
Year
%
4
==
0
&&
(
Year
%
100
!=
0
||
Year
%
400
==
0
);
}
static
inline
void
write_invalid_msvcrt_tm
(
struct
MSVCRT_
tm
*
tm
)
static
inline
void
write_invalid_msvcrt_tm
(
struct
tm
*
tm
)
{
tm
->
tm_sec
=
-
1
;
tm
->
tm_min
=
-
1
;
...
...
@@ -219,7 +219,7 @@ static BOOL is_dst(const SYSTEMTIME *st)
#define TICKSPERMSEC 10000
#define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
static
__time64_t
mktime_helper
(
struct
MSVCRT_
tm
*
mstm
,
BOOL
local
)
static
__time64_t
mktime_helper
(
struct
tm
*
mstm
,
BOOL
local
)
{
SYSTEMTIME
st
;
FILETIME
ft
;
...
...
@@ -310,7 +310,7 @@ static __time64_t mktime_helper(struct MSVCRT_tm *mstm, BOOL local)
/**********************************************************************
* _mktime64 (MSVCRT.@)
*/
__time64_t
CDECL
MSVCRT__mktime64
(
struct
MSVCRT_
tm
*
mstm
)
__time64_t
CDECL
MSVCRT__mktime64
(
struct
tm
*
mstm
)
{
return
mktime_helper
(
mstm
,
TRUE
);
}
...
...
@@ -318,7 +318,7 @@ __time64_t CDECL MSVCRT__mktime64(struct MSVCRT_tm *mstm)
/**********************************************************************
* _mktime32 (MSVCRT.@)
*/
__time32_t
CDECL
MSVCRT__mktime32
(
struct
MSVCRT_
tm
*
mstm
)
__time32_t
CDECL
MSVCRT__mktime32
(
struct
tm
*
mstm
)
{
__time64_t
ret
=
MSVCRT__mktime64
(
mstm
);
return
ret
==
(
__time32_t
)
ret
?
ret
:
-
1
;
...
...
@@ -328,12 +328,12 @@ __time32_t CDECL MSVCRT__mktime32(struct MSVCRT_tm *mstm)
* mktime (MSVCRT.@)
*/
#ifdef _WIN64
__time64_t
CDECL
MSVCRT_mktime
(
struct
MSVCRT_
tm
*
mstm
)
__time64_t
CDECL
MSVCRT_mktime
(
struct
tm
*
mstm
)
{
return
MSVCRT__mktime64
(
mstm
);
}
#else
__time32_t
CDECL
MSVCRT_mktime
(
struct
MSVCRT_
tm
*
mstm
)
__time32_t
CDECL
MSVCRT_mktime
(
struct
tm
*
mstm
)
{
return
MSVCRT__mktime32
(
mstm
);
}
...
...
@@ -344,7 +344,7 @@ __time32_t CDECL MSVCRT_mktime(struct MSVCRT_tm *mstm)
*
* time->tm_isdst value is ignored
*/
__time64_t
CDECL
MSVCRT__mkgmtime64
(
struct
MSVCRT_
tm
*
time
)
__time64_t
CDECL
MSVCRT__mkgmtime64
(
struct
tm
*
time
)
{
return
mktime_helper
(
time
,
FALSE
);
}
...
...
@@ -352,7 +352,7 @@ __time64_t CDECL MSVCRT__mkgmtime64(struct MSVCRT_tm *time)
/**********************************************************************
* _mkgmtime32 (MSVCRT.@)
*/
__time32_t
CDECL
MSVCRT__mkgmtime32
(
struct
MSVCRT_
tm
*
time
)
__time32_t
CDECL
MSVCRT__mkgmtime32
(
struct
tm
*
time
)
{
__time64_t
ret
=
MSVCRT__mkgmtime64
(
time
);
return
ret
==
(
__time32_t
)
ret
?
ret
:
-
1
;
...
...
@@ -362,12 +362,12 @@ __time32_t CDECL MSVCRT__mkgmtime32(struct MSVCRT_tm *time)
* _mkgmtime (MSVCRT.@)
*/
#ifdef _WIN64
__time64_t
CDECL
MSVCRT__mkgmtime
(
struct
MSVCRT_
tm
*
time
)
__time64_t
CDECL
MSVCRT__mkgmtime
(
struct
tm
*
time
)
{
return
MSVCRT__mkgmtime64
(
time
);
}
#else
__time32_t
CDECL
MSVCRT__mkgmtime
(
struct
MSVCRT_
tm
*
time
)
__time32_t
CDECL
MSVCRT__mkgmtime
(
struct
tm
*
time
)
{
return
MSVCRT__mkgmtime32
(
time
);
}
...
...
@@ -376,7 +376,7 @@ __time32_t CDECL MSVCRT__mkgmtime(struct MSVCRT_tm *time)
/*********************************************************************
* _localtime64_s (MSVCRT.@)
*/
int
CDECL
_localtime64_s
(
struct
MSVCRT_
tm
*
res
,
const
__time64_t
*
secs
)
int
CDECL
_localtime64_s
(
struct
tm
*
res
,
const
__time64_t
*
secs
)
{
int
i
;
FILETIME
ft
;
...
...
@@ -424,12 +424,12 @@ int CDECL _localtime64_s(struct MSVCRT_tm *res, const __time64_t *secs)
/*********************************************************************
* _localtime64 (MSVCRT.@)
*/
struct
MSVCRT_
tm
*
CDECL
MSVCRT__localtime64
(
const
__time64_t
*
secs
)
struct
tm
*
CDECL
MSVCRT__localtime64
(
const
__time64_t
*
secs
)
{
thread_data_t
*
data
=
msvcrt_get_thread_data
();
if
(
!
data
->
time_buffer
)
data
->
time_buffer
=
MSVCRT_malloc
(
sizeof
(
struct
MSVCRT_
tm
));
data
->
time_buffer
=
MSVCRT_malloc
(
sizeof
(
struct
tm
));
if
(
_localtime64_s
(
data
->
time_buffer
,
secs
))
return
NULL
;
...
...
@@ -439,7 +439,7 @@ struct MSVCRT_tm* CDECL MSVCRT__localtime64(const __time64_t* secs)
/*********************************************************************
* _localtime32 (MSVCRT.@)
*/
struct
MSVCRT_
tm
*
CDECL
MSVCRT__localtime32
(
const
__time32_t
*
secs
)
struct
tm
*
CDECL
MSVCRT__localtime32
(
const
__time32_t
*
secs
)
{
__time64_t
secs64
;
...
...
@@ -453,7 +453,7 @@ struct MSVCRT_tm* CDECL MSVCRT__localtime32(const __time32_t* secs)
/*********************************************************************
* _localtime32_s (MSVCRT.@)
*/
int
CDECL
_localtime32_s
(
struct
MSVCRT_
tm
*
time
,
const
__time32_t
*
secs
)
int
CDECL
_localtime32_s
(
struct
tm
*
time
,
const
__time32_t
*
secs
)
{
__time64_t
secs64
;
...
...
@@ -474,12 +474,12 @@ int CDECL _localtime32_s(struct MSVCRT_tm *time, const __time32_t *secs)
* localtime (MSVCRT.@)
*/
#ifdef _WIN64
struct
MSVCRT_
tm
*
CDECL
MSVCRT_localtime
(
const
__time64_t
*
secs
)
struct
tm
*
CDECL
MSVCRT_localtime
(
const
__time64_t
*
secs
)
{
return
MSVCRT__localtime64
(
secs
);
}
#else
struct
MSVCRT_
tm
*
CDECL
MSVCRT_localtime
(
const
__time32_t
*
secs
)
struct
tm
*
CDECL
MSVCRT_localtime
(
const
__time32_t
*
secs
)
{
return
MSVCRT__localtime32
(
secs
);
}
...
...
@@ -488,7 +488,7 @@ struct MSVCRT_tm* CDECL MSVCRT_localtime(const __time32_t* secs)
/*********************************************************************
* _gmtime64 (MSVCRT.@)
*/
int
CDECL
MSVCRT__gmtime64_s
(
struct
MSVCRT_
tm
*
res
,
const
__time64_t
*
secs
)
int
CDECL
MSVCRT__gmtime64_s
(
struct
tm
*
res
,
const
__time64_t
*
secs
)
{
int
i
;
FILETIME
ft
;
...
...
@@ -531,12 +531,12 @@ int CDECL MSVCRT__gmtime64_s(struct MSVCRT_tm *res, const __time64_t *secs)
/*********************************************************************
* _gmtime64 (MSVCRT.@)
*/
struct
MSVCRT_
tm
*
CDECL
MSVCRT__gmtime64
(
const
__time64_t
*
secs
)
struct
tm
*
CDECL
MSVCRT__gmtime64
(
const
__time64_t
*
secs
)
{
thread_data_t
*
const
data
=
msvcrt_get_thread_data
();
if
(
!
data
->
time_buffer
)
data
->
time_buffer
=
MSVCRT_malloc
(
sizeof
(
struct
MSVCRT_
tm
));
data
->
time_buffer
=
MSVCRT_malloc
(
sizeof
(
struct
tm
));
if
(
MSVCRT__gmtime64_s
(
data
->
time_buffer
,
secs
))
return
NULL
;
...
...
@@ -546,7 +546,7 @@ struct MSVCRT_tm* CDECL MSVCRT__gmtime64(const __time64_t *secs)
/*********************************************************************
* _gmtime32_s (MSVCRT.@)
*/
int
CDECL
MSVCRT__gmtime32_s
(
struct
MSVCRT_
tm
*
res
,
const
__time32_t
*
secs
)
int
CDECL
MSVCRT__gmtime32_s
(
struct
tm
*
res
,
const
__time32_t
*
secs
)
{
__time64_t
secs64
;
...
...
@@ -560,7 +560,7 @@ int CDECL MSVCRT__gmtime32_s(struct MSVCRT_tm *res, const __time32_t *secs)
/*********************************************************************
* _gmtime32 (MSVCRT.@)
*/
struct
MSVCRT_
tm
*
CDECL
MSVCRT__gmtime32
(
const
__time32_t
*
secs
)
struct
tm
*
CDECL
MSVCRT__gmtime32
(
const
__time32_t
*
secs
)
{
__time64_t
secs64
;
...
...
@@ -575,12 +575,12 @@ struct MSVCRT_tm* CDECL MSVCRT__gmtime32(const __time32_t* secs)
* gmtime (MSVCRT.@)
*/
#ifdef _WIN64
struct
MSVCRT_
tm
*
CDECL
MSVCRT_gmtime
(
const
__time64_t
*
secs
)
struct
tm
*
CDECL
MSVCRT_gmtime
(
const
__time64_t
*
secs
)
{
return
MSVCRT__gmtime64
(
secs
);
}
#else
struct
MSVCRT_
tm
*
CDECL
MSVCRT_gmtime
(
const
__time32_t
*
secs
)
struct
tm
*
CDECL
MSVCRT_gmtime
(
const
__time32_t
*
secs
)
{
return
MSVCRT__gmtime32
(
secs
);
}
...
...
@@ -1001,7 +1001,7 @@ static inline BOOL strftime_int(STRFTIME_CHAR *str, size_t *pos, size_t max,
}
static
inline
BOOL
strftime_format
(
STRFTIME_CHAR
*
str
,
size_t
*
pos
,
size_t
max
,
const
struct
MSVCRT_
tm
*
mstm
,
__lc_time_data
*
time_data
,
const
STRFTIME_CHAR
*
format
)
const
struct
tm
*
mstm
,
__lc_time_data
*
time_data
,
const
STRFTIME_CHAR
*
format
)
{
size_t
count
;
BOOL
ret
=
TRUE
;
...
...
@@ -1176,7 +1176,7 @@ static inline BOOL strftime_tzdiff(STRFTIME_CHAR *str, size_t *pos, size_t max,
#endif
static
size_t
strftime_impl
(
STRFTIME_CHAR
*
str
,
size_t
max
,
const
STRFTIME_CHAR
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
const
STRFTIME_CHAR
*
format
,
const
struct
tm
*
mstm
,
__lc_time_data
*
time_data
,
_locale_t
loc
)
{
size_t
ret
,
tmp
;
...
...
@@ -1526,7 +1526,7 @@ einval_error:
}
static
size_t
strftime_helper
(
char
*
str
,
size_t
max
,
const
char
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
__lc_time_data
*
time_data
,
_locale_t
loc
)
const
struct
tm
*
mstm
,
__lc_time_data
*
time_data
,
_locale_t
loc
)
{
#if _MSVCR_VER <= 90
TRACE
(
"(%p %Iu %s %p %p %p)
\n
"
,
str
,
max
,
format
,
mstm
,
time_data
,
loc
);
...
...
@@ -1565,7 +1565,7 @@ static size_t strftime_helper(char *str, size_t max, const char *format,
* _strftime_l (MSVCR80.@)
*/
size_t
CDECL
MSVCRT__strftime_l
(
char
*
str
,
size_t
max
,
const
char
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
_locale_t
loc
)
const
struct
tm
*
mstm
,
_locale_t
loc
)
{
return
strftime_helper
(
str
,
max
,
format
,
mstm
,
NULL
,
loc
);
}
...
...
@@ -1575,7 +1575,7 @@ size_t CDECL MSVCRT__strftime_l( char *str, size_t max, const char *format,
* _Strftime (MSVCRT.@)
*/
size_t
CDECL
_Strftime
(
char
*
str
,
size_t
max
,
const
char
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
__lc_time_data
*
time_data
)
const
struct
tm
*
mstm
,
__lc_time_data
*
time_data
)
{
return
strftime_helper
(
str
,
max
,
format
,
mstm
,
time_data
,
NULL
);
}
...
...
@@ -1584,13 +1584,13 @@ size_t CDECL _Strftime(char *str, size_t max, const char *format,
* strftime (MSVCRT.@)
*/
size_t
CDECL
MSVCRT_strftime
(
char
*
str
,
size_t
max
,
const
char
*
format
,
const
struct
MSVCRT_
tm
*
mstm
)
const
struct
tm
*
mstm
)
{
return
strftime_helper
(
str
,
max
,
format
,
mstm
,
NULL
,
NULL
);
}
static
size_t
wcsftime_helper
(
wchar_t
*
str
,
size_t
max
,
const
wchar_t
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
const
wchar_t
*
format
,
const
struct
tm
*
mstm
,
__lc_time_data
*
time_data
,
_locale_t
loc
)
{
#if _MSVCR_VER <= 90
...
...
@@ -1623,7 +1623,7 @@ static size_t wcsftime_helper( wchar_t *str, size_t max,
* _wcsftime_l (MSVCRT.@)
*/
size_t
CDECL
MSVCRT__wcsftime_l
(
wchar_t
*
str
,
size_t
max
,
const
wchar_t
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
_locale_t
loc
)
const
wchar_t
*
format
,
const
struct
tm
*
mstm
,
_locale_t
loc
)
{
return
wcsftime_helper
(
str
,
max
,
format
,
mstm
,
NULL
,
loc
);
}
...
...
@@ -1632,7 +1632,7 @@ size_t CDECL MSVCRT__wcsftime_l( wchar_t *str, size_t max,
* wcsftime (MSVCRT.@)
*/
size_t
CDECL
MSVCRT_wcsftime
(
wchar_t
*
str
,
size_t
max
,
const
wchar_t
*
format
,
const
struct
MSVCRT_
tm
*
mstm
)
const
wchar_t
*
format
,
const
struct
tm
*
mstm
)
{
return
wcsftime_helper
(
str
,
max
,
format
,
mstm
,
NULL
,
NULL
);
}
...
...
@@ -1642,14 +1642,14 @@ size_t CDECL MSVCRT_wcsftime( wchar_t *str, size_t max,
* _Wcsftime (MSVCR110.@)
*/
size_t
CDECL
_Wcsftime
(
wchar_t
*
str
,
size_t
max
,
const
wchar_t
*
format
,
const
struct
MSVCRT_
tm
*
mstm
,
const
wchar_t
*
format
,
const
struct
tm
*
mstm
,
__lc_time_data
*
time_data
)
{
return
wcsftime_helper
(
str
,
max
,
format
,
mstm
,
time_data
,
NULL
);
}
#endif
static
char
*
asctime_buf
(
char
*
buf
,
const
struct
MSVCRT_
tm
*
mstm
)
static
char
*
asctime_buf
(
char
*
buf
,
const
struct
tm
*
mstm
)
{
static
const
char
wday
[
7
][
4
]
=
{
"Sun"
,
"Mon"
,
"Tue"
,
"Wed"
,
"Thu"
,
"Fri"
,
"Sat"
};
static
const
char
month
[
12
][
4
]
=
{
"Jan"
,
"Feb"
,
"Mar"
,
"Apr"
,
"May"
,
...
...
@@ -1682,7 +1682,7 @@ static char* asctime_buf(char *buf, const struct MSVCRT_tm *mstm)
/*********************************************************************
* asctime (MSVCRT.@)
*/
char
*
CDECL
MSVCRT_asctime
(
const
struct
MSVCRT_
tm
*
mstm
)
char
*
CDECL
MSVCRT_asctime
(
const
struct
tm
*
mstm
)
{
thread_data_t
*
data
=
msvcrt_get_thread_data
();
...
...
@@ -1701,7 +1701,7 @@ char * CDECL MSVCRT_asctime(const struct MSVCRT_tm *mstm)
/*********************************************************************
* asctime_s (MSVCRT.@)
*/
int
CDECL
MSVCRT_asctime_s
(
char
*
time
,
size_t
size
,
const
struct
MSVCRT_
tm
*
mstm
)
int
CDECL
MSVCRT_asctime_s
(
char
*
time
,
size_t
size
,
const
struct
tm
*
mstm
)
{
if
(
!
MSVCRT_CHECK_PMT
(
time
!=
NULL
))
return
MSVCRT_EINVAL
;
if
(
size
)
time
[
0
]
=
0
;
...
...
@@ -1723,7 +1723,7 @@ int CDECL MSVCRT_asctime_s(char* time, size_t size, const struct MSVCRT_tm *mstm
/*********************************************************************
* _wasctime (MSVCRT.@)
*/
wchar_t
*
CDECL
MSVCRT__wasctime
(
const
struct
MSVCRT_
tm
*
mstm
)
wchar_t
*
CDECL
MSVCRT__wasctime
(
const
struct
tm
*
mstm
)
{
thread_data_t
*
data
=
msvcrt_get_thread_data
();
char
buffer
[
26
];
...
...
@@ -1746,7 +1746,7 @@ wchar_t * CDECL MSVCRT__wasctime(const struct MSVCRT_tm *mstm)
/*********************************************************************
* _wasctime_s (MSVCRT.@)
*/
int
CDECL
MSVCRT__wasctime_s
(
wchar_t
*
time
,
size_t
size
,
const
struct
MSVCRT_
tm
*
mstm
)
int
CDECL
MSVCRT__wasctime_s
(
wchar_t
*
time
,
size_t
size
,
const
struct
tm
*
mstm
)
{
char
buffer
[
26
];
int
ret
;
...
...
@@ -1768,7 +1768,7 @@ int CDECL MSVCRT__wasctime_s(wchar_t* time, size_t size, const struct MSVCRT_tm
*/
char
*
CDECL
MSVCRT__ctime64
(
const
__time64_t
*
time
)
{
struct
MSVCRT_
tm
*
t
;
struct
tm
*
t
;
t
=
MSVCRT__localtime64
(
time
);
if
(
!
t
)
return
NULL
;
return
MSVCRT_asctime
(
t
);
...
...
@@ -1779,7 +1779,7 @@ char * CDECL MSVCRT__ctime64(const __time64_t *time)
*/
int
CDECL
MSVCRT__ctime64_s
(
char
*
res
,
size_t
len
,
const
__time64_t
*
time
)
{
struct
MSVCRT_
tm
*
t
;
struct
tm
*
t
;
if
(
!
MSVCRT_CHECK_PMT
(
res
!=
NULL
))
return
MSVCRT_EINVAL
;
if
(
!
MSVCRT_CHECK_PMT
(
len
>=
26
))
return
MSVCRT_EINVAL
;
...
...
@@ -1797,7 +1797,7 @@ int CDECL MSVCRT__ctime64_s(char *res, size_t len, const __time64_t *time)
*/
char
*
CDECL
MSVCRT__ctime32
(
const
__time32_t
*
time
)
{
struct
MSVCRT_
tm
*
t
;
struct
tm
*
t
;
t
=
MSVCRT__localtime32
(
time
);
if
(
!
t
)
return
NULL
;
return
MSVCRT_asctime
(
t
);
...
...
@@ -1808,7 +1808,7 @@ char * CDECL MSVCRT__ctime32(const __time32_t *time)
*/
int
CDECL
MSVCRT__ctime32_s
(
char
*
res
,
size_t
len
,
const
__time32_t
*
time
)
{
struct
MSVCRT_
tm
*
t
;
struct
tm
*
t
;
if
(
!
MSVCRT_CHECK_PMT
(
res
!=
NULL
))
return
MSVCRT_EINVAL
;
if
(
!
MSVCRT_CHECK_PMT
(
len
>=
26
))
return
MSVCRT_EINVAL
;
...
...
@@ -1873,7 +1873,7 @@ wchar_t * CDECL MSVCRT__wctime(const __time32_t *time)
int
CDECL
MSVCRT__wctime64_s
(
wchar_t
*
buf
,
size_t
size
,
const
__time64_t
*
time
)
{
struct
MSVCRT_
tm
tm
;
struct
tm
tm
;
int
ret
;
if
(
!
MSVCRT_CHECK_PMT
(
buf
!=
NULL
))
return
MSVCRT_EINVAL
;
...
...
@@ -1896,7 +1896,7 @@ int CDECL MSVCRT__wctime64_s(wchar_t *buf,
int
CDECL
MSVCRT__wctime32_s
(
wchar_t
*
buf
,
size_t
size
,
const
__time32_t
*
time
)
{
struct
MSVCRT_
tm
tm
;
struct
tm
tm
;
int
ret
;
if
(
!
MSVCRT_CHECK_PMT
(
buf
!=
NULL
))
return
MSVCRT_EINVAL
;
...
...
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