static int apply_step_offset(double offset) { struct timeval old_time, new_time; double err; LCL_ReadRawTime(&old_time); UTI_AddDoubleToTimeval(&old_time, -offset, &new_time); if (PRV_SetTime(&new_time, NULL) < 0) { DEBUG_LOG(LOGF_SysGeneric, "settimeofday() failed"); return 0; } LCL_ReadRawTime(&old_time); UTI_DiffTimevalsToDouble(&err, &old_time, &new_time); lcl_InvokeDispersionNotifyHandlers(fabs(err)); return 1; }
static int apply_step_offset(double offset) { struct timespec old_time, new_time; struct timeval new_time_tv; double err; LCL_ReadRawTime(&old_time); UTI_AddDoubleToTimespec(&old_time, -offset, &new_time); UTI_TimespecToTimeval(&new_time, &new_time_tv); if (PRV_SetTime(&new_time_tv, NULL) < 0) { DEBUG_LOG("settimeofday() failed"); return 0; } LCL_ReadRawTime(&old_time); err = UTI_DiffTimespecsToDouble(&old_time, &new_time); lcl_InvokeDispersionNotifyHandlers(fabs(err)); return 1; }