Author: tkreuzer Date: Mon Jan 19 16:05:27 2009 New Revision: 38956
URL: http://svn.reactos.org/svn/reactos?rev=38956&view=rev Log: crt update: - initial implementation of secure crt functions for vista compatibility (implement _get_invalid_parameter_handler, _set_invalid_parameter_handler, _invalid_parameter) - rewrite time apis, add TLS support, add 64bit time functions and secure crt function support
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/safecrt.h (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/time.h (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/ (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/getinvp.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/invalidp.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/setinvp.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/asctime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/bitsfixup.h (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/clock.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/gmtime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/mktime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strdate.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strftime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strtime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/timezone.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/tzname.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wasctime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wcsftime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime64.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrdate.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrtime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime32.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime64.c (with props) Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/crt.rbuild branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/file.h branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/tls.h branches/ros-amd64-bringup/reactos/lib/sdk/crt/misc/tls.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/precomp.h
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/crt.rbuild URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/crt.rbuild [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/crt.rbuild [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -291,6 +291,11 @@ <file>lfind.c</file> <file>lsearch.c</file> </directory> + <directory name="securecrt"> + <file>getinvp.c</file> + <file>invalidp.c</file> + <file>setinvp.c</file> + </directory> <directory name="setjmp"> <if property="ARCH" value="i386"> <directory name="i386"> @@ -437,7 +442,7 @@ <directory name="sys_stat"> <file>systime.c</file> </directory> - <directory name="time"> + <!-- directory name="time"> <file>clock.c</file> <file>ctime.c</file> <file>difftime.c</file> @@ -450,7 +455,48 @@ <file>wctime.c</file> <file>wstrdate.c</file> <file>wstrtime.c</file> - </directory> + </directory --> + <directory name="time_new"> + <file>asctime.c</file> + <file>clock.c</file> + <file>ctime32.c</file> + <file>ctime64.c</file> + <file>ctime.c</file> + <file>difftime32.c</file> + <file>difftime64.c</file> + <file>difftime.c</file> + <file>ftime32.c</file> + <file>ftime64.c</file> + <file>ftime.c</file> + <file>futime32.c</file> + <file>futime64.c</file> + <file>futime.c</file> + <file>gmtime.c</file> + <file>localtime32.c</file> + <file>localtime64.c</file> + <file>localtime.c</file> + <file>mktime.c</file> + <file>strdate.c</file> + <file>strftime.c</file> + <file>strtime.c</file> + <file>time32.c</file> + <file>time64.c</file> + <file>time.c</file> + <file>timezone.c</file> + <file>utime32.c</file> + <file>utime64.c</file> + <file>utime.c</file> + <file>wasctime.c</file> + <file>wctime32.c</file> + <file>wctime64.c</file> + <file>wctime.c</file> + <file>wutime32.c</file> + <file>wutime64.c</file> + <file>wutime.c</file> + <file>wcsftime.c</file> + <file>wstrdate.c</file> + <file>wstrtime.c</file> + </directory> <directory name="wstring"> <file>wcscoll.c</file> <file>wcscspn.c</file>
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/file.h URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/file.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/file.h [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -48,8 +48,8 @@ int __fileno_setmode(int _fd, int _newmode); void sigabort_handler(int sig);
-void UnixTimeToFileTime(time_t unix_time, FILETIME* filetime, DWORD remainder); -time_t FileTimeToUnixTime(const FILETIME* filetime, DWORD *remainder); +//void UnixTimeToFileTime(time_t unix_time, FILETIME* filetime, DWORD remainder); +//time_t FileTimeToUnixTime(const FILETIME* filetime, DWORD *remainder);
#define __FILE_REC_MAX 20
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/safecrt.h URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/safecrt.h (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/safecrt.h [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,10 @@ + +extern void * __pInvalidArgHandler; + +void _invalid_parameter( + const wchar_t * expression, + const wchar_t * function, + const wchar_t * file, + unsigned int line, + uintptr_t pReserved); +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/safecrt.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/time.h URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/time.h (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/time.h [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,56 @@ + +#define DIFFTIME 0x19db1ded53e8000ULL +#define DIFFDAYS (3 * DAYSPER100YEARS + 17 * DAYSPER4YEARS + 1 * DAYSPERYEAR) + +#define DAYSPERYEAR 365 +#define DAYSPER4YEARS (4*DAYSPERYEAR+1) +#define DAYSPER100YEARS (25*DAYSPER4YEARS-1) +#define DAYSPER400YEARS (4*DAYSPER100YEARS+1) +#define SECONDSPERDAY (24*60*60) +#define SECONDSPERHOUR (60*60) +#define LEAPDAY 59 + +extern inline +__time64_t +FileTimeToUnixTime(const FILETIME *FileTime, USHORT *millitm) +{ + ULARGE_INTEGER ULargeInt; + __time64_t time; + + ULargeInt.LowPart = FileTime->dwLowDateTime; + ULargeInt.HighPart = FileTime->dwHighDateTime; + ULargeInt.QuadPart -= DIFFTIME; + + time = ULargeInt.QuadPart / 10000; + if (millitm) + *millitm = (ULargeInt.QuadPart % 10000) / 10; + + return time; +} + +static __inline +long leapyears_passed(long days) +{ + long quadcenturies, centuries, quadyears; + quadcenturies = days / DAYSPER400YEARS; + days -= quadcenturies; + centuries = days / DAYSPER100YEARS; + days += centuries; + quadyears = days / DAYSPER4YEARS; + return quadyears - centuries + quadcenturies; +} + +static __inline +long leapdays_passed(long days) +{ + return leapyears_passed(days + DAYSPERYEAR - LEAPDAY + 1); +} + +static __inline +long years_passed(long days) +{ + return (days - leapdays_passed(days)) / 365; +} + +extern long dst_begin; +extern long dst_end;
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/time.h ------------------------------------------------------------------------------ svn:eol-style = native
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/tls.h URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/tls.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/include/internal/tls.h [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -28,6 +28,10 @@ int fpecode; /* fp exception code */
EXCEPTION_RECORD *exc_record; /* Head of exception record list */ + + struct tm tmbuf; /* Used by gmtime, mktime, mkgmtime, localtime */ + char asctimebuf[26]; /* Buffer for asctime and ctime */ + wchar_t wasctimebuf[26]; /* Buffer for wasctime and wctime */
} THREADDATA, *PTHREADDATA;
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/misc/tls.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/misc/tls.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/misc/tls.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -15,6 +15,10 @@ ThreadData->fpecode = 0;
ThreadData->tnext = 1; + + memset(&ThreadData->tmbuf, sizeof(struct tm), 0); + memset(&ThreadData->asctimebuf, 26 * sizeof(char), 0); + memset(&ThreadData->wasctimebuf, 26 * sizeof(wchar_t), 0);
/* FIXME: init more thread local data */
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/precomp.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/precomp.h [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -59,5 +59,7 @@ #include <internal/rterror.h> #include <internal/tls.h> #include <internal/printf.h> +#include <internal/time.h> +#include <internal/safecrt.h>
#endif /* _CRT_PRECOMP_H */
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/ ------------------------------------------------------------------------------ svn:mergeinfo =
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/getinvp.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/getinvp.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/getinvp.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,17 @@ +#include <precomp.h> + +_invalid_parameter_handler +_get_invalid_parameter_handler(void) +{ + _invalid_parameter_handler oldhandler; + + if (__pInvalidArgHandler) + { + oldhandler = DecodePointer(__pInvalidArgHandler); + } + else + { + oldhandler = NULL; + } + return oldhandler; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/getinvp.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/invalidp.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/invalidp.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/invalidp.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,47 @@ +#include <precomp.h> + +void * __pInvalidArgHandler = NULL; + +void +_invalid_parameter_default( + const wchar_t * expression, + const wchar_t * function, + const wchar_t * file, + unsigned int line, + uintptr_t pReserved) +{ + // TODO: launch Doc Watson or something like that + UNIMPLEMENTED; + ExitProcess(-1); +} + + +// http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?Feedbac... +void +_invalid_parameter( + const wchar_t * expression, + const wchar_t * function, + const wchar_t * file, + unsigned int line, + uintptr_t pReserved) +{ + _invalid_parameter_handler handler; + + if (__pInvalidArgHandler) + { + handler = DecodePointer(__pInvalidArgHandler); + } + else + { + handler = _invalid_parameter_default; + } + handler(expression, function, file, line, pReserved); +} + +// http://cowboyprogramming.com/2007/02/22/what-is-_invalid_parameter_noinfo-an... +void +invalid_parameter_noinfo(void) +{ + _invalid_parameter(0, 0, 0, 0, 0); +} +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/invalidp.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/setinvp.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/setinvp.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/setinvp.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,27 @@ +#include <precomp.h> + +_invalid_parameter_handler +_set_invalid_parameter_handler(_invalid_parameter_handler newhandler) +{ + _invalid_parameter_handler oldhandler; + + if (__pInvalidArgHandler) + { + oldhandler = DecodePointer(__pInvalidArgHandler); + } + else + { + oldhandler = NULL; + } + + if (newhandler) + { + __pInvalidArgHandler = EncodePointer(newhandler); + } + else + { + __pInvalidArgHandler = 0; + } + + return oldhandler; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/securecrt/setinvp.c ------------------------------------------------------------------------------ svn:eol-style = native
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Mon Jan 19 16:05:27 2009 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ ------------------------------------------------------------------------------ tsvn:logminsize = 10
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/asctime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/asctime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/asctime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,162 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ftime.c + * PURPOSE: Implementation of asctime(), _asctime_s() + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> +#include <tchar.h> +#include <time.h> +#include "bitsfixup.h" + +#define DAYSPERWEEK 7 +#define MONSPERYEAR 12 + +static const _TCHAR wday_name[DAYSPERWEEK][4] = +{ + _T("Sun "), _T("Mon "), _T("Tue "), _T("Wed "), + _T("Thu "), _T("Fri "), _T("Sat ") +}; + +static const _TCHAR mon_name[MONSPERYEAR][4] = +{ + _T("Jan "), _T("Feb "), _T("Mar "), _T("Apr "), _T("May "), _T("Jun "), + _T("Jul "), _T("Aug "), _T("Sep "), _T("Oct "), _T("Nov "), _T("Dec ") +}; + +#ifdef _UNICODE +typedef unsigned long long _TCHAR4; +typedef unsigned long _TCHAR2; +#else +typedef unsigned long _TCHAR4; +typedef unsigned short _TCHAR2; +#endif + +typedef union +{ + _TCHAR text[26]; + struct + { + _TCHAR4 WeekDay; + _TCHAR4 Month; + _TCHAR2 Day; + _TCHAR Space1; + _TCHAR2 Hour; + _TCHAR Sep1; + _TCHAR2 Minute; + _TCHAR Sep2; + _TCHAR2 Second; + _TCHAR Space2; + _TCHAR2 Year[2]; + _TCHAR lb; + _TCHAR zt; + }; +} timebuf_t; + +_TCHAR2 +static __inline__ +IntToChar2(int x) +{ + union + { + _TCHAR2 char2; + _TCHAR array[2]; + } u; + + u.array[0] = '0' + (x / 10); + u.array[1] = '0' + (x % 10); + + return u.char2; +} + +void +static __inline__ +FillBuf(timebuf_t *buf, const struct tm *ptm) +{ + /* Format looks like this: + * "Sun Mar 01 12:34:56 1902\n\0" */ + buf->WeekDay = *(_TCHAR4*)wday_name[ptm->tm_wday]; + buf->Month = *(_TCHAR4*)mon_name[ptm->tm_mon]; + buf->Day = IntToChar2(ptm->tm_mday); + buf->Space1 = ' '; + buf->Hour = IntToChar2(ptm->tm_mday); + buf->Sep1 = ':'; + buf->Minute = IntToChar2(ptm->tm_mday); + buf->Sep2 = ':'; + buf->Second = IntToChar2(ptm->tm_mday); + buf->Space2 = ' '; + buf->Year[0] = IntToChar2(ptm->tm_year / 100); + buf->Year[1] = IntToChar2(ptm->tm_year % 100); + buf->lb = '\n'; + buf->zt = '\0'; +} + +/****************************************************************************** + * \name _tasctime_s + * \brief Converts a local time into a string and returns a pointer to it. + * \param buffer Buffer that receives the string (26 characters). + * \param numberOfElements Size of the buffer in characters. + * \param time Pointer to the UTC time. + */ +errno_t +_tasctime_s( + _TCHAR* buffer, + size_t numberOfElements, + const struct tm *ptm) +{ + /* Validate parameters */ + if (!buffer || numberOfElements < 26 || !ptm || + (unsigned int)ptm->tm_sec > 59 || + (unsigned int)ptm->tm_min > 59 || + (unsigned int)ptm->tm_hour > 23 || + (unsigned int)ptm->tm_mday > 31 || + (unsigned int)ptm->tm_mon > 11 || + (unsigned int)ptm->tm_year > 2038 || + (unsigned int)ptm->tm_wday > 6 || + (unsigned int)ptm->tm_yday > 365) + { + _invalid_parameter(NULL, +#ifdef UNICODE + L"_wasctime", +#else + L"asctime", +#endif + _CRT_WIDE(__FILE__), + __LINE__, + 0); + return EINVAL; + } + + /* Fill the buffer */ + FillBuf((timebuf_t*)buffer, ptm); + + return 0; +} + +/****************************************************************************** + * \name _tasctime + * \brief Converts a UTC time into a string and returns a pointer to it. + * \param ptm Pointer to the UTC time. + * \remarks The string is stored in thread local buffer, shared between + * ctime, gmtime and localtime (32 and 64 bit versions). + */ +_TCHAR * +_tasctime(const struct tm *ptm) +{ + PTHREADDATA pThreadData; + _TCHAR *pstr; + + /* Get pointer to TLS buffer */ + pThreadData = GetThreadData(); +#ifndef _UNICODE + pstr = pThreadData->asctimebuf; +#else + pstr = pThreadData->wasctimebuf; +#endif + + /* Fill the buffer */ + FillBuf((timebuf_t*)pstr, ptm); + + return pstr; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/asctime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/bitsfixup.h URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/bitsfixup.h (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/bitsfixup.h [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,51 @@ + +#if defined(_USE_EXPLITIT_32BIT_TIME) || defined(_USE_EXPLITIT_64BIT_TIME) +#undef _timeb +#undef _ftime +#undef _tctime +#undef _ftime_s +#undef _tctime_s +#undef _tutime +#else +#define _time time +#endif + +#ifdef _USE_EXPLITIT_32BIT_TIME +#define time_t __time32_t +#define _timeb __timeb32 +#define _utimbuf __utimbuf32 + +#define difftime _difftime32 +#define localtime _localtime32 +#define localtime_s _localtime32_s +#define _time _time32 + +#define _ftime _ftime32 +#define _ftime_s _ftime32_s +#define _futime _futime32 +#define _tctime _tctime32 +#define _tctime_s _tctime32_s +#define _tutime _tutime32 +#define gmtime _gmtime32 + +#endif + +#ifdef _USE_EXPLITIT_64BIT_TIME +#define time_t __time64_t +#define _timeb __timeb64 +#define _utimbuf __utimbuf64 + +#define difftime _difftime64 +#define localtime _localtime64 +#define localtime_s _localtime64_s +#define _time _time64 + +#define _ftime _ftime64 +#define _ftime_s _ftime64_s +#define _futime _futime64 +#define _tctime _tctime64 +#define _tctime_s _tctime64_s +#define _tutime _tutime64 +#define gmtime _gmtime64 + +#endif
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/bitsfixup.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/clock.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/clock.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/clock.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,30 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/clock.c + * PURPOSE: Implementation of clock() + * PROGRAMER: Timo Kreuzer + */ +#include <precomp.h> + +ULARGE_INTEGER g_StartupTime; + +void +initclock(void) +{ + GetSystemTimeAsFileTime((FILETIME*)&g_StartupTime); +} + +/****************************************************************************** + * \name clock + * \brief Returns the current process's elapsed time. + */ +clock_t +clock(void) +{ + ULARGE_INTEGER Time; + + GetSystemTimeAsFileTime((FILETIME*)&Time); + Time.QuadPart -= g_StartupTime.QuadPart; + return FileTimeToUnixTime((FILETIME*)&Time, NULL); +};
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/clock.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,52 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ctime.c + * PURPOSE: Implementation of ctime, _ctime_s + * PROGRAMERS: Timo Kreuzer + */ +#define MINGW_HAS_SECURE_API 1 + +#include <tchar.h> +#include <time.h> +#include "bitsfixup.h" + +#define EINVAL -1 + +/****************************************************************************** + * \name _tctime_s + * \brief Converts a time_t value into a string. + * \param buffer Buffer that receives the string (26 characters). + * \param numberOfElements Size of the buffer in characters. + * \param time Pointer to the UTC time. + */ +errno_t +_tctime_s(_TCHAR *buffer, size_t numberOfElements, const time_t *time) +{ + struct tm _tm; + + if (localtime_s(&_tm, time) == EINVAL) + { + return EINVAL; + } + return _tasctime_s(buffer, numberOfElements, &_tm); +} + +/****************************************************************************** + * \name _tctime + * \brief Converts a time_t value into a string and returns a pointer to it. + * \param time Pointer to the UTC time. + * \remarks The string is stored in thread local buffer, shared between + * ctime, gmtime and localtime (both 32 and 64 bit versions). + */ +_TCHAR * +_tctime(const time_t *ptime) +{ + struct tm *ptm = localtime(ptime); + if (!ptm) + { + return 0; + } + return _tasctime(ptm); +} +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ctime32.c + * PURPOSE: Implementation of _ctime32() + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_32BIT_TIME +#include "ctime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ctime64.c + * PURPOSE: Implementation of _ctime64 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_64BIT_TIME +#include "ctime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ctime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,23 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/difftime.c + * PURPOSE: Implementation of difftime + * PROGRAMERS: Timo Kreuzer + */ +#include <time.h> +#include "bitsfixup.h" + +/** + * \name difftime + * \brief Retrurns the difference between two time_t values in seconds. + * \param time1 Beginning time. + * \param time2 Ending time. + */ +double +difftime( + time_t time1, /**< Beginning time */ + time_t time2) /**< Ending time */ +{ + return (double)(time1 - time2); +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/difftime32.c + * PURPOSE: Implementation of _difftime32 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_32BIT_TIME +#include "difftime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/difftime64.c + * PURPOSE: Implementation of _difftime64 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_64BIT_TIME +#include "difftime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/difftime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,61 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ftime.c + * PURPOSE: Deprecated BSD library call + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> +#include <sec_api/time_s.h> +#include <sys/timeb.h> +#include "bitsfixup.h" + +/****************************************************************************** + * \name _ftime_s + * \brief Get the current time. + * \param [out] ptimeb Pointer to a structure of type struct _timeb that + * recieves the current time. + * \sa http://msdn.microsoft.com/en-us/library/95e68951.aspx + */ +errno_t +_ftime_s(struct _timeb *ptimeb) +{ + DWORD ret; + TIME_ZONE_INFORMATION TimeZoneInformation; + FILETIME SystemTime; + + /* Validate parameters */ + if (!ptimeb) + { + _invalid_parameter(0, + 0,//__FUNCTION__, + _CRT_WIDE(__FILE__), + __LINE__, + 0); + return EINVAL; + } + + ret = GetTimeZoneInformation(&TimeZoneInformation); + ptimeb->dstflag = (ret == TIME_ZONE_ID_DAYLIGHT) ? 1 : 0; + ptimeb->timezone = TimeZoneInformation.Bias; + + GetSystemTimeAsFileTime(&SystemTime); + ptimeb->time = FileTimeToUnixTime(&SystemTime, &ptimeb->millitm); + + return 0; +} + +/****************************************************************************** + * \name _ftime + * \brief Get the current time. + * \param [out] ptimeb Pointer to a structure of type struct _timeb that + * recieves the current time. + * \note This function is for compatability and simply calls the secure + * version _ftime_s(). + * \sa http://msdn.microsoft.com/en-us/library/z54t9z5f.aspx + */ +void +_ftime(struct _timeb *ptimeb) +{ + _ftime_s(ptimeb); +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ftime32.c + * PURPOSE: Implementation of _ftime32 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_32BIT_TIME +#include "ftime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ftime64.c + * PURPOSE: Implementation of _ftime64 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_64BIT_TIME +#include "ftime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/ftime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,61 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/futime.c + * PURPOSE: Implementation of _futime + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> +#include <time.h> +#include <sys/utime.h> +#include "bitsfixup.h" + +HANDLE fdtoh(int fd); + +/****************************************************************************** + * \name _futime + * \brief Set a files modification time. + * \param [out] ptimeb Pointer to a structure of type struct _timeb that + * recieves the current time. + * \sa http://msdn.microsoft.com/en-us/library/95e68951.aspx + */ +int +_futime(int fd, struct _utimbuf *filetime) +{ + HANDLE handle; + FILETIME at, wt; + + handle = fdtoh(fd); + if (handle == INVALID_HANDLE_VALUE) + { + return -1; + } + + if (!filetime) + { + time_t currTime; + _time(&currTime); + RtlSecondsSince1970ToTime(currTime, (LARGE_INTEGER *)&at); + wt = at; + } + else + { + RtlSecondsSince1970ToTime(filetime->actime, (LARGE_INTEGER *)&at); + if (filetime->actime == filetime->modtime) + { + wt = at; + } + else + { + RtlSecondsSince1970ToTime(filetime->modtime, (LARGE_INTEGER *)&wt); + } + } + + if (!SetFileTime(handle, NULL, &at, &wt)) + { + __set_errno(GetLastError()); + return -1 ; + } + + return 0; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/futime32.c + * PURPOSE: Implementation of _futime32 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_32BIT_TIME +#include "futime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/futime64.c + * PURPOSE: Implementation of _futime64 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_64BIT_TIME +#include "futime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/futime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/gmtime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/gmtime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/gmtime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,146 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/gmtime.c + * PURPOSE: Implementation of gmtime, _gmtime32, _gmtime64 + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> + +unsigned int g_monthdays[13] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; +unsigned int g_lpmonthdays[13] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}; + +struct tm * +_gmtime_worker(struct tm *ptm, __time64_t time, int do_dst) +{ + unsigned int days, daystoyear, dayinyear, leapdays, leapyears, years, month; + unsigned int secondinday, secondinhour; + unsigned int *padays; + + if (time < 0) + { + return 0; + } + + /* Divide into date and time */ + days = time / SECONDSPERDAY; + secondinday = time % SECONDSPERDAY; + + /* Shift to days from 1.1.1601 */ + days += DIFFDAYS; + + /* Calculate leap days passed till today */ + leapdays = leapdays_passed(days); + + /* Calculate number of full leap years passed */ + leapyears = leapyears_passed(days); + + /* Are more leap days passed than leap years? */ + if (leapdays > leapyears) + { + /* Yes, we're in a leap year */ + padays = g_lpmonthdays; + } + else + { + /* No, normal year */ + padays = g_monthdays; + } + + /* Calculate year */ + years = (days - leapdays) / 365; + ptm->tm_year = years - 299; + + /* Calculate number of days till 1.1. of this year */ + daystoyear = years * 365 + leapyears; + + /* Calculate the day in this year */ + dayinyear = days - daystoyear; + + /* Shall we do DST corrections? */ + ptm->tm_isdst = 0; + if (do_dst) + { + unsigned int yeartime = dayinyear * SECONDSPERDAY + secondinday ; + if (yeartime >= dst_begin && yeartime <= dst_end) // FIXME! DST in winter + { + time -= _dstbias; + days = time / SECONDSPERDAY + DIFFDAYS; + dayinyear = days - daystoyear; + ptm->tm_isdst = 1; + } + } + + ptm->tm_yday = dayinyear; + + /* dayinyear < 366 => terminates with i <= 11 */ + for (month = 0; dayinyear >= padays[month+1]; month++) + ; + + /* Set month and day in month */ + ptm->tm_mon = month; + ptm->tm_mday = 1 + dayinyear - padays[month]; + + /* Get weekday */ + ptm->tm_wday = (days + 4) % 7; + + /* Calculate hour and second in hour */ + ptm->tm_hour = secondinday / SECONDSPERHOUR; + secondinhour = secondinday % SECONDSPERHOUR; + + /* Calculate minute and second */ + ptm->tm_min = secondinhour / 60; + ptm->tm_sec = secondinhour % 60; + + return ptm; +} + +/****************************************************************************** + * \name _gmtime64 + * \brief + * \param ptime Pointer to a variable of type __time64_t containing the time. + */ +struct tm * +_gmtime64(const __time64_t * ptime) +{ + PTHREADDATA pThreadData; + struct tm *ptm; + __time64_t time = *ptime; + + /* Validate parameters */ + if (time < 0) + { + return 0; + } + + /* Get pointer to TLS tm buffer */ + pThreadData = GetThreadData(); + ptm = &pThreadData->tmbuf; + + /* Use _gmtime_worker to do the ral work */ + return _gmtime_worker(ptm, time, 0); +} + +/****************************************************************************** + * \name _gmtime32 + * \brief + * \param ptime Pointer to a variable of type __time32_t containing the time. + */ +struct tm * +_gmtime32(const __time32_t * ptime) +{ + __time64_t time64 = (__time64_t)*ptime; + return _gmtime64(&time64); +} + +/****************************************************************************** + * \name gmtime + * \brief + * \param ptime Pointer to a variable of type time_t containing the time. + */ +struct tm * +gmtime(const time_t * ptime) +{ + __time64_t time64 = (__time64_t)*ptime; + return _gmtime64(&time64); +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/gmtime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,65 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/localtime.c + * PURPOSE: Implementation of localtime, localtime_s + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> +#include <time.h> +#include "bitsfixup.h" + +errno_t +localtime_s(struct tm* _tm, const time_t *ptime) +{ + + /* Validate parameters */ + if (!_tm || !ptime) + { + _invalid_parameter(NULL, + 0,//__FUNCTION__, + _CRT_WIDE(__FILE__), + __LINE__, + 0); + return EINVAL; + } + + + return 0; +} + +extern char _tz_is_set; + +struct tm * +localtime(const time_t *ptime) +{ + time_t time = *ptime; + struct tm * ptm; + + /* Check for invalid time value */ + if (time < 0) + { + return 0; + } + + /* Never without */ + if (!_tz_is_set) + _tzset(); + + /* Check for overflow */ + + /* Correct for timezone */ + time -= _timezone; +#if 0 + /* Correct for daylight saving */ + if (_isdstime(time)) + { + ptm->tm_isdst = 1; + time -= _dstbias; + } +#endif + ptm = gmtime(&time); + + return ptm; +} +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/localtime32.c + * PURPOSE: Implementation of _localtime32 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_32BIT_TIME +#include "localtime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/localtime64.c + * PURPOSE: Implementation of _localtime64 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_64BIT_TIME +#include "localtime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/localtime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/mktime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/mktime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/mktime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,124 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/mktime.c + * PURPOSE: Implementation of mktime, _mkgmtime + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> + +time_t +mktime_worker(struct tm * ptm, int utc) +{ + return 0; +} + +/* int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; +*/ + +static int g_monthdays[13] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; + + +/** + * \name _mkgmtime + * + */ +time_t +_mkgmtime(struct tm *ptm) +{ + struct tm *ptm2; + time_t time; + int mons, years, leapyears; + + /* Normalize year and month */ + if (ptm->tm_mon < 0) + { + mons = -ptm->tm_mon - 1; + ptm->tm_year -= 1 + mons / 12; + ptm->tm_mon = 11 - (mons % 12); + } + else if (ptm->tm_mon > 11) + { + mons = ptm->tm_mon; + ptm->tm_year += (mons / 12); + ptm->tm_mon = mons % 12; + } + + /* Is it inside margins */ + if (ptm->tm_year < 70 || ptm->tm_year > 139) // FIXME: max year for 64 bits + { + return -1; + } + + years = ptm->tm_year - 70; + + /* Number of leapyears passed since 1970 */ + leapyears = (years + 1) / 4; + + /* Calculate days up to 1st of Jan */ + time = years * 365 + leapyears; + + /* Calculate days up to 1st of month */ + time += g_monthdays[ptm->tm_mon]; + + /* Check if we need to add a leap day */ + if (((years + 2) % 4) == 0) + { + if (ptm->tm_mon > 2) + { + time++; + } + } + + time += ptm->tm_mday - 1; + + time *= 24; + time += ptm->tm_hour; + + time *= 60; + time += ptm->tm_min; + + time *= 60; + time += ptm->tm_sec; + + if (time < 0) + { + return -1; + } + + /* Finally get normalized tm struct */ + ptm2 = gmtime(&time); + if (!ptm2) + { + return -1; + } + *ptm = *ptm2; + + return time; +} + +time_t +mktime(struct tm *ptm) +{ + time_t time; + + /* Convert the time as if it was UTC */ + time = _mkgmtime(ptm); + + /* Apply offset */ + if (time != -1) + { + time += _timezone; + } + + return time; +} +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/mktime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strdate.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strdate.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strdate.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,23 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/msvcrt/time/strtime.c + * PURPOSE: Fills a buffer with a formatted date representation + * PROGRAMER: Ariadne + * UPDATE HISTORY: + * 28/12/98: Created + */ +#include <precomp.h> + +/* + * @implemented + */ +char* _strdate(char* date) +{ + static const char format[] = "MM'/'dd'/'yy"; + + GetDateFormatA(LOCALE_NEUTRAL, 0, NULL, format, date, 9); + + return date; + +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strdate.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strftime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strftime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strftime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,12 @@ +#include <precomp.h> +#include <tchar.h> + +size_t +_tcsftime(_TCHAR *strDest, + size_t maxsize, + const _TCHAR *format, + const struct tm *timeptr) +{ + return 0; +} +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strftime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strtime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strtime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strtime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,22 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/msvcrt/time/strtime.c + * PURPOSE: Fills a buffer with a formatted time representation + * PROGRAMER: Ariadne + * UPDATE HISTORY: + * 28/12/98: Created + */ +#include <precomp.h> + +/* + * @implemented + */ +char* _strtime(char* time) +{ + static const char format[] = "HH':'mm':'ss"; + + GetTimeFormatA(LOCALE_NEUTRAL, 0, NULL, format, time, 9); + + return time; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/strtime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,24 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/sdk/crt/time/time.c + * PURPOSE: Implementation of _time (_tim32, _tim64) + * PROGRAMER: Timo Kreuzer + */ +#include <precomp.h> +#include <time.h> +#include "bitsfixup.h" + +time_t _time(time_t* ptime) +{ + FILETIME SystemTime; + time_t time = 0; + + if (ptime) + { + GetSystemTimeAsFileTime(&SystemTime); + time = FileTimeToUnixTime(&SystemTime, NULL); + *ptime = time; + } + return time; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,3 @@ + +#define _USE_EXPLITIT_32BIT_TIME +#include "time.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,3 @@ + +#define _USE_EXPLITIT_64BIT_TIME +#include "time.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/time64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/timezone.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/timezone.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/timezone.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,216 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/timezone.c + * PURPOSE: Implementation of time zone functions + * PROGRAMERS: Timo Kreuzer + */ +#include "precomp.h" + +char _tz_is_set = 0; + +/* buffers must hold 64 characters! */ +static char tz_name[64] = "PST"; +static char tz_dst_name[64] = "PDT"; + +long dst_begin = 0; +long dst_end = 0; + +/****************************************************************************** + * \var _tzname + */ +char * _tzname[2] = { + tz_name, + tz_dst_name, +}; + +/****************************************************************************** + * \var _daylight + */ +int _daylight = 1; + +/****************************************************************************** + * \name __p__daylight + * \brief Returns a pointer to the _daylight variable; + */ +void * +__p__daylight(void) +{ + return &_daylight; +} + +/****************************************************************************** + * \var _timezone + * \brief + */ +long _timezone = 28800; + +/****************************************************************************** + * \name __p__timezone + * \brief Returns a pointer to the _timezone variable; + */ +long * +__p__timezone(void) +{ + return &_timezone; +} + +/****************************************************************************** + * \var _dstbias + * \brief + */ +long _dstbias = 0; + +/****************************************************************************** + * \name __p__dstbias + * \brief Returns a pointer to the _dstbias variable; + */ +long * +__p__dstbias(void) +{ + return &_dstbias; +} + +/****************************************************************************** + * \name __p__tzname + * \brief Returns a pointer to the _tzname buffer; + */ +char ** +__p__tzname(void) +{ + return _tzname; +} + +/****************************************************************************** + * \name _tzset + * \brief Initializes the variables _daylight, _timezone, and _tzname from the + * "TZ" environment variable if available or else by calling + * GetTimeZoneInformation. + * \sa http://msdn.microsoft.com/en-us/library/90s5c885.aspx + */ +void +_tzset(void) +{ + const char * str; + + if (_tz_is_set) + { + return; + } + + /* Try to read the timezone from environment */ + str = getenv("TZ"); + if (str && str[0] != 0) + { + long hour = 0, min = 0, sec = 0; + int len = strnlen(str, 16); + int sign = 1; + + dst_begin = 0; + + for (;;) + { + /* Copy timezone name */ + strncpy(tz_name, str, 3); + str += 3; + len -= 3; + + if (len < 1) break; + + if (*str == '+' || *str == '-') + { + sign = *str == '-' ? -1 : 1; + str++; + len--; + } + + if (len < 1) break; + + hour = atol(str); + + while (*str != 0 && *str != ':') str++; + if (*str == 0) break; + + min = atol(++str); + + while (*str != 0 && *str != ':') str++; + if (*str == 0) break; + + sec = atol(++str); + + while (*str != 0 && *str <= '9') str++; + if (*str == 0) break; + + /* Copy DST name */ + strncpy(tz_dst_name, str, 3); + + // FIXME: set dst_begin etc + + /* We are finished */ + break; + } + + _timezone = sign * (((hour * 60) + min) * 60 + sec); + + } + else + { + TIME_ZONE_INFORMATION tzi; + DWORD ret; + + ret = GetTimeZoneInformation(&tzi); + if (ret == TIME_ZONE_ID_INVALID) + { + return; + } + + ret = WideCharToMultiByte(CP_ACP, + 0, + tzi.StandardName, + -1, + tz_name, + sizeof(tz_name), + NULL, + NULL); + + ret = WideCharToMultiByte(CP_ACP, + 0, + tzi.DaylightName, + -1, + tz_dst_name, + sizeof(tz_dst_name), + NULL, + NULL); + + _timezone = tzi.Bias * 60; + + if (tzi.DaylightDate.wMonth) + { + struct tm _tm; + + _daylight = 1; + _dstbias = (tzi.DaylightBias - tzi.StandardBias) * 60; + _tm.tm_year = 70; + _tm.tm_mon = tzi.DaylightDate.wMonth - 1; + _tm.tm_mday = tzi.DaylightDate.wDay; + _tm.tm_hour = tzi.DaylightDate.wHour; + _tm.tm_min = tzi.DaylightDate.wMinute; + _tm.tm_sec = tzi.DaylightDate.wSecond; + dst_begin = _mkgmtime(&_tm); + _tm.tm_mon = tzi.StandardDate.wMonth - 1; + _tm.tm_mday = tzi.StandardDate.wDay; + _tm.tm_hour = tzi.StandardDate.wHour; + _tm.tm_min = tzi.StandardDate.wMinute; + _tm.tm_sec = tzi.StandardDate.wSecond; + dst_end = _mkgmtime(&_tm); + } + else + { + _daylight = 0; + _dstbias = 0; + } + + } + _tz_is_set = 1; +} +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/timezone.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/tzname.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/tzname.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/tzname.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/ctime.c + * PURPOSE: Implementation of ctime + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> +
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/tzname.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,25 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/utime.c + * PURPOSE: Implementation of utime, _wutime + * PROGRAMERS: Timo Kreuzer + */ +#include <precomp.h> +#include <tchar.h> +#include <sys/utime.h> +#include "bitsfixup.h" + +int +_tutime(const _TCHAR* path, struct _utimbuf *t) +{ + int fd = _topen(path, _O_WRONLY | _O_BINARY); + + if (fd > 0) + { + int retVal = _futime(fd, t); + _close(fd); + return retVal; + } + return -1; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,10 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/utime32.c + * PURPOSE: Implementation of _utime32 + * PROGRAMERS: Timo Kreuzer + */ + +#define _USE_EXPLITIT_32BIT_TIME +#include "utime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,9 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/utime64.c + * PURPOSE: Implementation of _utime64 + * PROGRAMERS: Timo Kreuzer + */ +#define _USE_EXPLITIT_64BIT_TIME +#include "utime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/utime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wasctime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wasctime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wasctime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,11 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wasctime.c + * PURPOSE: Implementation of _wasctime + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#include "asctime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wasctime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wcsftime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wcsftime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wcsftime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,11 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wcsftime.c + * PURPOSE: Implementation of _wcsftime + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#include "strftime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wcsftime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,11 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wctime.c + * PURPOSE: Implementation of _wctime + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#include "ctime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,12 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wctime32.c + * PURPOSE: Implementation of _wctime32 + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#define _USE_EXPLITIT_32BIT_TIME +#include "ctime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,12 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wctime64.c + * PURPOSE: Implementation of _Wctime64 + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#define _USE_EXPLITIT_64BIT_TIME +#include "ctime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wctime64.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrdate.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrdate.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrdate.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,23 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/msvcrt/time/strtime.c + * PURPOSE: Fills a buffer with a formatted date representation + * PROGRAMER: Ariadne + * UPDATE HISTORY: + * 28/12/98: Created + */ +#include <precomp.h> + +/* + * @implemented + */ +wchar_t* _wstrdate(wchar_t* date) +{ + static const WCHAR format[] = { 'M','M',''','/',''','d','d',''','/',''','y','y',0 }; + + GetDateFormatW(LOCALE_NEUTRAL, 0, NULL, format, (LPWSTR)date, 9); + + return date; + +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrdate.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrtime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrtime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrtime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,22 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/msvcrt/time/strtime.c + * PURPOSE: Fills a buffer with a formatted time representation + * PROGRAMER: Ariadne + * UPDATE HISTORY: + * 28/12/98: Created + */ +#include <precomp.h> + +/* + * @implemented + */ +wchar_t* _wstrtime(wchar_t* time) +{ + static const WCHAR format[] = { 'H','H',''',':',''','m','m',''',':',''','s','s',0 }; + + GetTimeFormatW(LOCALE_NEUTRAL, 0, NULL, format, (LPWSTR)time, 9); + + return time; +}
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wstrtime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,11 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wutime.c + * PURPOSE: Implementation of _wutime + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#include "utime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime32.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime32.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime32.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,12 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wutime32.c + * PURPOSE: Implementation of _wutime32 + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#define _USE_EXPLITIT_32BIT_TIME +#include "utime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime32.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime64.c URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/sd... ============================================================================== --- branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime64.c (added) +++ branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime64.c [iso-8859-1] Mon Jan 19 16:05:27 2009 @@ -1,0 +1,12 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS CRT library + * FILE: lib/sdk/crt/time/wutime64.c + * PURPOSE: Implementation of _wutime64 + * PROGRAMERS: Timo Kreuzer + */ +#define UNICODE +#define _UNICODE + +#define _USE_EXPLITIT_64BIT_TIME +#include "utime.c"
Propchange: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time_new/wutime64.c ------------------------------------------------------------------------------ svn:eol-style = native