/*** CLKADJ.C  v1.00  1994.01.23  by Jouji ***/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void clkadj_f(double dh)
{
	int i,n,ds,wc;
	double w;
	clock_t sec,qsec;

		/* dh:補正すべき時間、例．+1.2:1.2秒進める、-0.4:0.4秒遅らせる */
	ds = dh;					/* ds:整数秒の補正値 */
	w = ds-dh;
	if(w<0) {					/* w:端数秒のウェイト値 */
		w += 1.0;
		ds++;
	}
	qsec = clock();				/* 現在時刻の取得 */
	while(qsec == (sec=clock()))
		;						/* 時刻の変わり目のチェック */
	qsec = sec;
	i = 0;
	while(qsec == (sec=clock())) {
		i++;
	}							/* i:1秒間のループ回数 */
	wc = i*w;					/* wc:w秒待つためのループ回数 */
	n = i;
	qsec = sec;
	sec += ds;
	for(i=0; i<wc; i++) {		/* w秒だけウェイト */
		qsec = clock();
	}
	stime(&sec);				/* 内蔵時計に時刻設定 */
	printf("内蔵時計の時間を%.2f秒修正しました。\n",dh);
	printf("n = %d,  wc = %d\n", n, wc);
}

main(int argc,char *argv[])
{
	double dh;

	if (argc < 2) {
		puts("Parameter error !\a\n");
		exit(1);
	}
	dh = atof(argv[1]);
	clkadj_f(dh);
}
