diff options
Diffstat (limited to 'main/musl/0001-fix-struct-tm.tm_gmtoff-to-be-posive-east-of-UTC.patch')
-rw-r--r-- | main/musl/0001-fix-struct-tm.tm_gmtoff-to-be-posive-east-of-UTC.patch | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/main/musl/0001-fix-struct-tm.tm_gmtoff-to-be-posive-east-of-UTC.patch b/main/musl/0001-fix-struct-tm.tm_gmtoff-to-be-posive-east-of-UTC.patch deleted file mode 100644 index 569182bfd6..0000000000 --- a/main/musl/0001-fix-struct-tm.tm_gmtoff-to-be-posive-east-of-UTC.patch +++ /dev/null @@ -1,123 +0,0 @@ -From f758bdca98941027145e005543c7e5bc218d98b4 Mon Sep 17 00:00:00 2001 -From: Natanael Copa <ncopa@alpinelinux.org> -Date: Wed, 12 Aug 2015 17:06:00 +0200 -Subject: [PATCH] fix struct tm.tm_gmtoff to be posive east of UTC - -Posix says that tzset() should set the "extern long timezone" (defined -in time.h) "shall be set to the difference, in seconds, between -Coordinated Universal Time (UTC) and local standard time." This means -that locations east of UTC will have negative value timezone value. - -However the value in the glibc additional struct tm field "long -tm_gmtoff" is positive on locations east of UTC, just like the offset in -the zoneinfo database. - -From http://man7.org/linux/man-pages/man3/ctime.3.html - - long tm_gmtoff; /* Seconds east of UTC */ - -This fixes coreutils' 'date -R' and 'ruby -e "puts Time.now"' to display -correct timezone offset. ---- - src/time/__tz.c | 12 ++++++------ - src/time/localtime_r.c | 2 +- - src/time/mktime.c | 6 +++--- - src/time/strftime.c | 4 ++-- - 4 files changed, 12 insertions(+), 12 deletions(-) - -diff --git a/src/time/__tz.c b/src/time/__tz.c -index 102c8bc..8b84b9b 100644 ---- a/src/time/__tz.c -+++ b/src/time/__tz.c -@@ -354,9 +354,9 @@ void __secs_to_zone(long long t, int local, int *isdst, long *offset, long *oppo - size_t alt, i = scan_trans(t, local, &alt); - if (i != -1) { - *isdst = types[6*i+4]; -- *offset = -(int32_t)zi_read32(types+6*i); -+ *offset = (int32_t)zi_read32(types+6*i); - *zonename = (const char *)abbrevs + types[6*i+5]; -- if (oppoff) *oppoff = -(int32_t)zi_read32(types+6*alt); -+ if (oppoff) *oppoff = (int32_t)zi_read32(types+6*alt); - UNLOCK(lock); - return; - } -@@ -390,15 +390,15 @@ void __secs_to_zone(long long t, int local, int *isdst, long *offset, long *oppo - } - std: - *isdst = 0; -- *offset = __timezone; -- if (oppoff) *oppoff = dst_off; -+ *offset = -__timezone; -+ if (oppoff) *oppoff = -dst_off; - *zonename = __tzname[0]; - UNLOCK(lock); - return; - dst: - *isdst = 1; -- *offset = dst_off; -- if (oppoff) *oppoff = __timezone; -+ *offset = -dst_off; -+ if (oppoff) *oppoff = -__timezone; - *zonename = __tzname[1]; - UNLOCK(lock); - } -diff --git a/src/time/localtime_r.c b/src/time/localtime_r.c -index 1d43d9f..2e62c29 100644 ---- a/src/time/localtime_r.c -+++ b/src/time/localtime_r.c -@@ -11,7 +11,7 @@ struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm) - return 0; - } - __secs_to_zone(*t, 0, &tm->tm_isdst, &tm->__tm_gmtoff, 0, &tm->__tm_zone); -- if (__secs_to_tm((long long)*t - tm->__tm_gmtoff, tm) < 0) { -+ if (__secs_to_tm((long long)*t + tm->__tm_gmtoff, tm) < 0) { - errno = EOVERFLOW; - return 0; - } -diff --git a/src/time/mktime.c b/src/time/mktime.c -index 0ab4780..bad3f07 100644 ---- a/src/time/mktime.c -+++ b/src/time/mktime.c -@@ -10,14 +10,14 @@ time_t mktime(struct tm *tm) - __secs_to_zone(t, 1, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone); - - if (tm->tm_isdst>=0 && new.tm_isdst!=tm->tm_isdst) -- t += opp - new.__tm_gmtoff; -+ t -= opp - new.__tm_gmtoff; - -- t += new.__tm_gmtoff; -+ t -= new.__tm_gmtoff; - if ((time_t)t != t) goto error; - - __secs_to_zone(t, 0, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone); - -- if (__secs_to_tm(t - new.__tm_gmtoff, &new) < 0) goto error; -+ if (__secs_to_tm(t + new.__tm_gmtoff, &new) < 0) goto error; - - *tm = new; - return t; -diff --git a/src/time/strftime.c b/src/time/strftime.c -index 794fbe1..e945bb7 100644 ---- a/src/time/strftime.c -+++ b/src/time/strftime.c -@@ -126,7 +126,7 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm * - fmt = "%H:%M"; - goto recu_strftime; - case 's': -- val = __tm_to_secs(tm) + tm->__tm_gmtoff; -+ val = __tm_to_secs(tm) - tm->__tm_gmtoff; - width = 1; - goto number; - case 'S': -@@ -178,7 +178,7 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm * - return ""; - } - *l = snprintf(*s, sizeof *s, "%+.2d%.2d", -- (-tm->__tm_gmtoff)/3600, -+ (tm->__tm_gmtoff)/3600, - abs(tm->__tm_gmtoff%3600)/60); - return *s; - case 'Z': --- -2.5.0 - |