diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp index 1c30417..1304542 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp @@ -71,6 +71,8 @@ bool s_ReadSettingDone = false; bool s_ReadSettingSuccess = false; // NUP専用モードかどうか bool s_NupOnlyMode = false; +// NUP禁止モードかどうか +bool s_NeverNup = false; // APSettingの書式が無い警告サウンドを鳴らしたかどうか bool s_ExistAPSettingAnnotation = false; @@ -119,7 +121,7 @@ bool CheckAndReadAPSetting(::std::vector& operationMessage) if (!s_ReadSettingDone) { s_ReadSettingDone = true; - s_ReadSettingSuccess = ReadSetting(&s_NupOnlyMode); + s_ReadSettingSuccess = ReadSetting(&s_NupOnlyMode, &s_NeverNup); } if(s_NupOnlyMode) @@ -192,10 +194,12 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, // SDカードが挿入されているか? if (nn::fs::IsSdmcInserted()) { - // SDカードにアップデート完了ファイルがあるか? - if (ExistsUpdateCheckedFile()) + validApSetting = CheckAndReadAPSetting(operationMessage); + + // NUP禁止モードか、SDカードにアップデート完了ファイルがあるか? + if (s_NeverNup || ExistsUpdateCheckedFile()) { - validApSetting = CheckAndReadAPSetting(operationMessage); + // NUP専用モードなら終了処理に移る if (s_NupOnlyMode) { s_RestoreState = NUP_ONLY_WAIT_SD_EJECT; @@ -292,7 +296,7 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, } else { - if (CheckAndReadAPSetting(operationMessage)) + if (validApSetting) { // ネットワークアップデートを行う needsUpdate = true; @@ -704,6 +708,14 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, // 書き込み失敗 case FAIL: { + static bool init = true; + if(init) + { + // 状態初期化 + DeleteAllCheckFiles(); + init = false; + } + operationMessage.push_back(::std::string("Failed.")); if (!s_PlayedFailSound) { diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp index 3c7c4ca..ba3838a 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -835,7 +835,7 @@ bool UpdateNetworkSetting(nn::ac::NetworkSetting& networkSetting) return retval; } -bool ReadSetting(bool* nupOnly) +bool ReadSetting(bool* nupOnly, bool* neverNup) { nn::Result result; bool retval = true; @@ -1136,6 +1136,25 @@ bool ReadSetting(bool* nupOnly) } + { + NN_NULL_ASSERT(neverNup); + if (configfileLoader.ReadAsChar(L"NEVER_NUP") != NULL) + { + s32 num = configfileLoader.ReadAsInteger(L"NEVER_NUP"); + if (num == 1) + { + *neverNup = true; + COMMON_LOGGER("NEVER_NUP Mode.\n"); + } + else + { + + } + } + } + + // NEVER_NUPがNUP専用モードよりも優先 + if(!(*neverNup)) { NN_NULL_ASSERT(nupOnly); if (configfileLoader.ReadAsChar(L"NUP_ONLY") != NULL) @@ -1149,6 +1168,7 @@ bool ReadSetting(bool* nupOnly) } } + configfileLoader.Finalize(); // 書き込み完了しなければfalse diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h index 1775d87..759a379 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h @@ -60,7 +60,7 @@ struct TimeZone NN_PADDING3; }; -bool ReadSetting(bool* nupOnly); +bool ReadSetting(bool* nupOnly, bool* neverNup); char* GetNtpServerName(); TimeZone GetTimeZone();