--- 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