base: Revert 9277177eccff and use getenv/setenv for UTC time
This patch reverts changeset 9277177eccff which does not do what it was intended to do. In essence, we go back to implementing mkutctime much like the non-standard timegm extension.
This commit is contained in:
parent
02b4605da0
commit
cc336ecb5e
2 changed files with 28 additions and 4 deletions
|
@ -150,7 +150,32 @@ sleep(const Time &time)
|
|||
time_t
|
||||
mkutctime(struct tm *time)
|
||||
{
|
||||
time_t local = mktime(time);
|
||||
return mktime(gmtime(&local));
|
||||
// get the current timezone
|
||||
char *tz = getenv("TZ");
|
||||
|
||||
// copy the string as the pointer gets invalidated when updating
|
||||
// the environment
|
||||
if (tz) {
|
||||
tz = strdup(tz);
|
||||
if (!tz) {
|
||||
fatal("Failed to reserve memory for UTC time conversion\n");
|
||||
}
|
||||
}
|
||||
|
||||
// change to UTC and get the time
|
||||
setenv("TZ", "", 1);
|
||||
tzset();
|
||||
time_t ret = mktime(time);
|
||||
|
||||
// restore the timezone again
|
||||
if (tz) {
|
||||
setenv("TZ", tz, 1);
|
||||
free(tz);
|
||||
} else {
|
||||
unsetenv("TZ");
|
||||
}
|
||||
tzset();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,8 +53,7 @@ DumbTOD::DumbTOD(const Params *p)
|
|||
: BasicPioDevice(p, 0x08)
|
||||
{
|
||||
struct tm tm = p->time;
|
||||
time_t local = mktime(&tm);
|
||||
todTime = mktime(gmtime(&local));
|
||||
todTime = mkutctime(&tm);
|
||||
|
||||
DPRINTFN("Real-time clock set to %s\n", asctime(&tm));
|
||||
DPRINTFN("Real-time clock set to %d\n", todTime);
|
||||
|
|
Loading…
Reference in a new issue