Implement _ftime with Win32 APIs.
This commit is contained in:
parent
30dc42912e
commit
6ee09f5d56
|
@ -32,6 +32,7 @@
|
||||||
#include "msvcrt/sys/timeb.h"
|
#include "msvcrt/sys/timeb.h"
|
||||||
#include "msvcrt/time.h"
|
#include "msvcrt/time.h"
|
||||||
|
|
||||||
|
#include "winbase.h"
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
|
@ -130,15 +131,30 @@ MSVCRT_time_t MSVCRT_time(MSVCRT_time_t* buf)
|
||||||
return buf ? *buf = curtime : curtime;
|
return buf ? *buf = curtime : curtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SECSPERDAY 86400
|
||||||
|
/* 1601 to 1970 is 369 years plus 89 leap days */
|
||||||
|
#define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY)
|
||||||
|
#define TICKSPERSEC 10000000
|
||||||
|
#define TICKSPERMSEC 10000
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* _ftime (MSVCRT.@)
|
* _ftime (MSVCRT.@)
|
||||||
*/
|
*/
|
||||||
void _ftime(struct _timeb *buf)
|
void _ftime(struct _timeb *buf)
|
||||||
{
|
{
|
||||||
buf->time = MSVCRT_time(NULL);
|
TIME_ZONE_INFORMATION tzinfo;
|
||||||
buf->millitm = 0; /* FIXME */
|
FILETIME ft;
|
||||||
buf->timezone = 0;
|
ULONGLONG time;
|
||||||
buf->dstflag = 0;
|
|
||||||
|
DWORD tzid = GetTimeZoneInformation(&tzinfo);
|
||||||
|
GetSystemTimeAsFileTime(&ft);
|
||||||
|
|
||||||
|
time = ((ULONGLONG)ft.dwHighDateTime << 32) | ft.dwLowDateTime;
|
||||||
|
|
||||||
|
buf->time = time / TICKSPERSEC - SECS_1601_TO_1970;
|
||||||
|
buf->millitm = (time % TICKSPERSEC) / TICKSPERMSEC;
|
||||||
|
buf->timezone = tzinfo.Bias;
|
||||||
|
buf->dstflag = (tzid == TIME_ZONE_ID_DAYLIGHT?1:0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
|
Loading…
Reference in New Issue