From da536648ec6fd2a3bd0f19da32e51a9b082aefc3 Mon Sep 17 00:00:00 2001 From: Lammert Bies Date: Sun, 11 Dec 2016 19:55:21 +0100 Subject: [PATCH] Moved WINCE localtime to own file --- Makefile | 1 + src/libhttp.c | 19 ++++--------------- src/wince_localtime.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 src/wince_localtime.c diff --git a/Makefile b/Makefile index 0017e4cc..e3c2332a 100644 --- a/Makefile +++ b/Makefile @@ -254,6 +254,7 @@ LIB_SOURCES = src/libhttp.c \ src/win32_pthread_self.c \ src/win32_pthread_setspecific.c \ src/wince_gmtime_s.c \ + src/wince_localtime.c \ src/wince_localtime_s.c \ src/wince_time.c LIB_INLINE = src/mod_lua.inl src/md5.inl diff --git a/src/libhttp.c b/src/libhttp.c index 700c28dc..53ab156b 100644 --- a/src/libhttp.c +++ b/src/libhttp.c @@ -124,23 +124,12 @@ pthread_mutexattr_t XX_httplib_pthread_mutex_attr; /* Create substitutes for POSIX functions in Win32. */ -static struct tm tm_array[MAX_WORKER_THREADS]; -static int tm_index = 0; +struct tm *gmtime( const time_t *ptime ) { -struct tm *localtime( const time_t *ptime ) { + int i = XX_httplib_atomic_inc(&XX_httplib_tm_index) % MAX_WORKER_THREADS; + return gmtime_s(ptime, XX_httplib_tm_array + i); - int i = XX_httplib_atomic_inc(&tm_index) % (sizeof(tm_array) / sizeof(tm_array[0])); - return localtime_s( ptime, tm_array + i ); - -} /* localtime */ - - -struct tm * gmtime(const time_t *ptime) { - - int i = XX_httplib_atomic_inc(&tm_index) % ARRAY_SIZE(tm_array); - return gmtime_s(ptime, tm_array + i); - -} /* strftime */ +} /* gmtime */ size_t strftime( char *dst, size_t dst_size, const char *fmt, const struct tm *tm ) { diff --git a/src/wince_localtime.c b/src/wince_localtime.c new file mode 100644 index 00000000..a960052c --- /dev/null +++ b/src/wince_localtime.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016 Lammert Bies + * Copyright (c) 2013-2016 the Civetweb developers + * Copyright (c) 2004-2013 Sergey Lyubka + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + + +#include "libhttp-private.h" + + + +#if defined(_WIN32_WCE) + +struct tm XX_httplib_tm_array[MAX_WORKER_THREADS]; +int XX_httplib_tm_index = 0; + +struct tm *localtime( const time_t *ptime ) { + + int i = XX_httplib_atomic_inc(&XX_httplib_tm_index) % MAX_WORKER_THREADS; + return localtime_s( ptime, XX_httplib_tm_array + i ); + +} /* localtime */ + +#endif /* defined(_WIN32_WCE) */