From 4606d68fdfe1be669189f327047cdc883bd6c152 Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Sun, 3 Sep 2006 05:16:09 +0000 Subject: [PATCH] Move warnings meant for the user to userlog.txt. These are as inconsistent in format as before but at least they're all in one place. --- stepmania/src/BannerCache.cpp | 14 ++--- stepmania/src/CourseLoaderCRS.cpp | 42 +++++++------ stepmania/src/CourseWriterCRS.cpp | 2 +- stepmania/src/NoteDataUtil.cpp | 2 +- stepmania/src/NotesLoaderBMS.cpp | 39 +++++++----- stepmania/src/NotesLoaderDWI.cpp | 32 ++++++---- stepmania/src/NotesLoaderKSF.cpp | 63 ++++++++++++-------- stepmania/src/NotesLoaderSM.cpp | 53 ++++++++-------- stepmania/src/NotesWriterDWI.cpp | 5 +- stepmania/src/NotesWriterSM.cpp | 2 +- stepmania/src/PlayerOptions.cpp | 6 +- stepmania/src/RageSoundReader_FileReader.cpp | 2 +- stepmania/src/RageSurface_Load.cpp | 4 +- stepmania/src/Song.cpp | 29 +++++---- 14 files changed, 158 insertions(+), 137 deletions(-) diff --git a/stepmania/src/BannerCache.cpp b/stepmania/src/BannerCache.cpp index a4d196b359..382fff0d9f 100644 --- a/stepmania/src/BannerCache.cpp +++ b/stepmania/src/BannerCache.cpp @@ -123,7 +123,7 @@ void BannerCache::LoadBanner( RString BannerPath ) RageSurface *img = RageSurfaceUtils::LoadSurface( CachePath ); if( img == NULL ) { - if(tries == 0) + if( tries == 0 ) { /* The file doesn't exist. It's possible that the banner cache file is * missing, so try to create it. Don't do this first, for efficiency. */ @@ -216,7 +216,7 @@ struct BannerTexture: public RageTexture if( img->w > DISPLAY->GetMaxTextureSize() || img->h > DISPLAY->GetMaxTextureSize() ) { - LOG->Warn("Converted %s at runtime", GetID().filename.c_str() ); + LOG->Warn( "Converted %s at runtime", GetID().filename.c_str() ); int width = min( img->w, DISPLAY->GetMaxTextureSize() ); int height = min( img->h, DISPLAY->GetMaxTextureSize() ); RageSurfaceUtils::Zoom( img, width, height ); @@ -270,7 +270,7 @@ RageTextureID BannerCache::LoadCachedBanner( RString BannerPath ) if( BannerPath == "" ) return ID; - LOG->Trace("BannerCache::LoadCachedBanner(%s): %s", BannerPath.c_str(), ID.filename.c_str() ); + LOG->Trace( "BannerCache::LoadCachedBanner(%s): %s", BannerPath.c_str(), ID.filename.c_str() ); /* Hack: make sure Banner::Load doesn't change our return value and end up * reloading. */ @@ -297,7 +297,7 @@ RageTextureID BannerCache::LoadCachedBanner( RString BannerPath ) BannerData.GetValue( BannerPath, "Rotated", WasRotatedBanner ); if(src_width == 0 || src_height == 0) { - LOG->Warn("Couldn't load '%s'", BannerPath.c_str() ); + LOG->UserLog( "Couldn't load '%s'", BannerPath.c_str() ); return ID; } @@ -312,8 +312,8 @@ RageTextureID BannerCache::LoadCachedBanner( RString BannerPath ) if( TEXTUREMAN->IsTextureRegistered(ID) ) return ID; /* It's all set. */ - LOG->Trace("Loading banner texture %s; src %ix%i; image %ix%i", - ID.filename.c_str(), src_width, src_height, img->w, img->h ); + LOG->Trace( "Loading banner texture %s; src %ix%i; image %ix%i", + ID.filename.c_str(), src_width, src_height, img->w, img->h ); RageTexture *pTexture = new BannerTexture( ID, img, src_width, src_height ); ID.Policy = RageTextureID::TEX_VOLATILE; @@ -377,7 +377,7 @@ void BannerCache::CacheBannerInternal( RString BannerPath ) RageSurface *img = RageSurfaceUtils::LoadFile( BannerPath, error ); if( img == NULL ) { - LOG->Warn( "BannerCache::CacheBanner: Couldn't load %s: %s", BannerPath.c_str(), error.c_str() ); + LOG->UserLog( "BannerCache::CacheBanner: Couldn't load %s: %s", BannerPath.c_str(), error.c_str() ); return; } diff --git a/stepmania/src/CourseLoaderCRS.cpp b/stepmania/src/CourseLoaderCRS.cpp index 66f5f7bf41..a73ee68ad7 100644 --- a/stepmania/src/CourseLoaderCRS.cpp +++ b/stepmania/src/CourseLoaderCRS.cpp @@ -75,7 +75,7 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou const CourseDifficulty cd = StringToCourseDifficulty( sParams[1] ); if( cd == DIFFICULTY_INVALID ) { - LOG->Warn( "Course file '%s' contains an invalid #METER string: \"%s\"", + LOG->UserLog( "Course file '%s' contains an invalid #METER string: \"%s\"", sPath.c_str(), sParams[1].c_str() ); continue; } @@ -114,7 +114,8 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou if( attack.fSecsRemaining <= 0.0f) { - LOG->Warn( "Attack has nonpositive length: %s", sBits[1].c_str() ); + LOG->UserLog( "Course file \"%s\" has an attack with a nonpositive length: %s", + sPath.c_str(), sBits[1].c_str() ); attack.fSecsRemaining = 0.0f; } @@ -126,7 +127,8 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou } else { - LOG->Warn( "Unexpected value named '%s'", sBits[0].c_str() ); + LOG->UserLog( "Course file \"%s\" has an unexpected value named '%s'", + sPath.c_str(), sBits[0].c_str() ); } } @@ -166,18 +168,16 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou } else { - LOG->Warn( "Course file '%s' contains a random_within_group entry '%s' that is invalid. " - "Song should be in the format '/*'.", - sPath.c_str(), sSong.c_str() ); + LOG->UserLog( "Course file '%s' contains a random_within_group entry '%s' that is invalid. " + "Song should be in the format '/*'.", + sPath.c_str(), sSong.c_str() ); } if( !SONGMAN->DoesSongGroupExist(new_entry.songCriteria.m_sGroupName) ) { - /* XXX: We need a place to put "user warnings". This is too loud for info.txt-- - * it obscures important warnings--and regular users never look there, anyway. */ - LOG->Trace( "Course file '%s' random_within_group entry '%s' specifies a group that doesn't exist. " - "This entry will be ignored.", - sPath.c_str(), sSong.c_str() ); + LOG->UserLog( "Course file '%s' random_within_group entry '%s' specifies a group that doesn't exist. " + "This entry will be ignored.", + sPath.c_str(), sSong.c_str() ); continue; // skip this #SONG } } @@ -200,11 +200,9 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou if( new_entry.pSong == NULL ) { - /* XXX: We need a place to put "user warnings". This is too loud for info.txt-- - * it obscures important warnings--and regular users never look there, anyway. */ - LOG->Trace( "Course file '%s' contains a fixed song entry '%s' that does not exist. " - "This entry will be ignored.", - sPath.c_str(), sSong.c_str()); + LOG->UserLog( "Course file '%s' contains a fixed song entry '%s' that does not exist. " + "This entry will be ignored.", + sPath.c_str(), sSong.c_str()); continue; // skip this #SONG } } @@ -217,8 +215,8 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou new_entry.stepsCriteria.m_iHighMeter = new_entry.stepsCriteria.m_iLowMeter; else if( retval != 2 ) { - LOG->Warn( "Course file '%s' contains an invalid difficulty setting: \"%s\", 3..6 used instead", - sPath.c_str(), sParams[2].c_str() ); + LOG->UserLog( "Course file '%s' contains an invalid difficulty setting: \"%s\", 3..6 used instead", + sPath.c_str(), sParams[2].c_str() ); new_entry.stepsCriteria.m_iLowMeter = 3; new_entry.stepsCriteria.m_iHighMeter = 6; } @@ -273,7 +271,7 @@ bool CourseLoaderCRS::LoadFromMsd( const RString &sPath, const MsdFile &msd, Cou } else { - LOG->Warn( "Unexpected value named '%s'", sValueName.c_str() ); + LOG->UserLog( "Unexpected value named '%s'", sValueName.c_str() ); } } static TitleSubst tsub("Courses"); @@ -344,7 +342,7 @@ bool CourseLoaderCRS::LoadFromCRSFile( const RString &_sPath, Course &out ) if( !msd.ReadFile(sPath) ) { - LOG->Trace( "Error opening CRS file '%s': %s.", sPath.c_str(), msd.GetError().c_str() ); + LOG->UserLog( "Error opening CRS file '%s': %s.", sPath.c_str(), msd.GetError().c_str() ); return false; } @@ -373,14 +371,14 @@ bool CourseLoaderCRS::LoadEditFromFile( const RString &sEditFilePath, ProfileSlo int iBytes = FILEMAN->GetFileSizeInBytes( sEditFilePath ); if( iBytes > MAX_EDIT_COURSE_SIZE_BYTES ) { - LOG->Warn( "The edit '%s' is unreasonably large. It won't be loaded.", sEditFilePath.c_str() ); + LOG->UserLog( "The edit '%s' is unreasonably large. It won't be loaded.", sEditFilePath.c_str() ); return false; } MsdFile msd; if( !msd.ReadFile( sEditFilePath ) ) { - LOG->Warn( "Error opening edit file \"%s\": %s", sEditFilePath.c_str(), msd.GetError().c_str() ); + LOG->UserLog( "Error opening edit file \"%s\": %s", sEditFilePath.c_str(), msd.GetError().c_str() ); return false; } Course *pCourse = new Course; diff --git a/stepmania/src/CourseWriterCRS.cpp b/stepmania/src/CourseWriterCRS.cpp index fd9df59a2d..d7c0c8ba4c 100644 --- a/stepmania/src/CourseWriterCRS.cpp +++ b/stepmania/src/CourseWriterCRS.cpp @@ -13,7 +13,7 @@ bool CourseWriterCRS::Write( const Course &course, const RString &sPath, bool bS RageFile f; if( !f.Open( sPath, RageFile::WRITE ) ) { - LOG->Warn( "Could not write course file '%s': %s", sPath.c_str(), f.GetError().c_str() ); + LOG->UserLog( "Could not write course file '%s': %s", sPath.c_str(), f.GetError().c_str() ); return false; } diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index 0f19de5da4..82804821aa 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -219,7 +219,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS if( tn.type == TapNote::hold_head && tn.iDuration == MAX_NOTE_ROW ) { int iRow = begin->first; - LOG->Warn( "Unmatched 2 at beat %f", NoteRowToBeat(iRow) ); + LOG->UserLog( "Unmatched 2 at beat %f", NoteRowToBeat(iRow) ); out.RemoveTapNote( t, begin ); } diff --git a/stepmania/src/NotesLoaderBMS.cpp b/stepmania/src/NotesLoaderBMS.cpp index eacd1ed45e..16f65839fe 100644 --- a/stepmania/src/NotesLoaderBMS.cpp +++ b/stepmania/src/NotesLoaderBMS.cpp @@ -197,7 +197,7 @@ static StepsType DetermineStepsType( int iPlayer, const NoteData &nd ) default: return STEPS_TYPE_INVALID; } default: - LOG->Warn( "Invalid #PLAYER value %d", iPlayer ); + LOG->UserLog( "Invalid #PLAYER value %d", iPlayer ); return STEPS_TYPE_INVALID; } } @@ -410,7 +410,7 @@ bool BMSLoader::LoadFromBMSFile( const RString &sPath, const NameToData_t &mapNa if( out.m_StepsType == STEPS_TYPE_INVALID ) { - LOG->Warn( "Couldn't determine note type of file '%s'", sPath.c_str() ); + LOG->UserLog( "Couldn't determine note type of file '%s'", sPath.c_str() ); return false; } @@ -429,7 +429,7 @@ bool BMSLoader::LoadFromBMSFile( const RString &sPath, const NameToData_t &mapNa } else { - LOG->Warn( "No room to shift." ); + LOG->UserLog( "In BMS file \"%s\", there is no room to shift the autokeysound tracks.", sPath.c_str() ); } } } @@ -555,13 +555,17 @@ bool BMSLoader::ReadBMSFile( const RString &sPath, NameToData_t &mapNameToData ) { RageFile file; if( !file.Open(sPath) ) - RageException::Throw( "Failed to open \"%s\" for reading: %s", sPath.c_str(), file.GetError().c_str() ); + { + LOG->UserLog( "Failed to open \"%s\" for reading: %s", sPath.c_str(), file.GetError().c_str() ); + return false; + } + while( !file.AtEOF() ) { RString line; if( file.GetLine(line) == -1 ) { - LOG->Warn( "Error reading \"%s\": %s", sPath.c_str(), file.GetError().c_str() ); + LOG->UserLog( "Error reading \"%s\": %s", sPath.c_str(), file.GetError().c_str() ); return false; } @@ -648,7 +652,8 @@ void BMSLoader::ReadGlobalTags( const NameToData_t &mapNameToData, Song &out ) } else { - LOG->Trace( "Invalid BPM change at beat %f, BPM %f.", NoteRowToBeat(0), fBPM ); + LOG->UserLog( "In BMS file \"%s\", there is an invalid BPM change at beat %f, BPM %f.", + out.GetSongFilePath().c_str(), NoteRowToBeat(0), fBPM ); } } @@ -682,8 +687,8 @@ void BMSLoader::ReadGlobalTags( const NameToData_t &mapNameToData, Song &out ) } } if( !IsAFile(out.GetSongDir()+sData) ) - LOG->Trace( "Song \"%s\" references key \"%s\" that can't be found", - m_sDir.c_str(), sData.c_str() ); + LOG->UserLog( "Song \"%s\" references key \"%s\" that can't be found", + m_sDir.c_str(), sData.c_str() ); sWavID.MakeUpper(); // HACK: undo the MakeLower() out.m_vsKeysoundFile.push_back( sData ); @@ -730,8 +735,8 @@ void BMSLoader::ReadGlobalTags( const NameToData_t &mapNameToData, Song &out ) } else { - // This is too loud for warn. - LOG->Trace( "Invalid BPM change at beat %f, BPM %d.", fBeat, iVal ); + LOG->UserLog( "In BMS file \"%s\", there is an invalid BPM change at beat %f, BPM %d.", + out.GetSongFilePath().c_str(), fBeat, iVal ); } break; @@ -751,12 +756,13 @@ void BMSLoader::ReadGlobalTags( const NameToData_t &mapNameToData, Song &out ) } else { - LOG->Trace( "Invalid BPM change at beat %f, BPM %f", fBeat, fBPM ); + LOG->UserLog( "In BMS file \"%s\", there is an invalid BPM change at beat %f, BPM %f", + out.GetSongFilePath().c_str(), fBeat, fBPM ); } } else { - LOG->Warn( "Couldn't find tag '%s' in '%s'.", sTagToLookFor.c_str(), m_sDir.c_str() ); + LOG->UserLog( "Couldn't find tag '%s' in '%s'.", sTagToLookFor.c_str(), m_sDir.c_str() ); } break; } @@ -777,7 +783,7 @@ void BMSLoader::ReadGlobalTags( const NameToData_t &mapNameToData, Song &out ) } else { - LOG->Warn( "Couldn't find tag '%s' in '%s'.", sTagToLookFor.c_str(), m_sDir.c_str() ); + LOG->UserLog( "Couldn't find tag '%s' in '%s'.", sTagToLookFor.c_str(), m_sDir.c_str() ); } break; } @@ -807,12 +813,13 @@ void BMSLoader::ReadGlobalTags( const NameToData_t &mapNameToData, Song &out ) } else { - LOG->Trace( "Invalid BPM change at beat %f, BPM %f.", NoteRowToBeat(iStepIndex), fBPM ); + LOG->UserLog( "In BMS file \"%s\", there is an invalid BPM change at beat %f, BPM %f.", + out.GetSongFilePath().c_str(), NoteRowToBeat(iStepIndex), fBPM ); } } else { - LOG->Warn( "Couldn't find tag '%s' in '%s'.", sTagToLookFor.c_str(), m_sDir.c_str() ); + LOG->UserLog( "Couldn't find tag '%s' in '%s'.", sTagToLookFor.c_str(), m_sDir.c_str() ); } break; @@ -942,7 +949,7 @@ bool BMSLoader::LoadFromDir( const RString &sDir, Song &out ) { // All bets are off; the titles don't match at all. // At this rate we're lucky if we even get the title right. - LOG->Warn("BMS files in %s have inconsistent titles", sDir.c_str() ); + LOG->UserLog( "BMS files in %s have inconsistent titles", sDir.c_str() ); } /* Create a Steps for each. */ diff --git a/stepmania/src/NotesLoaderDWI.cpp b/stepmania/src/NotesLoaderDWI.cpp index e4425002fb..a20597d925 100644 --- a/stepmania/src/NotesLoaderDWI.cpp +++ b/stepmania/src/NotesLoaderDWI.cpp @@ -60,7 +60,7 @@ void DWILoader::DWIcharToNote( char c, GameController i, int ¬e1Out, int ¬ case 'L': note1Out = DANCE_NOTE_PAD1_UPRIGHT; note2Out = DANCE_NOTE_PAD1_RIGHT; break; case 'M': note1Out = DANCE_NOTE_PAD1_UPLEFT; note2Out = DANCE_NOTE_PAD1_UPRIGHT; break; default: - LOG->Warn( "Encountered invalid DWI note character '%c' in '%s'", c, m_sLoadingFile.c_str() ); + LOG->UserLog( "Encountered invalid DWI note character '%c' in '%s'", c, m_sLoadingFile.c_str() ); note1Out = DANCE_NOTE_NONE; note2Out = DANCE_NOTE_NONE; break; } @@ -234,7 +234,7 @@ bool DWILoader::LoadFromDWITokens( { if( c == '!' ) { - LOG->Warn( "Unexpected character in '%s': '!'", m_sLoadingFile.c_str() ); + LOG->UserLog( "Unexpected character in '%s': '!'", m_sLoadingFile.c_str() ); continue; } @@ -316,10 +316,8 @@ bool DWILoader::LoadFromDWITokens( if( !bFound ) { /* The hold was never closed. */ - LOG->Warn( "File \"%s\":\"%s\" failed to close a hold note on track %i", - m_sLoadingFile.c_str(), - sDescription.c_str(), - t ); + LOG->UserLog( "File \"%s\":\"%s\" failed to close a hold note on track %i", + m_sLoadingFile.c_str(), sDescription.c_str(), t ); newNoteData.SetTapNote( t, iHeadRow, TAP_EMPTY ); } @@ -366,7 +364,10 @@ bool DWILoader::LoadFromDWIFile( const RString &sPath, Song &out ) MsdFile msd; if( !msd.ReadFile( sPath ) ) - RageException::Throw( "Error opening file \"%s\": %s", sPath.c_str(), msd.GetError().c_str() ); + { + LOG->UserLog( "Error opening file \"%s\": %s", sPath.c_str(), msd.GetError().c_str() ); + return false; + } for( unsigned i=0; iWarn("Got \"%s\" tag with no parameters in '%s'", sValueName.c_str(), m_sLoadingFile.c_str() ); + LOG->UserLog( "Got \"%s\" tag with no parameters in '%s'", sValueName.c_str(), m_sLoadingFile.c_str() ); continue; } @@ -410,7 +411,8 @@ bool DWILoader::LoadFromDWIFile( const RString &sPath, Song &out ) if( fBPM > 0.0f ) out.AddBPMSegment( BPMSegment(0, fBPM) ); else - LOG->Trace( "Invalid BPM change at beat %f, BPM %f.", NoteRowToBeat(0), fBPM ); + LOG->UserLog( "Invalid BPM change at beat %f, BPM %f in \"%s\".", + NoteRowToBeat(0), fBPM, sPath.c_str() ); } else if( 0==stricmp(sValueName,"DISPLAYBPM") ) { @@ -457,7 +459,7 @@ bool DWILoader::LoadFromDWIFile( const RString &sPath, Song &out ) split( arrayFreezeExpressions[f], "=", arrayFreezeValues ); if( arrayFreezeValues.size() != 2 ) { - LOG->Warn( "Invalid FREEZE in '%s': '%s'", m_sLoadingFile.c_str(), arrayFreezeExpressions[f].c_str() ); + LOG->UserLog( "Invalid FREEZE in '%s': '%s'", m_sLoadingFile.c_str(), arrayFreezeExpressions[f].c_str() ); continue; } int iFreezeRow = BeatToNoteRow( StringToFloat(arrayFreezeValues[0]) / 4.0f ); @@ -479,7 +481,7 @@ bool DWILoader::LoadFromDWIFile( const RString &sPath, Song &out ) split( arrayBPMChangeExpressions[b], "=", arrayBPMChangeValues ); if( arrayBPMChangeValues.size() != 2 ) { - LOG->Warn( "Invalid CHANGEBPM in '%s': '%s'", m_sLoadingFile.c_str(), arrayBPMChangeExpressions[b].c_str() ); + LOG->UserLog( "Invalid CHANGEBPM in '%s': '%s'", m_sLoadingFile.c_str(), arrayBPMChangeExpressions[b].c_str() ); continue; } @@ -492,7 +494,8 @@ bool DWILoader::LoadFromDWIFile( const RString &sPath, Song &out ) } else { - LOG->Trace( "Invalid BPM change at beat %f, BPM %f.", NoteRowToBeat(iStartIndex), fBPM ); + LOG->UserLog( "Invalid BPM change at beat %f, BPM %f in \"%s\".", + NoteRowToBeat(iStartIndex), fBPM, m_sLoadingFile.c_str() ); } } } @@ -561,7 +564,10 @@ bool DWILoader::LoadFromDir( const RString &sPath, Song &out ) GetApplicableFiles( sPath, aFileNames ); if( aFileNames.size() > 1 ) - RageException::Throw( "There is more than one DWI file in '%s'. There should be only one!", sPath.c_str() ); + { + LOG->UserLog( "There is more than one DWI file in '%s'. There should be only one!", sPath.c_str() ); + return false; + } /* We should have exactly one; if we had none, we shouldn't have been * called to begin with. */ diff --git a/stepmania/src/NotesLoaderKSF.cpp b/stepmania/src/NotesLoaderKSF.cpp index c055b32a92..443e198013 100644 --- a/stepmania/src/NotesLoaderKSF.cpp +++ b/stepmania/src/NotesLoaderKSF.cpp @@ -68,7 +68,10 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s MsdFile msd; if( !msd.ReadFile( sPath ) ) - RageException::Throw( "Error opening file '%s'.", sPath.c_str() ); + { + LOG->UserLog( "Error opening file '%s'.", sPath.c_str() ); + return false; + } m_iTickCount = -1; // this is the value we read for TICKCOUNT m_vNoteRows.clear(); //Start from a clean slate. @@ -84,8 +87,7 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s m_iTickCount = atoi( sParams[1] ); if( m_iTickCount <= 0 ) { - // XXX need a place for user warnings. - LOG->Warn( "Invalid tick count: %d", m_iTickCount ); + LOG->UserLog( "KSF file \"%s\" has an invalid tick count: %d", sPath.c_str(), m_iTickCount ); return false; } } @@ -104,7 +106,7 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s if( m_iTickCount == -1 ) { m_iTickCount = 2; - LOG->Warn( "\"%s\": TICKCOUNT not found; defaulting to %i", sPath.c_str(), m_iTickCount ); + LOG->UserLog( "\"%s\": TICKCOUNT not found; defaulting to %i", sPath.c_str(), m_iTickCount ); } NoteData notedata; // read it into here @@ -196,10 +198,10 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s if( sRowString.size() != 13 ) { - if (m_bKIUCompliant) + if( m_bKIUCompliant ) { - LOG->Warn("File %s had illegal syntax (\"%s\") which can't be in KIU complient files.", - sPath.c_str(), sRowString.c_str()); + LOG->UserLog( "File \"%s\" had illegal syntax (\"%s\") which can't be in KIU complient files.", + sPath.c_str(), sRowString.c_str() ); return false; } if( BeginsWith(sRowString, "|B") || BeginsWith(sRowString, "|D") ) @@ -216,8 +218,8 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s } else { - LOG->Warn("File %s had a RowString with an improper length (\"%s\"); corrupt notes ignored", - sPath.c_str(), sRowString.c_str()); + LOG->UserLog( "File %s had a RowString with an improper length (\"%s\"); corrupt notes ignored", + sPath.c_str(), sRowString.c_str() ); return false; } } @@ -227,7 +229,7 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s sRowString.erase( 0, 2 ); // Update TICKCOUNT for Direct Move files. - if (m_bTickChangeNeeded) + if( m_bTickChangeNeeded ) { m_iTickCount = newTick; m_bTickChangeNeeded = false; @@ -262,8 +264,8 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s case '0': tap = TAP_EMPTY; break; case '1': tap = TAP_ORIGINAL_TAP; break; default: - LOG->Warn( "File %s had an invalid row (\"%s\"); corrupt notes ignored", - sPath.c_str(), sRowString.c_str() ); + LOG->UserLog( "File %s had an invalid row (\"%s\"); corrupt notes ignored", + sPath.c_str(), sRowString.c_str() ); return false; } @@ -335,7 +337,10 @@ bool KSFLoader::LoadGlobalData( const RString &sPath, Song &out ) { MsdFile msd; if( !msd.ReadFile( sPath ) ) - RageException::Throw( "Error opening file \"%s\": %s", sPath.c_str(), msd.GetError().c_str() ); + { + LOG->UserLog( "Error opening file \"%s\": %s", sPath.c_str(), msd.GetError().c_str() ); + return false; + } float SMGap1 = 0, SMGap2 = 0, BPM1 = -1, BPMPos2 = -1, BPM2 = -1, BPMPos3 = -1, BPM3 = -1; m_iTickCount = -1; @@ -413,21 +418,24 @@ bool KSFLoader::LoadGlobalData( const RString &sPath, Song &out ) continue; } else - LOG->Trace( "Unexpected value named '%s'", sValueName.c_str() ); + { + LOG->UserLog( "In KSF file \"%s\", there was an unexpected value named '%s'", + sPath.c_str(), sValueName.c_str() ); + } } /* BPM Change checks are done here. If m_bKIUCompliant, it's short and sweet. * Otherwise, the whole file has to be processed. Right now, this is only * called once, for the initial file (often the Crazy steps). Hopefully that * will end up changing soon. */ - if (m_bKIUCompliant) + if( m_bKIUCompliant ) { if( BPM2 > 0 && BPMPos2 > 0 ) { const float BeatsPerSecond = BPM1 / 60.0f; const float beat = (BPMPos2 + SMGap1) * BeatsPerSecond; LOG->Trace( "BPM %f, BPS %f, BPMPos2 %f, beat %f", - BPM1, BeatsPerSecond, BPMPos2, beat ); + BPM1, BeatsPerSecond, BPMPos2, beat ); out.AddBPMSegment( BPMSegment(BeatToNoteRow(beat), BPM2) ); } @@ -495,27 +503,27 @@ bool KSFLoader::LoadGlobalData( const RString &sPath, Song &out ) else { /* Quit while we're ahead if any bad syntax is spotted. */ - LOG->Warn("File %s has a RowString which matches no known syntax rules (\"%s\"); bad file", - sPath.c_str(), NoteRowString.c_str()); + LOG->UserLog( "File %s has a RowString which matches no known syntax rules (\"%s\"); bad file", + sPath.c_str(), NoteRowString.c_str() ); return false; } } - if (m_bTickChangeNeeded) + if( m_bTickChangeNeeded ) { m_iTickCount = tickToChange; m_bTickChangeNeeded = false; } - if (m_bBPMChangeNeeded) + if( m_bBPMChangeNeeded ) { - LOG->Trace( "Adding tempo change of %f BPM at beat %f", speedToChange, m_fCurBeat); - out.AddBPMSegment(BPMSegment(BeatToNoteRow(m_fCurBeat),speedToChange)); + LOG->Trace( "Adding tempo change of %f BPM at beat %f", speedToChange, m_fCurBeat ); + out.AddBPMSegment( BPMSegment(BeatToNoteRow(m_fCurBeat), speedToChange) ); m_bBPMChangeNeeded = false; } - if (m_bBPMStopNeeded) + if( m_bBPMStopNeeded ) { - LOG->Trace( "Adding tempo freeze of %f seconds at beat %f", timeToStop, m_fCurBeat); - out.AddStopSegment(StopSegment(BeatToNoteRow(m_fCurBeat),timeToStop)); + LOG->Trace( "Adding tempo freeze of %f seconds at beat %f", timeToStop, m_fCurBeat ); + out.AddStopSegment( StopSegment(BeatToNoteRow(m_fCurBeat),timeToStop) ); m_bBPMStopNeeded = false; } m_fCurBeat += 1.0f / m_iTickCount; @@ -552,7 +560,10 @@ bool KSFLoader::LoadFromDir( const RString &sDir, Song &out ) /* We shouldn't have been called to begin with if there were no KSFs. */ if( arrayKSFFileNames.empty() ) - RageException::Throw( "Couldn't find any KSF files in '%s'", sDir.c_str() ); + { + LOG->UserLog( "Couldn't find any KSF files in '%s'", sDir.c_str() ); + return false; + } /* If only the first file is read, it will cause problems for other simfiles with * different BPM changes and tickcounts. This command will probably have to be diff --git a/stepmania/src/NotesLoaderSM.cpp b/stepmania/src/NotesLoaderSM.cpp index 3a814eda4b..4f2093398d 100644 --- a/stepmania/src/NotesLoaderSM.cpp +++ b/stepmania/src/NotesLoaderSM.cpp @@ -73,7 +73,7 @@ bool SMLoader::LoadTimingFromFile( const RString &fn, TimingData &out ) MsdFile msd; if( !msd.ReadFile( fn ) ) { - LOG->Warn( "Couldn't load %s, \"%s\"", fn.c_str(), msd.GetError().c_str() ); + LOG->UserLog( "Couldn't load %s, \"%s\"", fn.c_str(), msd.GetError().c_str() ); return false; } @@ -107,12 +107,11 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) { vector arrayFreezeValues; split( arrayFreezeExpressions[f], "=", arrayFreezeValues ); - /* XXX: Once we have a way to display warnings that the user actually - * cares about (unlike most warnings), this should be one of them. */ if( arrayFreezeValues.size() != 2 ) { - LOG->Warn( "Invalid #%s value \"%s\" (must have exactly one '='), ignored", - sValueName.c_str(), arrayFreezeExpressions[f].c_str() ); + // XXX: Hard to tell which file caused this. + LOG->UserLog( "Invalid #%s value \"%s\" (must have exactly one '='), ignored", + sValueName.c_str(), arrayFreezeExpressions[f].c_str() ); continue; } @@ -136,12 +135,11 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) { vector arrayBPMChangeValues; split( arrayBPMChangeExpressions[b], "=", arrayBPMChangeValues ); - /* XXX: Once we have a way to display warnings that the user actually - * cares about (unlike most warnings), this should be one of them. */ - if(arrayBPMChangeValues.size() != 2) + // XXX: Hard to tell which file caused this. + if( arrayBPMChangeValues.size() != 2 ) { - LOG->Warn( "Invalid #%s value \"%s\" (must have exactly one '='), ignored", - sValueName.c_str(), arrayBPMChangeExpressions[b].c_str() ); + LOG->UserLog( "Invalid #%s value \"%s\" (must have exactly one '='), ignored", + sValueName.c_str(), arrayBPMChangeExpressions[b].c_str() ); continue; } @@ -151,7 +149,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) if( fNewBPM > 0.0f ) out.AddBPMSegment( BPMSegment(BeatToNoteRow(fBeat), fNewBPM) ); else - LOG->Trace( "Invalid BPM change at beat %f, BPM %f.", fBeat, fNewBPM ); + LOG->UserLog( "Invalid BPM change at beat %f, BPM %f.", fBeat, fNewBPM ); } } } @@ -230,7 +228,7 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out ) MsdFile msd; if( !msd.ReadFile( sPath ) ) { - LOG->Warn( "Error opening file \"%s\": %s", sPath.c_str(), msd.GetError().c_str() ); + LOG->UserLog( "Error opening file \"%s\": %s", sPath.c_str(), msd.GetError().c_str() ); return false; } @@ -359,7 +357,7 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out ) else if(!stricmp(sParams[1],"ROULETTE")) out.m_SelectionDisplay = out.SHOW_ROULETTE; else - LOG->Warn( "The song file '%s' has an unknown #SELECTABLE value, '%s'; ignored.", sPath.c_str(), sParams[1].c_str()); + LOG->UserLog( "The song file '%s' has an unknown #SELECTABLE value, '%s'; ignored.", sPath.c_str(), sParams[1].c_str()); } else if( sValueName.Left(strlen("BGCHANGES"))=="BGCHANGES" || sValueName=="ANIMATIONS" ) @@ -371,7 +369,7 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out ) bool bValid = iLayer>=0 && iLayerWarn( "The song file '%s' has a BGCHANGES tag '%s' that is out of range.", sPath.c_str(), sValueName.c_str() ); + LOG->UserLog( "The song file '%s' has a BGCHANGES tag '%s' that is out of range.", sPath.c_str(), sValueName.c_str() ); } else { @@ -409,7 +407,7 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out ) { if( iNumParams < 7 ) { - LOG->Trace( "The song file '%s' is has %d fields in a #NOTES tag, but should have at least %d.", sPath.c_str(), iNumParams, 7 ); + LOG->UserLog( "The song file '%s' is has %d fields in a #NOTES tag, but should have at least %d.", sPath.c_str(), iNumParams, 7 ); continue; } @@ -425,11 +423,10 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out ) out.AddSteps( pNewNotes ); } - else if( sValueName=="OFFSET" || sValueName=="BPMS" || - sValueName=="STOPS" || sValueName=="FREEZES" ) + else if( sValueName=="OFFSET" || sValueName=="BPMS" || sValueName=="STOPS" || sValueName=="FREEZES" ) ; else - LOG->Trace( "Unexpected value named '%s'", sValueName.c_str() ); + LOG->UserLog( "The song file \"%s\" has an unexpected value named '%s'", sPath.c_str(), sValueName.c_str() ); } return true; @@ -443,7 +440,7 @@ bool SMLoader::LoadFromDir( const RString &sPath, Song &out ) if( aFileNames.size() > 1 ) { - LOG->Warn( "There is more than one SM file in '%s'. There should be only one!", sPath.c_str() ); + LOG->UserLog( "There is more than one SM file in '%s'. There should be only one!", sPath.c_str() ); return false; } @@ -461,14 +458,14 @@ bool SMLoader::LoadEditFromFile( RString sEditFilePath, ProfileSlot slot, bool b int iBytes = FILEMAN->GetFileSizeInBytes( sEditFilePath ); if( iBytes > MAX_EDIT_STEPS_SIZE_BYTES ) { - LOG->Warn( "The edit '%s' is unreasonably large. It won't be loaded.", sEditFilePath.c_str() ); + LOG->UserLog( "The edit '%s' is unreasonably large. It won't be loaded.", sEditFilePath.c_str() ); return false; } MsdFile msd; if( !msd.ReadFile( sEditFilePath ) ) { - LOG->Warn( "Error opening edit file \"%s\": %s", sEditFilePath.c_str(), msd.GetError().c_str() ); + LOG->UserLog( "Error opening edit file \"%s\": %s", sEditFilePath.c_str(), msd.GetError().c_str() ); return false; } @@ -498,7 +495,7 @@ bool SMLoader::LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath { if( pSong ) { - LOG->Warn( "The edit file '%s' has more than one #SONG tag.", sEditFilePath.c_str() ); + LOG->UserLog( "The edit file '%s' has more than one #SONG tag.", sEditFilePath.c_str() ); return false; } @@ -508,13 +505,13 @@ bool SMLoader::LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath pSong = SONGMAN->FindSong( sSongFullTitle ); if( pSong == NULL ) { - LOG->Warn( "The edit file '%s' required a song '%s' that isn't present.", sEditFilePath.c_str(), sSongFullTitle.c_str() ); + LOG->UserLog( "The edit file '%s' required a song '%s' that isn't present.", sEditFilePath.c_str(), sSongFullTitle.c_str() ); return false; } if( pSong->GetNumStepsLoadedFromProfile(slot) >= MAX_EDITS_PER_SONG_PER_PROFILE ) { - LOG->Warn( "The song '%s' already has the maximum number of edits allowed for ProfileSlotP%d.", sSongFullTitle.c_str(), slot+1 ); + LOG->UserLog( "The song '%s' already has the maximum number of edits allowed for ProfileSlotP%d.", sSongFullTitle.c_str(), slot+1 ); return false; } } @@ -523,13 +520,13 @@ bool SMLoader::LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath { if( pSong == NULL ) { - LOG->Warn( "The edit file '%s' has doesn't have a #SONG tag preceeding the first #NOTES tag.", sEditFilePath.c_str() ); + LOG->UserLog( "The edit file '%s' has doesn't have a #SONG tag preceeding the first #NOTES tag.", sEditFilePath.c_str() ); return false; } if( iNumParams < 7 ) { - LOG->Trace( "The song file '%s' is has %d fields in a #NOTES tag, but should have at least %d.", sEditFilePath.c_str(), iNumParams, 7 ); + LOG->UserLog( "The edit file '%s' is has %d fields in a #NOTES tag, but should have at least %d.", sEditFilePath.c_str(), iNumParams, 7 ); continue; } @@ -547,7 +544,7 @@ bool SMLoader::LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath if( pSong->IsEditAlreadyLoaded(pNewNotes) ) { - LOG->Warn( "The edit file '%s' is a duplicate of another edit that was already loaded.", sEditFilePath.c_str() ); + LOG->UserLog( "The edit file '%s' is a duplicate of another edit that was already loaded.", sEditFilePath.c_str() ); SAFE_DELETE( pNewNotes ); return false; } @@ -557,7 +554,7 @@ bool SMLoader::LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath } else { - LOG->Trace( "Unexpected value named '%s'", sValueName.c_str() ); + LOG->UserLog( "The edit file \"%s\" has an unexpected value named '%s'", sEditFilePath.c_str(), sValueName.c_str() ); } } diff --git a/stepmania/src/NotesWriterDWI.cpp b/stepmania/src/NotesWriterDWI.cpp index 0cf3c4abd6..2cde639225 100644 --- a/stepmania/src/NotesWriterDWI.cpp +++ b/stepmania/src/NotesWriterDWI.cpp @@ -347,7 +347,10 @@ bool NotesWriterDWI::Write( RString sPath, const Song &out ) { RageFile f; if( !f.Open( sPath, RageFile::WRITE ) ) - RageException::Throw( "Error opening song file \"%s\" for writing: \"%s\"", sPath.c_str(), f.GetError().c_str() ); + { + LOG->UserLog( "Error opening song file \"%s\" for writing: \"%s\"", sPath.c_str(), f.GetError().c_str() ); + return false; + } /* Write transliterations, if we have them, since DWI doesn't support UTF-8. */ f.PutLine( ssprintf("#TITLE:%s;", out.GetTranslitFullTitle().c_str()) ); diff --git a/stepmania/src/NotesWriterSM.cpp b/stepmania/src/NotesWriterSM.cpp index f76c227d14..d0162eba89 100644 --- a/stepmania/src/NotesWriterSM.cpp +++ b/stepmania/src/NotesWriterSM.cpp @@ -209,7 +209,7 @@ bool NotesWriterSM::Write( RString sPath, const Song &out, bool bSavingCache ) RageFile f; if( !f.Open( sPath, flags ) ) { - LOG->Warn( "Error opening song file '%s' for writing: %s", sPath.c_str(), f.GetError().c_str() ); + LOG->UserLog( "Error opening song file '%s' for writing: %s", sPath.c_str(), f.GetError().c_str() ); return false; } diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 41c8880ecc..bf6c97f03a 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -245,8 +245,8 @@ void PlayerOptions::FromString( const RString &sOptions, bool bWarnOnInvalid ) { if( bWarnOnInvalid ) { - LOG->Warn( "Invalid player options '%s'; did you mean '*%d'?", - s->c_str(), atoi(*s) ); + LOG->UserLog( "Invalid player options '%s'; did you mean '*%d'?", + s->c_str(), atoi(*s) ); } // XXX We know what they want, is there any reason not to handle it? speed = StringToFloat( *s ); @@ -361,7 +361,7 @@ void PlayerOptions::FromString( const RString &sOptions, bool bWarnOnInvalid ) if( bWarnOnInvalid ) { RString sWarning = ssprintf( "The options string '%s' contains an invalid mod name '%s'", sOptions.c_str(), sBit.c_str() ); - LOG->Warn( "%s", sWarning.c_str() ); + LOG->UserLog( "%s", sWarning.c_str() ); Dialog::OK( sWarning, "INVALID_PLAYER_OPTION_WARNING" ); } } diff --git a/stepmania/src/RageSoundReader_FileReader.cpp b/stepmania/src/RageSoundReader_FileReader.cpp index 08f5f2c37f..8e144e3ad4 100644 --- a/stepmania/src/RageSoundReader_FileReader.cpp +++ b/stepmania/src/RageSoundReader_FileReader.cpp @@ -119,7 +119,7 @@ SoundReader *SoundReader_FileReader::OpenFile( RString filename, RString &error SoundReader_FileReader *NewSample = TryOpenFile( filename, error, *it, bKeepTrying ); if( NewSample ) { - LOG->Warn("File \"%s\" is really %s", filename.c_str(), it->c_str()); + LOG->UserLog( "File \"%s\" is really %s", filename.c_str(), it->c_str() ); return NewSample; } } diff --git a/stepmania/src/RageSurface_Load.cpp b/stepmania/src/RageSurface_Load.cpp index 0dd3494f72..1bc2d0bfd9 100644 --- a/stepmania/src/RageSurface_Load.cpp +++ b/stepmania/src/RageSurface_Load.cpp @@ -105,10 +105,10 @@ RageSurface *RageSurfaceUtils::LoadFile( const RString &sPath, RString &error, b for( set::iterator it = FileTypes.begin(); bKeepTrying && it != FileTypes.end(); ++it ) { - RageSurface *ret = TryOpenFile( sPath, bHeaderOnly, error, *it, bKeepTrying ); + RageSurface *ret = TryOpenFile( sPath, bHeaderOnly, error, *it, bKeepTrying ); if( ret ) { - LOG->Warn("File \"%s\" is really %s", sPath.c_str(), it->c_str()); + LOG->UserLog( "File \"%s\" is really %s", sPath.c_str(), it->c_str() ); return ret; } } diff --git a/stepmania/src/Song.cpp b/stepmania/src/Song.cpp index 72618cc5d6..c1219e12ef 100644 --- a/stepmania/src/Song.cpp +++ b/stepmania/src/Song.cpp @@ -236,7 +236,7 @@ bool Song::LoadFromSongDir( RString sDir ) } else { - LOG->Warn( "Couldn't find any SM, DWI, BMS, or KSF files in '%s'.", sDir.c_str() ); + LOG->UserLog( "Couldn't find any SM, DWI, BMS, or KSF files in '%s'.", sDir.c_str() ); vector vs; GetDirListing( sDir + "*.mp3", vs, false, false ); @@ -245,7 +245,7 @@ bool Song::LoadFromSongDir( RString sDir ) if( !bHasMusic ) { - LOG->Warn( "No music file in this directory either. Ignoring this song directory." ); + LOG->UserLog( "No music file in this directory either. Ignoring this song directory." ); return false; } @@ -277,7 +277,7 @@ bool Song::LoadFromSongDir( RString sDir ) if( !m_bHasMusic ) { - LOG->Trace( "Song \"%s\" ignored (no music)", sDir.c_str() ); + LOG->UserLog( "Song \"%s\" ignored (no music)", sDir.c_str() ); return false; // don't load this song } @@ -349,7 +349,7 @@ void Song::TidyUpData() * (which have no music file, per se) but it's something of a hack. */ if( Sample == NULL && m_sMusicFile != "" ) { - LOG->Warn( "Error opening sound \"%s\": %s", GetMusicPath().c_str(), error.c_str() ); + LOG->UserLog( "Error opening sound \"%s\": %s", GetMusicPath().c_str(), error.c_str() ); /* Don't use this file. */ m_sMusicFile = ""; @@ -366,19 +366,19 @@ void Song::TidyUpData() } else if( m_fMusicLengthSeconds == 0 ) { - LOG->Warn( "File %s is empty?", GetMusicPath().c_str() ); + LOG->UserLog( "File \"%s\" is empty?", GetMusicPath().c_str() ); } } } else // ! HasMusic() { m_fMusicLengthSeconds = 100; // guess - LOG->Warn("Song \"%s\" has no music file; guessing at %f seconds", this->GetSongDir().c_str(), m_fMusicLengthSeconds); + LOG->UserLog( "Song \"%s\" has no music file; guessing at %f seconds", this->GetSongDir().c_str(), m_fMusicLengthSeconds ); } - if(m_fMusicLengthSeconds < 0) + if( m_fMusicLengthSeconds < 0 ) { - LOG->Warn( "File %s has negative length? (%f)", GetMusicPath().c_str(), m_fMusicLengthSeconds ); + LOG->UserLog( "File %s has negative length? (%f)", GetMusicPath().c_str(), m_fMusicLengthSeconds ); m_fMusicLengthSeconds = 0; } @@ -403,10 +403,8 @@ void Song::TidyUpData() if( m_Timing.m_BPMSegments.empty() ) { - /* XXX: Once we have a way to display warnings that the user actually - * cares about (unlike most warnings), this should be one of them. */ - LOG->Warn( "No BPM segments specified in '%s%s', default provided.", - m_sSongDir.c_str(), m_sSongFileName.c_str() ); + LOG->UserLog( "No BPM segments specified in '%s%s', default provided.", + m_sSongDir.c_str(), m_sSongFileName.c_str() ); m_Timing.AddBPMSegment( BPMSegment(0, 60) ); } @@ -529,7 +527,7 @@ void Song::TidyUpData() RageSurface *img = RageSurfaceUtils::LoadFile( sPath, error, true ); if( !img ) { - LOG->Trace( "Couldn't load '%s': %s", sPath.c_str(), error.c_str() ); + LOG->UserLog( "Couldn't load '%s': %s", sPath.c_str(), error.c_str() ); continue; } @@ -741,9 +739,10 @@ void Song::Save() if( !FileCopy( sOldPath, sNewPath ) ) { - LOG->Warn( "Backup of \"%s\" failed", sOldPath.c_str() ); + LOG->UserLog( "Backup of \"%s\" failed", sOldPath.c_str() ); /* Don't remove. */ - } else + } + else FILEMAN->Remove( sOldPath ); } }