X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/11ea1abfa0c4684375ae7c4d5b5d75af8e39f912..ce00f59b5b169752d2f05ce3bb1a88ddc1b38b4c:/src/msw/wince/time.cpp diff --git a/src/msw/wince/time.cpp b/src/msw/wince/time.cpp index 55613ec1b0..6e6915b819 100644 --- a/src/msw/wince/time.cpp +++ b/src/msw/wince/time.cpp @@ -2,9 +2,9 @@ // 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 ///////////////////////////////////////////////////////////////////////////// @@ -30,6 +30,30 @@ #include "wx/msw/wince/time.h" +#if defined(__VISUALC__) && (__VISUALC__ >= 1400) + +// VC8 does provide the time functions but not the standard ones +#include + +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 // @@ -445,11 +469,9 @@ label: continue; case 'z': { - int diff; + int diff = -timezone; char const * sign; - if (t->tm_isdst < 0) - continue; if (diff < 0) { sign = "-"; diff = -diff; @@ -499,18 +521,22 @@ strftime(char * const s, const size_t maxsize, const char *format, const struct 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; } @@ -733,4 +759,4 @@ time_t __cdecl mktime(struct tm *t) } // extern "C" - +#endif // VC8/!VC8