From c277f347bba2417106b32212d9d40aceb4a88fb5 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 9 Feb 2015 16:34:24 -0600 Subject: 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. --- lib/lib.h | 1 + lib/xwrap.c | 11 +++++++++++ 2 files changed, 12 insertions(+) (limited to 'lib') 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; +} -- cgit v1.2.3