projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix printf precision specifier for hex floats on non-ld80 archs
[musl]
/
src
/
time
/
__tz.c
diff --git
a/src/time/__tz.c
b/src/time/__tz.c
index
102c8bc
..
1dbb0b8
100644
(file)
--- a/
src/time/__tz.c
+++ b/
src/time/__tz.c
@@
-15,7
+15,7
@@
weak_alias(__tzname, tzname);
static char std_name[TZNAME_MAX+1];
static char dst_name[TZNAME_MAX+1];
static char std_name[TZNAME_MAX+1];
static char dst_name[TZNAME_MAX+1];
-const char __
gmt[] = "GMT
";
+const char __
utc[] = "UTC
";
static int dst_off;
static int r0[5], r1[5];
static int dst_off;
static int r0[5], r1[5];
@@
-27,7
+27,7
@@
static char old_tz_buf[32];
static char *old_tz = old_tz_buf;
static size_t old_tz_size = sizeof old_tz_buf;
static char *old_tz = old_tz_buf;
static size_t old_tz_size = sizeof old_tz_buf;
-static volatile int lock[
2
];
+static volatile int lock[
1
];
static int getint(const char **p)
{
static int getint(const char **p)
{
@@
-84,7
+84,7
@@
static void getname(char *d, const char **p)
int i;
if (**p == '<') {
++*p;
int i;
if (**p == '<') {
++*p;
- for (i=0;
**p
!='>' && i<TZNAME_MAX; i++)
+ for (i=0;
(*p)[i]
!='>' && i<TZNAME_MAX; i++)
d[i] = (*p)[i];
++*p;
} else {
d[i] = (*p)[i];
++*p;
} else {
@@
-126,7
+126,7
@@
static void do_tzset()
s = getenv("TZ");
if (!s) s = "/etc/localtime";
s = getenv("TZ");
if (!s) s = "/etc/localtime";
- if (!*s) s = __
gmt
;
+ if (!*s) s = __
utc
;
if (old_tz && !strcmp(s, old_tz)) return;
if (old_tz && !strcmp(s, old_tz)) return;
@@
-136,7
+136,7
@@
static void do_tzset()
* free so as not to pull it into static programs. Growth
* strategy makes it so free would have minimal benefit anyway. */
i = strlen(s);
* free so as not to pull it into static programs. Growth
* strategy makes it so free would have minimal benefit anyway. */
i = strlen(s);
- if (i > PATH_MAX+1) s = __
gmt
, i = 3;
+ if (i > PATH_MAX+1) s = __
utc
, i = 3;
if (i >= old_tz_size) {
old_tz_size *= 2;
if (i >= old_tz_size) old_tz_size = i+1;
if (i >= old_tz_size) {
old_tz_size *= 2;
if (i >= old_tz_size) old_tz_size = i+1;
@@
-165,12
+165,12
@@
static void do_tzset()
}
}
}
}
}
}
- if (!map) s = __
gmt
;
+ if (!map) s = __
utc
;
}
if (map && (map_size < 44 || memcmp(map, "TZif", 4))) {
__munmap((void *)map, map_size);
map = 0;
}
if (map && (map_size < 44 || memcmp(map, "TZif", 4))) {
__munmap((void *)map, map_size);
map = 0;
- s = __
gmt
;
+ s = __
utc
;
}
zi = map;
}
zi = map;
@@
-207,7
+207,7
@@
static void do_tzset()
}
}
if (!__tzname[0]) __tzname[0] = __tzname[1];
}
}
if (!__tzname[0]) __tzname[0] = __tzname[1];
- if (!__tzname[0]) __tzname[0] = (char *)__
gmt
;
+ if (!__tzname[0]) __tzname[0] = (char *)__
utc
;
if (!__daylight) {
__tzname[1] = __tzname[0];
dst_off = __timezone;
if (!__daylight) {
__tzname[1] = __tzname[0];
dst_off = __timezone;
@@
-216,7
+216,7
@@
static void do_tzset()
}
}
}
}
- if (!s) s = __
gmt
;
+ if (!s) s = __
utc
;
getname(std_name, &s);
__tzname[0] = std_name;
__timezone = getoff(&s);
getname(std_name, &s);
__tzname[0] = std_name;
__timezone = getoff(&s);
@@
-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];
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];
*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;
}
UNLOCK(lock);
return;
}
@@
-373,32
+373,28
@@
void __secs_to_zone(long long t, int local, int *isdst, long *offset, long *oppo
long long t0 = rule_to_secs(r0, y);
long long t1 = rule_to_secs(r1, y);
long long t0 = rule_to_secs(r0, y);
long long t1 = rule_to_secs(r1, y);
+ if (!local) {
+ t0 += __timezone;
+ t1 += dst_off;
+ }
if (t0 < t1) {
if (t0 < t1) {
- if (!local) {
- t0 += __timezone;
- t1 += dst_off;
- }
if (t >= t0 && t < t1) goto dst;
goto std;
} else {
if (t >= t0 && t < t1) goto dst;
goto std;
} else {
- if (!local) {
- t1 += __timezone;
- t0 += dst_off;
- }
if (t >= t1 && t < t0) goto std;
goto dst;
}
std:
*isdst = 0;
if (t >= t1 && t < t0) goto std;
goto dst;
}
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;
*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);
}
*zonename = __tzname[1];
UNLOCK(lock);
}
@@
-417,7
+413,7
@@
const char *__tm_to_tzname(const struct tm *tm)
const void *p = tm->__tm_zone;
LOCK(lock);
do_tzset();
const void *p = tm->__tm_zone;
LOCK(lock);
do_tzset();
- if (p != __
gmt
&& p != __tzname[0] && p != __tzname[1] &&
+ if (p != __
utc
&& p != __tzname[0] && p != __tzname[1] &&
(!zi || (uintptr_t)p-(uintptr_t)abbrevs >= abbrevs_end - abbrevs))
p = "";
UNLOCK(lock);
(!zi || (uintptr_t)p-(uintptr_t)abbrevs >= abbrevs_end - abbrevs))
p = "";
UNLOCK(lock);