アカウントサルベージの結果をチェックするモードを追加

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@780 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2014-04-09 02:59:55 +00:00
parent 5eae609069
commit 21d6a5a1a0
5 changed files with 31 additions and 11 deletions

View File

@ -34,6 +34,7 @@ nn::os::Event ActCompleter::s_BeginEvent;
nn::os::Event ActCompleter::s_EndEvent;
u32 ActCompleter::s_ApprovalId;
ActCompleter::CompleteMode ActCompleter::s_Mode;
ActCompleter::SalvageCheck ActCompleter::s_SalvageCheck;
ActCompleter::ActCompleter()
@ -49,9 +50,10 @@ nn::Result ActCompleter::GetResult()
return s_Result;
}
void ActCompleter::Start(CompleteMode mode)
void ActCompleter::Start(CompleteMode mode, SalvageCheck check)
{
s_Mode = mode;
s_SalvageCheck = check;
s_ApprovalId = 0;
if(s_Mode == ACT_COMPLETE_TRANSFER_WITH_SALVEGE)
{
@ -117,9 +119,9 @@ nn::Result ActCompleter::ExecImpl()
nn::Result result = nn::act::SalvageAccounts();
if(result.IsFailure())
{
if(nn::act::ResultRequestNotFound().Includes(result))
if(nn::act::ResultRequestNotFound().Includes(result) && s_SalvageCheck == ACT_SALVAGE_WITHOUT_CHECK)
{
//NNAが無い場合に起こるので無視
//サルベージ結果を無視するモードなので無視
}
else
{

View File

@ -29,11 +29,16 @@ public:
ACT_COMPLETE_TRANSFER_WITH_SALVEGE
};
enum SalvageCheck{
ACT_SALVAGE_WITHOUT_CHECK,
ACT_SALVAGE_WITH_CHECK
};
ActCompleter();
virtual ~ActCompleter();
static nn::Result GetResult();
static void Start(CompleteMode mode);
static void Start(CompleteMode mode, SalvageCheck check);
static bool IsFinished();
static void Finish();
@ -52,6 +57,7 @@ private:
static nn::os::Event s_EndEvent;
static u32 s_ApprovalId;
static CompleteMode s_Mode;
static SalvageCheck s_SalvageCheck;
};
} /* namespace ConsoleRestore */

View File

@ -58,6 +58,8 @@ bool s_SkipNupMode = false;
bool s_DownloadPreinstallMode = false;
// 強制プリインストール書き込みモードかどうか
bool s_ForceDownloadPreinstall = false;
// アカウントサルベージの結果を確認するかどうか
bool s_CheckAccountSalvageResult = false;
// 失敗サウンドを鳴らしたかどうか
bool s_PlayedFailSound = false;
@ -778,7 +780,7 @@ bool CheckAndReadAPSetting(common::OperationMessage& operationMessage)
if (!s_ReadSettingDone)
{
s_ReadSettingDone = true;
s_ReadSettingIsSuccess = ReadSetting(&s_NupOnlyMode, &s_GetIvsOnlyMode, &s_CheckSdOnlyMode, &s_SkipNupMode, &s_DownloadPreinstallMode);
s_ReadSettingIsSuccess = ReadSetting(&s_NupOnlyMode, &s_GetIvsOnlyMode, &s_CheckSdOnlyMode, &s_SkipNupMode, &s_DownloadPreinstallMode, &s_CheckAccountSalvageResult);
}
if (s_NupOnlyMode && s_GetIvsOnlyMode
@ -1413,7 +1415,16 @@ void ControlState(common::HardwareStateManager& manager, common::OperationMessag
COMMON_LOGGER("Complete NNA Transfer\n");
if (ImportCountryLanguageData().IsSuccess())
{
ActCompleter::Start(s_ActCompleteMode);
ActCompleter::SalvageCheck check;
if(s_CheckAccountSalvageResult)
{
check = ActCompleter::ACT_SALVAGE_WITH_CHECK;
}
else
{
check = ActCompleter::ACT_SALVAGE_WITHOUT_CHECK;
}
ActCompleter::Start(s_ActCompleteMode, check);
s_RestoreState = COMPLETE_ACT_WAIT;
}
else

View File

@ -271,7 +271,7 @@ nn::Result ExistsDeviceIdFile()
return nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON,
nn::Result::DESCRIPTION_OUT_OF_MEMORY);
}
return sdReader.ReadBufWithCmac(common::DEVICE_ID_PATHNAME, buf, bufSize, &totalSize);
}
@ -289,10 +289,10 @@ bool EqualsDeviceIdFileandDeviceId(common::HardwareStateManager& manager)
{
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(
sdReader.ReadBufWithCmac(common::DEVICE_ID_PATHNAME, buf, bufSize, &totalSize));
std::memcpy(&sdDeviceId, buf, sizeof(sdDeviceId));
return (manager.GetDeviceId() == sdDeviceId);
}
@ -1141,7 +1141,7 @@ void ReadSettingFlag(common::ConfigFileLoader* loader, const wchar_t* paramName,
}
}
bool ReadSetting(bool* nupOnly, bool* getIvs, bool* checkSd, bool* skipNup, bool* dlPreinstall)
bool ReadSetting(bool* nupOnly, bool* getIvs, bool* checkSd, bool* skipNup, bool* dlPreinstall, bool* checkSalvage)
{
nn::Result result;
bool retval = true;
@ -1448,6 +1448,7 @@ bool ReadSetting(bool* nupOnly, bool* getIvs, bool* checkSd, bool* skipNup, bool
ReadSettingFlag(&configfileLoader, L"CHECK_SD", checkSd, "CHECK SD Mode.\n");
ReadSettingFlag(&configfileLoader, L"SKIP_NUP", skipNup, "Skip NUP Mode.\n");
ReadSettingFlag(&configfileLoader, L"DL_PREINSTALL", dlPreinstall, "Download PreInstall Application Mode.\n");
ReadSettingFlag(&configfileLoader, L"CHECK_SALVAGE", checkSalvage, "Check Account Salvage Result Mode.\n");
configfileLoader.Finalize();

View File

@ -114,7 +114,7 @@ struct TimeZone
};
// ネットワーク設定ファイルを読み込む
bool ReadSetting(bool* nupOnly, bool* getIvs, bool* checkSd, bool* skipNup, bool* dlPreinstall);
bool ReadSetting(bool* nupOnly, bool* getIvs, bool* checkSd, bool* skipNup, bool* dlPreinstall, bool* checkSalvage);
// ネットワーク設定ファイルからNTPサーバの名前を取得する
// 先にReadSettingが成功している必要がある