// Name: src/msw/wince/time.cpp
// Purpose: Implements missing time functionality for WinCE
// Author: Marco Cavallini (MCK) - wx@koansoftware.com
-// Modified by:
+// Modified by: Vadim Zeitlin for VC8 support
// Created: 31-08-2003
-// RCS-ID:
+// RCS-ID: $Id$
// Copyright: (c) Marco Cavallini
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/msw/wince/time.h"
+#if defined(__VISUALC__) && (__VISUALC__ >= 1400)
+
+// VC8 does provide the time functions but not the standard ones
+#include <altcecrt.h>
+
+time_t __cdecl time(time_t *t)
+{
+ __time64_t t64;
+ if ( !_time64(&t64) )
+ return (time_t)-1;
+
+ if ( t )
+ *t = (time_t)t64;
+
+ return (time_t)t64;
+}
+
+time_t __cdecl mktime(struct tm *t)
+{
+ return (time_t)_mktime64(t);
+}
+
+#else // !VC8
+
/////////////////////////////////////////////////////////////////////////////////////////////
// //
// strftime() - taken from OpenBSD //
continue;
case 'z':
{
- int diff;
+ int diff = -timezone;
char const * sign;
- if (t->tm_isdst < 0)
- continue;
- continue;
if (diff < 0) {
sign = "-";
diff = -diff;
extern "C"
{
-size_t wcsftime(wchar_t* const s, const size_t maxsize, const wchar_t *format, const struct tm * const t)
+/* Not needed in VS Studio 2005 */
+
+size_t wcsftime(wchar_t *s,
+ const size_t maxsize,
+ const wchar_t *format,
+ const struct tm *t)
{
- char sBuf[256];
- sBuf[0] = 0;
-
+ wxCharBuffer sBuf(maxsize/sizeof(wchar_t));
+
wxString formatStr(format);
wxCharBuffer bufFormatStr(formatStr.mb_str());
-
- size_t sz = strftime(sBuf, maxsize, bufFormatStr, t);
-
- wxMB2WC(s, sBuf, strlen(sBuf));
-
+
+ size_t sz = strftime(sBuf.data(), maxsize/sizeof(wchar_t), bufFormatStr, t);
+
+ wxMB2WC(s, sBuf, maxsize);
+
return sz;
}
} // extern "C"
-
+#endif // VC8/!VC8