Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

104 lines
2.3 KiB

/***
*systime.c - _getsystime and _setsystime
*
* Copyright (c) 1991-1992, 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
*
*******************************************************************************/
#ifndef _POSIX_
#include <cruntime.h>
#include <oscalls.h>
#include <time.h>
#if !defined(_WIN32_)
#error ERROR - ONLY WIN32 TARGET SUPPORTED!
#endif
/***
*unsigned _getsystime(timestruc, milliseconds) - Get current system time
*
*Purpose:
*
*Entry:
 struct tm * ptm - time structure
*
*Exit:
* milliseconds of current time
*
*Exceptions:
*
*******************************************************************************/
unsigned _CALLTYPE1 _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 _CALLTYPE1 _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_ */