コード例 #1
0
ファイル: mainwinlog.cpp プロジェクト: y80qqvht/FastCopy
void TMainDlg::WriteErrLogNoUI(const char *msg)
{
	EnableErrLogFile(TRUE);

	WriteLogHeader(hErrLog);

	DWORD	len, size;
	len = (DWORD)strlen(msg);

	::WriteFile(hErrLog, msg, len, &size, 0);
	::WriteFile(hErrLog, "\r\n\r\n", 4, &size, 0);

	if (::AttachConsole(ATTACH_PARENT_PROCESS)) {
		HANDLE	hStdErr = GetStdHandle(STD_ERROR_HANDLE);
		Wstr	wmsg(msg);
		::WriteConsoleW(hStdErr, L"FastCopy: ", 10, &size, 0);
		::WriteConsoleW(hStdErr, wmsg.s(), (DWORD)wcslen(wmsg.s()), &size, 0);
		::WriteConsoleW(hStdErr, L"\r\n\r\n", 4, &size, 0);
	}

	EnableErrLogFile(FALSE);
}
コード例 #2
0
ファイル: mainwinlog.cpp プロジェクト: y80qqvht/FastCopy
void TMainDlg::WriteErrLogAtStart()
{
	EnableErrLogFile(TRUE);

	::GetLocalTime(&startTm);
	WriteLogHeader(hErrLog);

	if (!errBufOffset) {
		if (!ti.errBuf) {
			ti.errBuf = fastCopy.GetErrBuf();
			errBufOffset = (int)ti.errBuf->UsedSize();
		}
		if (errBufOffset) {
			WriteErrLogCore();
		}

		char  *msg = "Initialize Error\r\n\r\n";
		DWORD len = (DWORD)strlen(msg);
		::WriteFile(hErrLog, msg, len, &len, 0);
	}

	EnableErrLogFile(FALSE);
}
コード例 #3
0
ファイル: StepMania.cpp プロジェクト: augustg/stepmania-3.9
int main(int argc, char* argv[])
#endif
{
#ifdef _XBOX
	int argc = 1;
	char *argv[] = {"default.xbe"};
#endif

	g_argc = argc;
	g_argv = argv;

	/* Set up arch hooks first.  This may set up crash handling. */
	HOOKS = MakeArchHooks();

	CString  g_sErrorString = "";
#if !defined(DEBUG)
	/* Always catch RageExceptions; they should always have distinct strings. */
	try { /* RageException */

	/* Tricky: for other exceptions, we want a backtrace.  To do this in Windows,
	 * we need to catch the exception and force a crash.  The call stack is still
	 * there, and gets picked up by the crash handler.  (If we don't catch it, we'll
	 * get a generic, useless "abnormal termination" dialog.)  In Linux, if we do this
	 * we'll only get main() on the stack, but if we don't catch the exception, it'll
	 * just work.  So, only catch generic exceptions in Windows. */
#if defined(_WINDOWS)
	try { /* exception */
#endif

#endif

	/* Almost everything uses this to read and write files.  Load this early. */
	FILEMAN = new RageFileManager( argv[0] );
	FILEMAN->MountInitialFilesystems();

	/* Set this up next.  Do this early, since it's needed for RageException::Throw. */
	LOG			= new RageLog();

	/* Whew--we should be able to crash safely now! */

	//
	// load preferences and mount any alternative trees.
	//
	PREFSMAN	= new PrefsManager;

	ApplyLogPreferences();

	WriteLogHeader();

	/* Set up alternative filesystem trees. */
	if( PREFSMAN->m_sAdditionalFolders != "" )
	{
		CStringArray dirs;
		split( PREFSMAN->m_sAdditionalFolders, ",", dirs, true );
		for( unsigned i=0; i < dirs.size(); i++)
			FILEMAN->Mount( "dir", dirs[i], "" );
	}
	if( PREFSMAN->m_sAdditionalSongFolders != "" )
	{
		CStringArray dirs;
		split( PREFSMAN->m_sAdditionalSongFolders, ",", dirs, true );
		for( unsigned i=0; i < dirs.size(); i++)
	        FILEMAN->Mount( "dir", dirs[i], "Songs" );
	}
	MountTreeOfZips( ZIPS_DIR );

	/* One of the above filesystems might contain files that affect preferences, eg Data/Static.ini.
	 * Re-read preferences. */
	PREFSMAN->ReadGlobalPrefsFromDisk();
	ApplyLogPreferences();
	
#if defined(HAVE_SDL)
	SetupSDL();
#endif

	/* This needs PREFSMAN. */
	Dialog::Init();

	//
	// Create game objects
	//

	GAMESTATE	= new GameState;

	/* This requires PREFSMAN, for PREFSMAN->m_bShowLoadingWindow. */
	LoadingWindow *loading_window = MakeLoadingWindow();
	if( loading_window == NULL )
		RageException::Throw( "Couldn't open any loading windows." );

	loading_window->Paint();

	srand( time(NULL) );	// seed number generator	
	
	/* Do this early, so we have debugging output if anything else fails.  LOG and
	 * Dialog must be set up first.  It shouldn't take long, but it might take a
	 * little time; do this after the LoadingWindow is shown, since we don't want
	 * that to appear delayed. */
	HOOKS->DumpDebugInfo();

#if defined(HAVE_TLS)
	LOG->Info( "TLS is %savailable", RageThread::GetSupportsTLS()? "":"not " );
#endif

	if( PREFSMAN->m_bFirstRun )
		OnFirstRun();

	CheckSettings();

	GAMEMAN		= new GameManager;
	THEME		= new ThemeManager;
	ANNOUNCER	= new AnnouncerManager;
	NOTESKIN	= new NoteSkinManager;

	/* Set up the theme and announcer. */
	ReadGamePrefsFromDisk();

	if( PREFSMAN->m_iSoundWriteAhead )
		LOG->Info( "Sound writeahead has been overridden to %i", PREFSMAN->m_iSoundWriteAhead );
	SOUNDMAN	= new RageSoundManager;
	SOUNDMAN->Init( PREFSMAN->GetSoundDrivers() );
	SOUNDMAN->SetPrefs( PREFSMAN->m_fSoundVolume );
	SOUND		= new GameSoundManager;
	BOOKKEEPER	= new Bookkeeper;
	LIGHTSMAN	= new LightsManager(PREFSMAN->m_sLightsDriver);
	INPUTFILTER	= new InputFilter;
	INPUTMAPPER	= new InputMapper;
	INPUTQUEUE	= new InputQueue;
	SONGINDEX	= new SongCacheIndex;
	BANNERCACHE = new BannerCache;
	
	/* depends on SONGINDEX: */
	SONGMAN		= new SongManager();
	SONGMAN->InitAll( loading_window );		// this takes a long time
	CRYPTMAN	= new CryptManager;	// need to do this before ProfileMan
	MEMCARDMAN	= new MemoryCardManager;
	PROFILEMAN	= new ProfileManager;
	PROFILEMAN->Init();				// must load after SONGMAN
	UNLOCKMAN	= new UnlockSystem;
    NSMAN       = new NetworkSyncManager( loading_window ); 

	delete loading_window;		// destroy this before init'ing Display
    
	ProcessArgsFirst();
	


	DISPLAY = CreateDisplay();

	DISPLAY->ChangeCentering(
		PREFSMAN->m_iCenterImageTranslateX, 
		PREFSMAN->m_iCenterImageTranslateY,
		PREFSMAN->m_fCenterImageScaleX,
		PREFSMAN->m_fCenterImageScaleY );

	TEXTUREMAN	= new RageTextureManager();
	TEXTUREMAN->SetPrefs( 
		RageTextureManagerPrefs( 
			PREFSMAN->m_iTextureColorDepth, 
			PREFSMAN->m_iMovieColorDepth,
			PREFSMAN->m_bDelayedTextureDelete, 
			PREFSMAN->m_iMaxTextureResolution,
			PREFSMAN->m_bForceMipMaps
			)
		);

	MODELMAN	= new ModelManager;
	MODELMAN->SetPrefs( 
		ModelManagerPrefs(
			PREFSMAN->m_bDelayedModelDelete 
			)
		);

	StoreActualGraphicOptions( true );

	SONGMAN->PreloadSongImages();

	/* This initializes objects that change the SDL event mask, and has other
	 * dependencies on the SDL video subsystem, so it must be initialized after DISPLAY. */
	INPUTMAN	= new RageInput;

	// These things depend on the TextureManager, so do them after!
	FONT		= new FontManager;
	SCREENMAN	= new ScreenManager;

	/* People may want to do something else while songs are loading, so do
	 * this after loading songs. */
	BoostAppPri();

	ResetGame();

	CodeDetector::RefreshCacheItems();

	/* Initialize which courses are ranking courses here. */
	SONGMAN->UpdateRankingCourses();

	/* Run the second argcheck, you can do your other options here */
	ProcessArgsSecond();

	/* Run the main loop. */
	GameLoop();

	PREFSMAN->SaveGlobalPrefsToDisk();
	SaveGamePrefsToDisk();

#if !defined(DEBUG)
	}
	catch( const RageException &e )
	{
		/* Gracefully shut down. */
		g_sErrorString = e.what();
	}
#endif

	SAFE_DELETE( SCREENMAN );
    SAFE_DELETE( NSMAN );
	/* Delete INPUTMAN before the other INPUTFILTER handlers, or an input
	 * driver may try to send a message to INPUTFILTER after we delete it. */
	SAFE_DELETE( INPUTMAN );
	SAFE_DELETE( INPUTQUEUE );
	SAFE_DELETE( INPUTMAPPER );
	SAFE_DELETE( INPUTFILTER );
	SAFE_DELETE( MODELMAN );
	SAFE_DELETE( PROFILEMAN );	// PROFILEMAN needs the songs still loaded
	SAFE_DELETE( UNLOCKMAN );
	SAFE_DELETE( CRYPTMAN );
	SAFE_DELETE( MEMCARDMAN );
	SAFE_DELETE( SONGMAN );
	SAFE_DELETE( BANNERCACHE );
	SAFE_DELETE( SONGINDEX );
	SAFE_DELETE( SOUND ); /* uses GAMESTATE, PREFSMAN */
	SAFE_DELETE( PREFSMAN );
	SAFE_DELETE( GAMESTATE );
	SAFE_DELETE( GAMEMAN );
	SAFE_DELETE( NOTESKIN );
	SAFE_DELETE( THEME );
	SAFE_DELETE( ANNOUNCER );
	SAFE_DELETE( BOOKKEEPER );
	SAFE_DELETE( LIGHTSMAN );
	SAFE_DELETE( SOUNDMAN );
	SAFE_DELETE( FONT );
	SAFE_DELETE( TEXTUREMAN );
	SAFE_DELETE( DISPLAY );
	Dialog::Shutdown();
	SAFE_DELETE( LOG );
	SAFE_DELETE( FILEMAN );

#if !defined(DEBUG) && defined(_WINDOWS)
	}
	catch( const exception &e )
	{
		/* This can be things like calling std::string::reserve(-1), or out of memory.
		 * This can also happen if we throw a RageException during a ctor, in which case
		 * we want a crash dump. */
		FAIL_M( e.what() );
	}
#endif
	
	if( g_sErrorString != "" )
		HandleException( g_sErrorString );

	SAFE_DELETE( HOOKS );

#ifndef _XBOX
	return 0;
#endif
}
コード例 #4
0
ファイル: NWNXConnect.cpp プロジェクト: TerrahKitsune/NWNX
BOOL CNWNXConnect::OnCreate(const char* LogDir){

	char log[MAX_PATH];
	char logrotate[MAX_PATH];

	sprintf( log, "%s\\nwnx_connect.txt", LogDir);
	sprintf( logrotate, "%s\\1\\nwnx_connect.txt", LogDir);

	MoveFile( log, logrotate );

	// call the base class function
	if( !CNWNXBase::OnCreate( log ) )
		return false;

	WriteLogHeader( );

	char buffer[128];
	char number[12];

	CNWNXMemory mem;
	TLK = (CExoString *)mem.nwnx_malloc(sizeof(CExoString));
	CIniFile ini( "NWNX.ini" );

	ini.ReadString( "CONNECT", "TLK", buffer, 128, "" );
	int n=0;

	if( buffer[0]=='\0' ){

		Log( "No TLK file was registered in nwnx.ini!\n" );
		return true;
	}
	else{

		TLK->CExoStringCpy( buffer );
		Log( "TLK: %s\n", TLK->CStr() );
	}

	ini.ReadString( "CONNECT", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
	HAKLen=0;
	void * temp;
	HAK=NULL;

	while( buffer[0]!='\0' ){

		temp = mem.nwnx_malloc( sizeof(CExoString)*(HAKLen+1) );
		if( HAK ){
			memcpy( temp, HAK, sizeof(CExoString)*HAKLen );
			mem.nwnx_free( HAK );
		}
		
		HAK = (CExoString*)temp;
		HAK[HAKLen].CExoStringCpy( buffer );
		Log( "HAK %i: %s\n", HAKLen+1, HAK[HAKLen].CStr() );
		HAKLen++;

		ini.ReadString( "CONNECT", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
	}
	Log( "\n" );
	if( HookCode( (PVOID)0x0043a810, CNWSMessage__SendServerToPlayerCharList, (PVOID*)&CNWSMessage__SendServerToPlayerCharListNext ) )
		Log( "o Hooked SendServerToPlayerCharList!\n" );
	else
		Log( "! Failed to hook SendServerToPlayerCharList!\n" );
	Log( "\n" );
	return true;
}
コード例 #5
0
ファイル: NWNXMessages.cpp プロジェクト: TerrahKitsune/NWNX
BOOL CNWNXMessages::OnCreate(const char* LogDir){

	char log[MAX_PATH];
	char logrotate[MAX_PATH];

	sprintf( log, "%s\\nwnx_messages.txt", LogDir);
	sprintf( logrotate, "%s\\1\\nwnx_messages.txt", LogDir);

	MoveFile( log, logrotate );

	// call the base class function
	if( !CNWNXBase::OnCreate( log ) )
		return false;

	WriteLogHeader( );
	CIniFile ini( "NWNX.ini" );

	SS=NULL;
	SSLen=0;

	char lpath[MAX_PATH];

	ini.ReadString( "MESSAGES", "Languages", lpath, MAX_PATH-25, "%" );

	if( lpath[0] != '%' ){
		int loaded = LoadLanguages( lpath );	
		if( loaded <= 0 ){
			SS = new ScrambleSet[1];
			SSLen=1;
		}
		else
			Log( "Loaded: %i languages\n\n", loaded-1 );
	}
	else{

		SS = new ScrambleSet[1];
		SSLen=1;
		Log( "No languages where loaded!\n\n" );
	}

	char buffer[128];
	char number[12];

	CNWNXMemory mem;
	TLK = (CExoString *)mem.nwnx_malloc(sizeof(CExoString));
	LASTSTR=(CExoString *)mem.nwnx_malloc(sizeof(CExoString));
	
	TLK->text=NULL;
	LASTSTR->text=NULL;

	LOGLEVEL=ini.ReadInteger( "MESSAGES", "log", 0 );
	ini.ReadString( "MESSAGES", "TLK", buffer, 128, "" );
	int n=0;

	if( buffer[0]=='\0' ){

		Log( "No TLK file was registered in nwnx.ini! Sending Haklist disabled!\n" );
	}
	else{

		TLK->CExoStringCpy( buffer );
		Log( "TLK: %s\n", TLK->CStr() );

		ini.ReadString( "MESSAGES", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
		HAKLen=0;
		void * temp;
		HAK=NULL;

		while( buffer[0]!='\0' ){

			temp = mem.nwnx_malloc( sizeof(CExoString)*(HAKLen+1) );
			if( HAK ){
				memcpy( temp, HAK, sizeof(CExoString)*HAKLen );
				mem.nwnx_free( HAK );
			}
		
			HAK = (CExoString*)temp;
			HAK[HAKLen].text=NULL;
			HAK[HAKLen].CExoStringCpy( buffer );
			Log( "HAK %i: %s\n", HAKLen+1, HAK[HAKLen].CStr() );
			HAKLen++;

			ini.ReadString( "MESSAGES", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
		}
		Log( "\n" );
		if( HookCode( (PVOID)0x0043a810, CNWSMessage__SendServerToPlayerCharList, (PVOID*)&CNWSMessage__SendServerToPlayerCharListNext ) )
			Log( "o Hooked SendServerToPlayerCharList!\n" );
		else
			Log( "! Failed to hook SendServerToPlayerCharList!\n" );
		Log( "\n" );
	}
	
	return true;
}
コード例 #6
0
ファイル: logutils.c プロジェクト: mingpen/OpenNT
LONG __stdcall
OpenLogW (
    IN      LPCWSTR szLogFileName,
    IN      DWORD   dwAccessFlags,
    IN      LPDWORD lpdwLogType,
    IN      HQUERY  hQuery,
    IN      DWORD   dwMaxRecords
)
{
    DWORD       dwFileNameSize;
    LONG  pdhStatus = ERROR_SUCCESS;
    DWORD       dwLocalLogType;
    PLOG_INFO   pLog = &LogEntry;

    try {
        // test the parameters before continuing
        if (szLogFileName != NULL) {
            dwFileNameSize = lstrlenW (szLogFileName) + 1;
            if (dwFileNameSize > 1) {
                if (lpdwLogType != NULL) {
                    dwLocalLogType = *lpdwLogType;  // test read
                    *lpdwLogType = 0; // test write to buffer
                    *lpdwLogType = dwLocalLogType; // restore value
                } else {
                    // required parameter is missing
                    pdhStatus = PDH_INVALID_ARGUMENT;
                }
            } else {
                // empty file name
                pdhStatus = PDH_INVALID_ARGUMENT;
            }
        } else {
            // required parameter is missing
            pdhStatus = PDH_INVALID_ARGUMENT;
        }
    } except (EXCEPTION_EXECUTE_HANDLER) {
        // something failed so give up here
        pdhStatus = PDH_INVALID_ARGUMENT;
    }

    if (pdhStatus == ERROR_SUCCESS) {
        // create a log entry
        pdhStatus = CreateNewLogEntry (
            szLogFileName,
            dwFileNameSize,
            hQuery,
            dwMaxRecords);

        // open the file
        if (pdhStatus == ERROR_SUCCESS) {
            // dispatch based on read/write attribute
            if ((dwAccessFlags & LOG_READ_ACCESS) ==
                LOG_READ_ACCESS) {
                pdhStatus = ERROR_NOT_SUPPORTED;
            } else if ((dwAccessFlags & LOG_WRITE_ACCESS) ==
                LOG_WRITE_ACCESS) {
                pdhStatus = OpenOutputLogFile (pLog,
                    dwAccessFlags, &dwLocalLogType);
                if (pdhStatus == ERROR_SUCCESS) {
                    pdhStatus = WriteLogHeader (pLog);
                }
            } else {
                pdhStatus = PDH_INVALID_ARGUMENT;
            }
            if (pdhStatus == ERROR_SUCCESS) {
				// return handle to caller
                *lpdwLogType = dwLocalLogType;
            }
        }
    }

    return pdhStatus;
}