projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix fesetenv(FE_DFL_ENV) on mips
[musl]
/
src
/
time
/
__tz.c
diff --git
a/src/time/__tz.c
b/src/time/__tz.c
index
6d7173c
..
4ce2025
100644
(file)
--- a/
src/time/__tz.c
+++ b/
src/time/__tz.c
@@
-36,19
+36,16
@@
static int getint(const char **p)
return x;
}
return x;
}
-static int get
signed
(const char **p)
+static int get
off
(const char **p)
{
{
+ int neg = 0;
if (**p == '-') {
++*p;
if (**p == '-') {
++*p;
- return -getint(p);
+ neg = 1;
+ } else if (**p == '+') {
+ ++*p;
}
}
- if (**p == '+') ++*p;
- return getint(p);
-}
-
-static int getoff(const char **p)
-{
- int off = 3600*getsigned(p);
+ int off = 3600*getint(p);
if (**p == ':') {
++*p;
off += 60*getint(p);
if (**p == ':') {
++*p;
off += 60*getint(p);
@@
-57,7
+54,7
@@
static int getoff(const char **p)
off += getint(p);
}
}
off += getint(p);
}
}
- return off;
+ return
neg ? -off :
off;
}
static void getrule(const char **p, int rule[5])
}
static void getrule(const char **p, int rule[5])
@@
-128,7
+125,7
@@
static void do_tzset()
"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
s = getenv("TZ");
"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
s = getenv("TZ");
- if (!s || !*s) s =
__gmt
;
+ if (!s || !*s) s =
"/etc/localtime"
;
if (old_tz && !strcmp(s, old_tz)) return;
if (old_tz && !strcmp(s, old_tz)) return;
@@
-153,7
+150,8
@@
static void do_tzset()
if (*s == ':' || ((p=strchr(s, '/')) && !memchr(s, ',', p-s))) {
if (*s == ':') s++;
if (*s == '/' || *s == '.') {
if (*s == ':' || ((p=strchr(s, '/')) && !memchr(s, ',', p-s))) {
if (*s == ':') s++;
if (*s == '/' || *s == '.') {
- if (!libc.secure) map = __map_file(s, &map_size);
+ if (!libc.secure || !strcmp(s, "/etc/localtime"))
+ map = __map_file(s, &map_size);
} else {
size_t l = strlen(s);
if (l <= NAME_MAX && !strchr(s, '.')) {
} else {
size_t l = strlen(s);
if (l <= NAME_MAX && !strchr(s, '.')) {