Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/***
*systime.c - _getsystime and _setsystime * * Copyright (c) 1991-2001, Microsoft Corporation. All rights reserved. * *Purpose: * defines _getsystime() and _setsystime() * *Revision History: * 08-22-91 BWM Wrote module. * 05-19-92 DJM ifndef for POSIX build. * 09-25-92 SKS Use SetLocalTime(), not SetSystemTime(). * Fix bug: daylight flag must be initialized to -1. * Replace C++ comments with C-style comments * 11-10-93 GJF Resurrected from from crt32 (for compatibility with * the NT SDK release) and cleaned up. * 08-30-99 PML Fix function header comment in _getsystime(), detab. * *******************************************************************************/
#ifndef _POSIX_
#include <cruntime.h>
#include <oscalls.h>
#include <time.h>
/***
*unsigned _getsystime(timestruc) - Get current system time * *Purpose: * *Entry: * struct tm * ptm - time structure * *Exit: * milliseconds of current time * *Exceptions: * *******************************************************************************/
unsigned __cdecl _getsystime(struct tm * ptm) { SYSTEMTIME st;
GetLocalTime(&st);
ptm->tm_isdst = -1; /* mktime() computes whether this is */ /* during Standard or Daylight time. */ ptm->tm_sec = (int)st.wSecond; ptm->tm_min = (int)st.wMinute; ptm->tm_hour = (int)st.wHour; ptm->tm_mday = (int)st.wDay; ptm->tm_mon = (int)st.wMonth - 1; ptm->tm_year = (int)st.wYear - 1900; ptm->tm_wday = (int)st.wDayOfWeek;
/* Normalize uninitialized fields */ mktime(ptm);
return (st.wMilliseconds); }
/***
*unsigned _setsystime(timestruc, milliseconds) - Set new system time * *Purpose: * *Entry: * struct tm * ptm - time structure * unsigned milliseconds - milliseconds of current time * *Exit: * 0 if succeeds * system error if fails * *Exceptions: * *******************************************************************************/
unsigned __cdecl _setsystime(struct tm * ptm, unsigned uMilliseconds) { SYSTEMTIME st;
/* Normalize uninitialized fields */ mktime(ptm);
st.wYear = (WORD)(ptm->tm_year + 1900); st.wMonth = (WORD)(ptm->tm_mon + 1); st.wDay = (WORD)ptm->tm_mday; st.wHour = (WORD)(ptm->tm_hour); st.wMinute = (WORD)ptm->tm_min; st.wSecond = (WORD)ptm->tm_sec; st.wMilliseconds = (WORD)uMilliseconds;
if (!SetLocalTime(&st)) { return ((int)GetLastError()); }
return (0); }
#endif /* _POSIX_ */
|