tclock SNTPのログを表示する

時刻合わせの設定ダイアログを表示した際、SNTP.txtの内容を読み込み表示するためのソースに対するパッチ。以下の関数を pagesntp.c の OnInit 末尾で呼び出してあげればOK。

04/27 追記

このエントリーの内容はバイナリtclock-080427-analogに反映されました。

void LoadLogFile()
{
	HANDLE hFile;
	char fname[MAX_PATH];
	char* logValue = NULL;
	char* p = NULL;
	DWORD dwSize = 0;
	DWORD i = 0;

	strcpy(fname, g_mydir);
	add_title(fname, "SNTP.txt");
	hFile = CreateFile(fname, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hFile == INVALID_HANDLE_VALUE) goto CLEANUP;

	dwSize = GetFileSize(hFile, NULL);
	if (!dwSize) goto CLEANUP;

	logValue = malloc(dwSize+1);
	if (!logValue) goto CLEANUP;

	if (!ReadFile(hFile, logValue, dwSize, &dwSize, NULL)) goto CLEANUP;
	logValue[dwSize] = '\0';

	p = logValue;
	for (i=0; i<dwSize; ++i)
	{
		if (logValue[i] == '\r')
		{
			if (logValue[++i] == '\n')
			{
				logValue[i-1] = logValue[i] = '\0';
				SendMessage(hwndSNTPLog, LB_ADDSTRING, 0, (LPARAM)p);
				p = logValue + i+1;
			}
		}
	}

	SendMessage(hwndSNTPLog, LB_SETCURSEL, SendMessage(hwndSNTPLog, LB_GETCOUNT, 0, 0)-1, 0);

CLEANUP:
	if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile);
	if (logValue) free(logValue);
}


それにしても tclock-analog はグローバル変数が多い。IDEなしじゃあソースが追いかけれられません。