/** * Initializes the application. * * Called upon startup and initializes the program by creating the main window. * * @return TRUE indicates a successful intialization */ bool GcbApp::OnInit() { bool success = true; closeApp = false; try { SetWorkingDirectory(); //wxString userDataPath = wxStandardPaths::Get().GetUserDataDir(); CheckDirectories(); // Reassign stderr and stdout errStream = freopen( "log\\stderr.txt", "w", stderr ); outStream = freopen( "log\\stdout.txt", "w", stdout ); InitializeGameFrame(); gameFrame->Show(true); SetTopWindow(gameFrame); eventLoop = new wxEventLoop(); wxEventLoop::SetActive(eventLoop); } catch (...) { success = false; } return success; }
// -------------------------------------------------------------------------- // // Function // Name: BackupStoreCheck::Check() // Purpose: Perform the check on the given account. You need to // hold a lock on the account before calling this! // Created: 21/4/04 // // -------------------------------------------------------------------------- void BackupStoreCheck::Check() { if(mFixErrors) { std::string writeLockFilename; StoreStructure::MakeWriteLockFilename(mStoreRoot, mDiscSetNumber, writeLockFilename); ASSERT(FileExists(writeLockFilename)); } if(!mQuiet && mFixErrors) { BOX_INFO("Will fix errors encountered during checking."); } BackupStoreAccountDatabase::Entry account(mAccountID, mDiscSetNumber); mapNewRefs = BackupStoreRefCountDatabase::Create(account); // Phase 1, check objects if(!mQuiet) { BOX_INFO("Checking store account ID " << BOX_FORMAT_ACCOUNT(mAccountID) << "..."); BOX_INFO("Phase 1, check objects..."); } CheckObjects(); // Phase 2, check directories if(!mQuiet) { BOX_INFO("Phase 2, check directories..."); } CheckDirectories(); // Phase 3, check root if(!mQuiet) { BOX_INFO("Phase 3, check root..."); } CheckRoot(); // Phase 4, check unattached objects if(!mQuiet) { BOX_INFO("Phase 4, fix unattached objects..."); } CheckUnattachedObjects(); // Phase 5, fix bad info if(!mQuiet) { BOX_INFO("Phase 5, fix unrecovered inconsistencies..."); } FixDirsWithWrongContainerID(); FixDirsWithLostDirs(); // Phase 6, regenerate store info if(!mQuiet) { BOX_INFO("Phase 6, regenerate store info..."); } WriteNewStoreInfo(); try { std::auto_ptr<BackupStoreRefCountDatabase> apOldRefs = BackupStoreRefCountDatabase::Load(account, false); mNumberErrorsFound += mapNewRefs->ReportChangesTo(*apOldRefs); } catch(BoxException &e) { BOX_WARNING("Reference count database was missing or " "corrupted, cannot check it for errors."); mNumberErrorsFound++; } // force file to be saved and closed before releasing the lock below if(mFixErrors) { mapNewRefs->Commit(); } else { mapNewRefs->Discard(); } mapNewRefs.reset(); if(mNumberErrorsFound > 0) { BOX_WARNING("Finished checking store account ID " << BOX_FORMAT_ACCOUNT(mAccountID) << ": " << mNumberErrorsFound << " errors found"); if(!mFixErrors) { BOX_WARNING("No changes to the store account " "have been made."); } if(!mFixErrors && mNumberErrorsFound > 0) { BOX_WARNING("Run again with fix option to " "fix these errors"); } if(mFixErrors && mNumberErrorsFound > 0) { BOX_WARNING("You should now use bbackupquery " "on the client machine to examine the store."); if(mLostAndFoundDirectoryID != 0) { BOX_WARNING("A lost+found directory was " "created in the account root.\n" "This contains files and directories " "which could not be matched to " "existing directories.\n"\ "bbackupd will delete this directory " "in a few days time."); } } } else { BOX_NOTICE("Finished checking store account ID " << BOX_FORMAT_ACCOUNT(mAccountID) << ": " "no errors found"); } }