Use sysctlbyname
This commit is contained in:
parent
31048bda0e
commit
bec1fa8607
@ -82,7 +82,6 @@ main(int argc, char *argv[])
|
|||||||
struct timezone tz, *stz;
|
struct timezone tz, *stz;
|
||||||
int kern_offset, wall_clock, disrtcset;
|
int kern_offset, wall_clock, disrtcset;
|
||||||
size_t len;
|
size_t len;
|
||||||
int mib[2];
|
|
||||||
/* Avoid time_t here, can be unsigned long or worse */
|
/* Avoid time_t here, can be unsigned long or worse */
|
||||||
long offset, localsec, diff;
|
long offset, localsec, diff;
|
||||||
time_t initial_sec, final_sec;
|
time_t initial_sec, final_sec;
|
||||||
@ -150,11 +149,9 @@ again:
|
|||||||
|
|
||||||
tzset();
|
tzset();
|
||||||
|
|
||||||
mib[0] = CTL_MACHDEP;
|
|
||||||
mib[1] = CPU_ADJKERNTZ;
|
|
||||||
len = sizeof(kern_offset);
|
len = sizeof(kern_offset);
|
||||||
if (sysctl(mib, 2, &kern_offset, &len, NULL, 0) == -1) {
|
if (sysctlbyname("machdep.adjkerntz", &kern_offset, &len, NULL, 0) == -1) {
|
||||||
syslog(LOG_ERR, "sysctl(get_offset): %m");
|
syslog(LOG_ERR, "sysctl(\"machdep.adjkerntz\"): %m");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,18 +283,16 @@ recalculate:
|
|||||||
if ( (init && stv != NULL)
|
if ( (init && stv != NULL)
|
||||||
|| ((init || !wall_clock) && kern_offset != offset)
|
|| ((init || !wall_clock) && kern_offset != offset)
|
||||||
) {
|
) {
|
||||||
mib[0] = CTL_MACHDEP;
|
|
||||||
mib[1] = CPU_DISRTCSET;
|
|
||||||
len = sizeof(disrtcset);
|
len = sizeof(disrtcset);
|
||||||
if (sysctl(mib, 2, &disrtcset, &len, NULL, 0) == -1) {
|
if (sysctlbyname("machdep.disable_rtc_set", &disrtcset, &len, NULL, 0) == -1) {
|
||||||
syslog(LOG_ERR, "sysctl(get_disrtcset): %m");
|
syslog(LOG_ERR, "sysctl(get: \"disable_rtc_set\"): %m");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (disrtcset == 0) {
|
if (disrtcset == 0) {
|
||||||
disrtcset = 1;
|
disrtcset = 1;
|
||||||
need_restore = True;
|
need_restore = True;
|
||||||
if (sysctl(mib, 2, NULL, NULL, &disrtcset, len) == -1) {
|
if (sysctlbyname("disable_rtc_set", NULL, NULL, &disrtcset, len) == -1) {
|
||||||
syslog(LOG_ERR, "sysctl(set_disrtcset): %m");
|
syslog(LOG_ERR, "sysctl(set: \"disable_rtc_set\"): %m");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -327,37 +322,31 @@ recalculate:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* setting CPU_ADJKERNTZ have a side effect: resettodr(), which */
|
/* setting machdep.adjkerntz have a side effect: resettodr(), which */
|
||||||
/* can be disabled by CPU_DISRTCSET, so if init or UTC clock */
|
/* can be disabled by machdep.disable_rtc_set, so if init or UTC clock */
|
||||||
/* -- don't write RTC, else write RTC. */
|
/* -- don't write RTC, else write RTC. */
|
||||||
|
|
||||||
if (kern_offset != offset) {
|
if (kern_offset != offset) {
|
||||||
kern_offset = offset;
|
kern_offset = offset;
|
||||||
mib[0] = CTL_MACHDEP;
|
|
||||||
mib[1] = CPU_ADJKERNTZ;
|
|
||||||
len = sizeof(kern_offset);
|
len = sizeof(kern_offset);
|
||||||
if (sysctl(mib, 2, NULL, NULL, &kern_offset, len) == -1) {
|
if (sysctlbyname("machdep.adjkerntz", NULL, NULL, &kern_offset, len) == -1) {
|
||||||
syslog(LOG_ERR, "sysctl(update_offset): %m");
|
syslog(LOG_ERR, "sysctl(set: \"disable_rtc_set\"): %m");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mib[0] = CTL_MACHDEP;
|
|
||||||
mib[1] = CPU_WALLCLOCK;
|
|
||||||
len = sizeof(wall_clock);
|
len = sizeof(wall_clock);
|
||||||
if (sysctl(mib, 2, NULL, NULL, &wall_clock, len) == -1) {
|
if (sysctlbyname("machdep.wall_cmos_clock", NULL, NULL, &wall_clock, len) == -1) {
|
||||||
syslog(LOG_ERR, "sysctl(put_wallclock): %m");
|
syslog(LOG_ERR, "sysctl(set: \"machdep.wall_cmos_clock\"): %m");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (need_restore) {
|
if (need_restore) {
|
||||||
need_restore = False;
|
need_restore = False;
|
||||||
mib[0] = CTL_MACHDEP;
|
|
||||||
mib[1] = CPU_DISRTCSET;
|
|
||||||
disrtcset = 0;
|
disrtcset = 0;
|
||||||
len = sizeof(disrtcset);
|
len = sizeof(disrtcset);
|
||||||
if (sysctl(mib, 2, NULL, NULL, &disrtcset, len) == -1) {
|
if (sysctlbyname("machdep.disable_rtc_set", NULL, NULL, &disrtcset, len) == -1) {
|
||||||
syslog(LOG_ERR, "sysctl(restore_disrtcset): %m");
|
syslog(LOG_ERR, "sysctl(set: \"machdep.disable_rtc_set\"): %m");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -239,21 +239,16 @@ main(int argc, char *argv[])
|
|||||||
nextp = &ep->next;
|
nextp = &ep->next;
|
||||||
memmove(&ep->utmp, &utmp, sizeof(struct utmp));
|
memmove(&ep->utmp, &utmp, sizeof(struct utmp));
|
||||||
ep->tdev = stp->st_rdev;
|
ep->tdev = stp->st_rdev;
|
||||||
#ifdef CPU_CONSDEV
|
|
||||||
/*
|
/*
|
||||||
* If this is the console device, attempt to ascertain
|
* If this is the console device, attempt to ascertain
|
||||||
* the true console device dev_t.
|
* the true console device dev_t.
|
||||||
*/
|
*/
|
||||||
if (ep->tdev == 0) {
|
if (ep->tdev == 0) {
|
||||||
int mib[2];
|
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
mib[0] = CTL_MACHDEP;
|
|
||||||
mib[1] = CPU_CONSDEV;
|
|
||||||
size = sizeof(dev_t);
|
size = sizeof(dev_t);
|
||||||
(void)sysctl(mib, 2, &ep->tdev, &size, NULL, 0);
|
(void)sysctlbyname("machdep.consdev", &ep->tdev, &size, NULL, 0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
touched = stp->st_atime;
|
touched = stp->st_atime;
|
||||||
if (touched < ep->utmp.ut_time) {
|
if (touched < ep->utmp.ut_time) {
|
||||||
/* tty untouched since before login */
|
/* tty untouched since before login */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user