From 3992801160c5add21cb536c2bb15f23b9dd4f5fc Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Fri, 20 Jan 2006 21:40:15 +0000 Subject: [PATCH] test for error when writing Preferences.ini --- stepmania/Themes/default/Languages/en.ini | 2 ++ stepmania/src/IniFile.cpp | 4 +++- stepmania/src/smpackage/ChangeGameSettings.cpp | 9 ++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/stepmania/Themes/default/Languages/en.ini b/stepmania/Themes/default/Languages/en.ini index 795b56a084..cb8eb7d784 100644 --- a/stepmania/Themes/default/Languages/en.ini +++ b/stepmania/Themes/default/Languages/en.ini @@ -1439,3 +1439,5 @@ Open the preferences file to make changes by hand.=Open the preferences file to StepMania Tools Main Menu=StepMania Tools Main Menu Troubleshooting=Troubleshooting +[ChangeGameSettings] +Error writing file '%s': %s=Error writing file '%s': %s \ No newline at end of file diff --git a/stepmania/src/IniFile.cpp b/stepmania/src/IniFile.cpp index 722c01a4d4..c3c94633bd 100644 --- a/stepmania/src/IniFile.cpp +++ b/stepmania/src/IniFile.cpp @@ -80,7 +80,9 @@ bool IniFile::WriteFile( const RString &sPath ) const return false; } - return IniFile::WriteFile( f ); + bool bSuccess = IniFile::WriteFile( f ); + f.Close(); + return bSuccess && !f.GetError().empty(); } bool IniFile::WriteFile( RageFileBasic &f ) const diff --git a/stepmania/src/smpackage/ChangeGameSettings.cpp b/stepmania/src/smpackage/ChangeGameSettings.cpp index 07d9cd64d0..6488c0b55b 100644 --- a/stepmania/src/smpackage/ChangeGameSettings.cpp +++ b/stepmania/src/smpackage/ChangeGameSettings.cpp @@ -11,6 +11,8 @@ #include "SpecialFiles.h" #include ".\changegamesettings.h" #include "archutils/Win32/DialogUtil.h" +#include "LocalizedString.h" +#include "RageUtil.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -106,6 +108,7 @@ BOOL ChangeGameSettings::OnInitDialog() // EXCEPTION: OCX Property Pages should return FALSE } +static LocalizedString ERROR_WRITING_FILE( "ChangeGameSettings", "Error writing file '%s': %s" ); void ChangeGameSettings::OnOK() { // TODO: Add extra validation here @@ -137,7 +140,11 @@ void ChangeGameSettings::OnOK() ini.SetValue( "Options", "ShowLogWindow", BST_CHECKED == IsDlgButtonChecked(IDC_CHECK_SHOW_LOG_WINDOW) ); - ini.WriteFile( SpecialFiles::PREFERENCES_INI_PATH ); + if( !ini.WriteFile(SpecialFiles::PREFERENCES_INI_PATH) ) + { + RString sError = ssprintf( ERROR_WRITING_FILE.GetValue(), SpecialFiles::PREFERENCES_INI_PATH.c_str(), ini.GetError().c_str() ); + AfxMessageBox( sError ); + } CDialog::OnOK(); }