From 20b38ad447a1014587ed9ea2e73bf817aa446b31 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 8 May 2019 14:00:47 +0100 Subject: [PATCH] Revert "Evil: remove localtime_r as mingw-w64 defines it when _POSIX_C_SOURCE is defined" This reverts commit a4c44e5e744dba15dfe512668127906afd4b6dba. this breaks on osx it seems... :( --- configure.ac | 1 - meson.build | 1 - src/lib/evil/evil_macro_wrapper.h | 14 ++++++++++++++ src/lib/evil/evil_time.c | 10 ++++++++++ src/lib/evil/evil_time.h | 23 ++++++++++++++++++++--- 5 files changed, 44 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 5b64175c81..57ae1f51a5 100644 --- a/configure.ac +++ b/configure.ac @@ -265,7 +265,6 @@ case "$host_vendor" in ;; esac -AC_DEFINE([_POSIX_C_SOURCE], [1], [Define the POSIX version]) AC_SUBST([MODULE_ARCH]) AC_DEFINE_UNQUOTED([MODULE_ARCH], ["${MODULE_ARCH}"], ["Module architecture"]) AC_DEFINE_UNQUOTED([SHARED_LIB_SUFFIX], ["${MODULE_EXT}"], [Suffix for shared objects]) diff --git a/meson.build b/meson.build index b5856468cf..2595461c62 100644 --- a/meson.build +++ b/meson.build @@ -97,7 +97,6 @@ add_global_arguments(dev_cflags, language: 'cpp') foreach lang : ['c', 'objc', 'cpp'] add_global_arguments('-DHAVE_CONFIG_H=1', language: lang) add_global_arguments('-D_GNU_SOURCE=1', language: lang) - add_global_arguments('-D_POSIX_C_SOURCE=1', language: lang) add_global_arguments('-DEFL_BETA_API_SUPPORT=1', language: lang) add_global_arguments('-DNEED_RUN_IN_TREE=1', language: lang) add_global_arguments('-DEFL_BUILD=1', language: lang) diff --git a/src/lib/evil/evil_macro_wrapper.h b/src/lib/evil/evil_macro_wrapper.h index cd650e5e12..19e68d3935 100644 --- a/src/lib/evil/evil_macro_wrapper.h +++ b/src/lib/evil/evil_macro_wrapper.h @@ -45,6 +45,20 @@ #endif #define mkdir(dirname, mode) evil_mkdir(dirname, mode) +/* + * evil_time.h + */ + +/** + * @def localtime_r(t, r) + * + * Wrapper around evil_localtime_r(). + */ +#ifdef localtime_r +# undef localtime_r +#endif +#define localtime_r(t, r) evil_localtime_r(t, r) + /* * evil_unistd.h */ diff --git a/src/lib/evil/evil_time.c b/src/lib/evil/evil_time.c index 90b63692fc..76c5a58657 100644 --- a/src/lib/evil/evil_time.c +++ b/src/lib/evil/evil_time.c @@ -12,6 +12,16 @@ #include "evil_macro_wrapper.h" #include "evil_private.h" +struct tm * +evil_localtime_r(const time_t *timep, struct tm *result) +{ + __time64_t t = *timep; + + _localtime64_s(result, &t); + + return result; +} + /* * strptime * based on http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/time/strptime.c?rev=HEAD diff --git a/src/lib/evil/evil_time.h b/src/lib/evil/evil_time.h index 00f538cae7..34607de5d1 100644 --- a/src/lib/evil/evil_time.h +++ b/src/lib/evil/evil_time.h @@ -2,9 +2,6 @@ #define __EVIL_TIME_H__ -#include - - /** * @file evil_time.h * @brief The file that provides functions ported from Unix in time.h. @@ -17,6 +14,26 @@ */ +/** + * @brief Convert the calendar time to broken-time representation in a + * user supplied data. + * + * @param timep The calender time. + * @param result The broken-down time representation. + * @return The broken-down time representation. + * + * This function converts the calendar time @p timep to a broken-time + * representation. The result is stored in the buffer @p result + * supplied by the user. If @p timep or @p result are @c NULL, or if + * an error occurred, this function returns @c NULL and the values in + * @p result might be undefined. Otherwise it returns @p result. + * + * Conformity: Non applicable. + * + * Supported OS: Windows XP. + */ +EAPI struct tm *evil_localtime_r(const time_t *timep, struct tm *result); + /** * @brief Convert a string representation of time to a time tm structure . *