aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2015-02-09 16:34:24 -0600
committerRob Landley <rob@landley.net>2015-02-09 16:34:24 -0600
commitc277f347bba2417106b32212d9d40aceb4a88fb5 (patch)
treeba7228ee308b980970b8c3419af5c9690095e3b7 /lib
parent452dcd5f7d5374411da86777de9fe94f5a88f709 (diff)
downloadtoybox-c277f347bba2417106b32212d9d40aceb4a88fb5.tar.gz
Cleanup/refactoring pass on hwclock.
Inline open_wall_clock_rtc() into rtc_open(), factor out xtzset(), inline set_sysclock_from_hwclock(), set_hwclock_from_sysclock(), and set_sysclock_timezone(). /etc/adjtime is short enough we don't need to bother with a break. The final "else" case in main() should always trigger because >0 in optstr says "at most zero arguments", so the || at the end is always true, so take the test off.
Diffstat (limited to 'lib')
-rw-r--r--lib/lib.h1
-rw-r--r--lib/xwrap.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/lib.h b/lib/lib.h
index 621ed276..a659b696 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -128,6 +128,7 @@ char *xreadlink(char *name);
long xparsetime(char *arg, long units, long *fraction);
void xpidfile(char *name);
void xregcomp(regex_t *preg, char *rexec, int cflags);
+char *xtzset(char *new);
// lib.c
void verror_msg(char *msg, int err, va_list va);
diff --git a/lib/xwrap.c b/lib/xwrap.c
index cd3c6845..0a2b38ff 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -627,3 +627,14 @@ void xregcomp(regex_t *preg, char *regex, int cflags)
error_exit("xregcomp: %s", libbuf);
}
}
+
+char *xtzset(char *new)
+{
+ char *tz = getenv("TZ");
+
+ if (tz) tz = xstrdup(tz);
+ if (setenv("TZ", new, 1)) perror_exit("setenv");
+ tzset();
+
+ return tz;
+}