diff --git a/trunk/ConsoleDataMigration/common/SdLogger.cpp b/trunk/ConsoleDataMigration/common/SdLogger.cpp index 8dcb7c7..5fb7068 100644 --- a/trunk/ConsoleDataMigration/common/SdLogger.cpp +++ b/trunk/ConsoleDataMigration/common/SdLogger.cpp @@ -65,6 +65,7 @@ void SdmcEjectedEventThreadFunc() } SdMountManager::ForceUnmount(); s_SdEjectedEvent.ClearSignal(); + s_SdLogger.Inactivate(); } } @@ -109,7 +110,7 @@ void SetInsertHandler(void (*func)()) s_SdInsertedEventFunc = func; } -SdLogger::SdLogger() +SdLogger::SdLogger() : m_TryActivate(false), m_Permitted(false) { } @@ -121,8 +122,14 @@ SdLogger* GetSdInstance() void SdLogger::Print(const char* fmt, ::std::va_list arg) { - nn::Result result; + Activate(); + if(!m_Permitted) + { + NN_LOG("SD Write Not Permitted\n"); + return; + } + nn::Result result; result = SdMountManager::Mount(); if (result.IsFailure()) { @@ -201,6 +208,12 @@ void SdLogger::Print(const char* fmt, ::std::va_list arg) void SdLogger::Clear() { + Activate(); + if(!m_Permitted) + { + return; + } + nn::Result result; SdMountManager::Mount(); @@ -216,6 +229,38 @@ void SdLogger::Clear() SdMountManager::Unmount(); } +void SdLogger::Inactivate() +{ + m_TryActivate = false; + m_Permitted = false; +} + +void SdLogger::Activate() +{ + if(m_TryActivate) + { + return; + } + + nn::Result result; + result = common::SdMountManager::Mount(); + + if (result.IsSuccess()) + { + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(common::AP_SETTING_PATHNAME); + if(result.IsSuccess()) + { + m_Permitted = true; + } + fis.Finalize(); + } + + common::SdMountManager::Unmount(); + m_TryActivate = true; +} + } // namespace Logger } // namespace ConsoleBackup diff --git a/trunk/ConsoleDataMigration/common/SdLogger.h b/trunk/ConsoleDataMigration/common/SdLogger.h index 8ad6d5a..2dc736f 100644 --- a/trunk/ConsoleDataMigration/common/SdLogger.h +++ b/trunk/ConsoleDataMigration/common/SdLogger.h @@ -32,9 +32,15 @@ public: void Print(const char* fmt, ::std::va_list arg); void Clear(); + void Inactivate(); private: + void Activate(); + nn::fs::FileOutputStream sd; + bool m_TryActivate; + bool m_Permitted; + NN_PADDING2; };