int DiagnosticsUtil::GetNumMachineScores() { // Create the XML Handler and clear it, for practice XNode *xml = new XNode; xml->Clear(); // Check for the file existing if( !IsAFile(STATS_XML_PATH) ) { LOG->Warn( "There is no Stats.xml file!" ); SAFE_DELETE( xml ); return 0; } // Make sure you can read it if( !xml->LoadFromFile(STATS_XML_PATH) ) { LOG->Trace( "Stats.xml unloadable!" ); SAFE_DELETE( xml ); return 0; } const XNode *pData = xml->GetChild( "SongScores" ); if( pData == NULL ) { LOG->Warn( "Error loading scores: <SongScores> node missing" ); SAFE_DELETE( xml ); return 0; } unsigned int iScoreCount = 0; // Named here, for LoadFromFile() renames it to "Stats" xml->m_sName = "SongScores"; // For each pData Child, or the Child in SongScores... FOREACH_CONST_Child( pData , p ) iScoreCount++; SAFE_DELETE( xml ); return iScoreCount; }
int DiagnosticsUtil::GetRevision() { // default value if a patch value can't be found/loaded int iRevision = 1; // Create the XML Handler, and clear it, for practice. XNode *xml = new XNode; xml->Clear(); xml->m_sName = "patch"; // if the file is readable and has the proper node, save its value if( !IsAFile(PATCH_XML_PATH) ) LOG->Warn( "GetRevision(): There is no patch file (patch.xml)" ); else if( !xml->LoadFromFile(PATCH_XML_PATH) ) LOG->Warn( "GetRevision(): Could not load from patch.xml" ); else if( !xml->GetChild("Revision") ) LOG->Warn( "GetRevision(): Revision node missing! (patch.xml)" ); else iRevision = atoi( xml->GetChild("Revision")->m_sValue ); SAFE_DELETE( xml ); return iRevision; }