File Annotation

Not logged in
dcdd144598 2011-02-23        kinaba: #include "stdafx.h"
dcdd144598 2011-02-23        kinaba: #include "log.h"
dcdd144598 2011-02-23        kinaba: #include "app.h"
dcdd144598 2011-02-23        kinaba: #include "string.h"
dcdd144598 2011-02-23        kinaba: using namespace ki;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: void Logger::WriteLine( const String& str )
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	WriteLine( str.c_str(), str.len()*sizeof(TCHAR) );
dcdd144598 2011-02-23        kinaba: }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: void Logger::WriteLine( const TCHAR* str )
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	WriteLine( str, ::lstrlen(str)*sizeof(TCHAR) );
dcdd144598 2011-02-23        kinaba: }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: void Logger::WriteLine( const TCHAR* str, int siz )
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: #ifdef DO_LOGGING
dcdd144598 2011-02-23        kinaba: 	// Fileクラス自体のデバッグに使うかもしれないので、
dcdd144598 2011-02-23        kinaba: 	// Fileクラスを使用することは出来ない。API直叩き
dcdd144598 2011-02-23        kinaba: 	static bool st_firsttime = true;
dcdd144598 2011-02-23        kinaba: 	DWORD dummy;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	// ファイル名
dcdd144598 2011-02-23        kinaba: 	TCHAR fname[MAX_PATH];
dcdd144598 2011-02-23        kinaba: 	::GetModuleFileName( ::GetModuleHandle(NULL), fname, countof(fname) );
dcdd144598 2011-02-23        kinaba: 	::lstrcat( fname, TEXT("_log") );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	// ファイルを書き込み専用で開く
dcdd144598 2011-02-23        kinaba: 	HANDLE h = ::CreateFile( fname,
dcdd144598 2011-02-23        kinaba: 		GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS,
dcdd144598 2011-02-23        kinaba: 		FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL );
dcdd144598 2011-02-23        kinaba: 	if( h == INVALID_HANDLE_VALUE )
dcdd144598 2011-02-23        kinaba: 		return;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	// 初回限定処理
dcdd144598 2011-02-23        kinaba: 	if( st_firsttime )
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		::SetEndOfFile( h );
dcdd144598 2011-02-23        kinaba: 		#ifdef _UNICODE
dcdd144598 2011-02-23        kinaba: 			::WriteFile( h, "\xff\xfe", 2, &dummy, NULL );
dcdd144598 2011-02-23        kinaba: 		#endif
dcdd144598 2011-02-23        kinaba: 		st_firsttime = false;
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: 	else
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		::SetFilePointer( h, 0, NULL, FILE_END );
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	// 書く
dcdd144598 2011-02-23        kinaba: 	::WriteFile( h, str, siz, &dummy, NULL );
dcdd144598 2011-02-23        kinaba: 	::WriteFile( h, TEXT("\r\n"), sizeof(TEXT("\r")), &dummy, NULL );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	// 閉じる
dcdd144598 2011-02-23        kinaba: 	::CloseHandle( h );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: #endif
dcdd144598 2011-02-23        kinaba: }