[tz] [PATCH] Introduce Epoch offset and local time Epoch

Carsten Larsen cs at innolan.dk
Tue Oct 11 18:16:12 UTC 2016


---
 localtime.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/localtime.c b/localtime.c
index 6c00c45..3465248 100644
--- a/localtime.c
+++ b/localtime.c
@@ -58,6 +58,15 @@ static void unlock(void) { }
 #define OPEN_MODE	O_RDONLY
 #endif /* !defined O_BINARY */
 
+/*
+** AmigaOS Epoch is local time January 1, 1978
+*/
+
+#ifdef AMIGAOS
+#define TZEPOCH_OFFSET -252460800
+#define TZLOCAL_EPOCH 1
+#endif /* defined AMIGAOS */
+
 #ifndef WILDABBR
 /*
 ** Someone might make incorrect use of a time zone abbreviation:
@@ -118,6 +127,12 @@ struct lsinfo {				/* leap second information */
 #ifndef TZNAME_MAX
 #define MY_TZNAME_MAX	255
 #endif /* !defined TZNAME_MAX */
+#ifndef TZEPOCH_OFFSET
+#define TZEPOCH_OFFSET 0
+#endif /* !defined TZEPOCH_OFFSET */
+#ifdef TZLOCAL_EPOCH
+#define ALTZONE 1
+#endif /* defined TZLOCAL_EPOCH */
 
 struct state {
 	int		leapcnt;
@@ -2262,7 +2277,12 @@ posix2time(time_t t)
 time_t
 time(time_t *p)
 {
-  time_t r = sys_time(0);
+  time_t r = sys_time(0) + TZEPOCH_OFFSET;
+#ifdef TZLOCAL_EPOCH
+  if(lcl_is_set) {
+    r += (!daylight ? timezone : altzone);
+  }
+#endif
   if (p)
     *p = r;
   return r;
-- 
2.7.4



More information about the tz mailing list