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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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?Feedba…
+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-a…
+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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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/s…
==============================================================================
--- 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