struct tm *broken;
int minuteswest;
int rc = 0;
+ const struct timezone tz_utc = { 0 };
broken = localtime(&newtime.tv_sec);
#ifdef HAVE_TM_GMTOFF
* mode does not clobber the Hardware Clock with UTC. This
* is only available on first call of settimeofday after boot.
*/
- if (!ctl->universal)
+ if (ctl->hctosys && !ctl->universal) /* set PCIL */
rc = settimeofday(tv_null, &tz);
- if (!rc)
+ if (ctl->systz && ctl->universal) /* lock warp_clock */
+ rc = settimeofday(tv_null, &tz_utc);
+ if (!rc && ctl->hctosys)
rc = settimeofday(&newtime, &tz);
+ else if (!rc)
+ rc = settimeofday(NULL, &tz);
+
if (rc) {
warn(_("settimeofday() failed"));
retcode = 1;
}
if (ctl->systz)
- return set_system_clock_timezone(ctl);
+ return set_system_clock(ctl, startup_time);
if (ur->get_permissions())
return EX_NOPERM;