Save and rename input bindings file

To reduce the chance of corrupting the file.
pull/3236/head
elsid 4 months ago
parent 527fa053c5
commit 6a5bc9f992
No known key found for this signature in database
GPG Key ID: 4DE04C198CBA7625

@ -1,5 +1,7 @@
#include "bindingsmanager.hpp"
#include <filesystem>
#include <MyGUI_EditBox.h>
#include <extern/oics/ICSChannelListener.h>
@ -209,13 +211,22 @@ namespace MWInput
BindingsManager::~BindingsManager()
{
const std::string newFileName = Files::pathToUnicodeString(mUserFile) + ".new";
try
{
mInputBinder->save(Files::pathToUnicodeString(mUserFile));
if (mInputBinder->save(newFileName))
{
std::filesystem::rename(Files::pathFromUnicodeString(newFileName), mUserFile);
Log(Debug::Info) << "Saved input bindings: " << mUserFile;
}
else
{
Log(Debug::Error) << "Failed to save input bindings to " << newFileName;
}
}
catch (std::exception& e)
catch (const std::exception& e)
{
Log(Debug::Error) << "Failed to save input bindings: " << e.what();
Log(Debug::Error) << "Failed to save input bindings to " << newFileName << ": " << e.what();
}
}

@ -357,14 +357,9 @@ namespace ICS
return file.substr(0, file.find_last_of("."));
}
bool InputControlSystem::save(std::string fileName)
bool InputControlSystem::save(const std::string& fileName)
{
if(fileName != "")
{
mFileName = fileName;
}
TiXmlDocument doc( mFileName.c_str() );
TiXmlDocument doc(fileName.c_str());
TiXmlDeclaration dec;
dec.Parse( "<?xml version='1.0' encoding='utf-8'?>", 0, TIXML_ENCODING_UNKNOWN );

@ -144,7 +144,7 @@ namespace ICS
void cancelDetectingBindingState();
bool detectingBindingState();
bool save(std::string fileName = "");
bool save(const std::string& fileName);
void adjustMouseRegion (Uint16 width, Uint16 height);

Loading…
Cancel
Save