diff options
Diffstat (limited to 'time64.h')
-rw-r--r-- | time64.h | 83 |
1 files changed, 22 insertions, 61 deletions
@@ -1,68 +1,15 @@ #include <time.h> +#include "time64_config.h" -#ifndef LOCALTIME64_H -# define LOCALTIME64_H +#ifndef TIME64_H +# define TIME64_H -/* Configuration. */ -/* Define as appropriate for your system */ -/* - HAS_GMTIME_R - Defined if your system has gmtime_r() - HAS_LOCALTIME_R - Defined if your system has localtime_r() +/* Set our custom types */ +typedef INT_64_T Int64; +typedef Int64 Time64_T; +typedef Int64 Year; - HAS_TIMEGM - Defined if your system has timegm() - - HAS_TM_TM_GMTOFF - Defined if your tm struct has a "tm_gmtoff" element. - - HAS_TM_TM_ZONE - Defined if your tm struct has a "tm_zone" element. - - SYSTEM_LOCALTIME_MAX - SYSTEM_LOCALTIME_MIN - SYSTEM_GMTIME_MAX - SYSTEM_GMTIME_MIN - Maximum and minimum values your system's gmtime() and localtime() - can handle. - - USE_SYSTEM_LOCALTIME - USE_SYSTEM_GMTIME - Should we use the system functions if the time is inside their range? - - USE_TM64 - Should we use a 64 bit safe tm struct which can handle a - year range greater than 2 billion? -*/ - -#define SYSTEM_LOCALTIME_MAX LOCALTIME_MAX -#define SYSTEM_LOCALTIME_MIN LOCALTIME_MIN -#define SYSTEM_GMTIME_MAX GMTIME_MAX -#define SYSTEM_GMTIME_MIN GMTIME_MIN - -/* It'll be faster */ -#define USE_SYSTEM_LOCALTIME 1 -#define USE_SYSTEM_GMTIME 1 - -/* Let's get all the time */ -#define USE_TM64 - -#ifdef USE_TM64 -#define TM TM64 -#else -#define TM tm -#endif - -/* 64 bit types. Set as appropriate for your system. */ -typedef Quad_t Time64_T; -typedef Quad_t Int64; -typedef Int64 Year; - -struct TM *gmtime64_r (const Time64_T *, struct TM *); -struct TM *localtime64_r (const Time64_T *, struct TM *); -Time64_T timegm64 (struct TM *); /* A copy of the tm struct but with a 64 bit year */ struct TM64 { @@ -86,7 +33,21 @@ struct TM64 { }; -/* Not everyone has gm/localtime_r() */ +/* Decide which tm struct to use */ +#ifdef USE_TM64 +#define TM TM64 +#else +#define TM tm +#endif + + +/* Declare public functions */ +struct TM *gmtime64_r (const Time64_T *, struct TM *); +struct TM *localtime64_r (const Time64_T *, struct TM *); +Time64_T timegm64 (struct TM *); + + +/* Not everyone has gm/localtime_r(), provide a replacement */ #ifdef HAS_LOCALTIME_R # define LOCALTIME_R(clock, result) localtime_r(clock, result) #else |