mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
r629を巻き戻し。サイズチェック時はエラーをスキップできないので。
NN_UTIL_RETURN_IF_FAILEDをCOMMON_LOGGER_RETURN_IF_FAILEDに置換 CmacAdderが出力先ディレクトリ初期化時にエラーで止まっていたので修正 git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@631 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
4111408dcb
commit
7320c776ea
@ -234,10 +234,8 @@ nn::Result NandSavedataChecker::CleanUp(bool erase)
|
|||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|
||||||
result = m_pSharedExtSaveChecker->CalculateFileSize();
|
m_pSharedExtSaveChecker->CalculateFileSize();
|
||||||
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
m_pSysSaveChecker->CalculateFileSize();
|
||||||
result = m_pSysSaveChecker->CalculateFileSize();
|
|
||||||
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
|
||||||
|
|
||||||
result = m_pSharedExtSaveChecker->CleanUp(erase);
|
result = m_pSharedExtSaveChecker->CleanUp(erase);
|
||||||
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|||||||
@ -418,7 +418,7 @@ nn::Result ImportCountryLanguageData()
|
|||||||
SetLanguage(reinterpret_cast<common::CfgCountryLanguage*> (buf)->language);
|
SetLanguage(reinterpret_cast<common::CfgCountryLanguage*> (buf)->language);
|
||||||
}
|
}
|
||||||
|
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -539,7 +539,7 @@ nn::Result ImportMcuRtc(common::HardwareStateManager& manager)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -678,7 +678,7 @@ nn::Result ImportIvs()
|
|||||||
{
|
{
|
||||||
result = nn::fs::CTR::ImportIntegrityVerificationSeed(
|
result = nn::fs::CTR::ImportIntegrityVerificationSeed(
|
||||||
*reinterpret_cast<nn::fs::CTR::IntegrityVerificationSeed*>(dec));
|
*reinterpret_cast<nn::fs::CTR::IntegrityVerificationSeed*>(dec));
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
COMMON_LOGGER("Import SDCI.\n");
|
COMMON_LOGGER("Import SDCI.\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -703,7 +703,7 @@ nn::Result ImportIvs()
|
|||||||
}
|
}
|
||||||
nn::fs::Unmount(common::NAND_ARCHIVE_NAME);
|
nn::fs::Unmount(common::NAND_ARCHIVE_NAME);
|
||||||
}
|
}
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1725,7 +1725,7 @@ nn::Result InitializeHardwareDependentSetting()
|
|||||||
|
|
||||||
common::CfgCalData cfgCalData;
|
common::CfgCalData cfgCalData;
|
||||||
result = ImportCalData(&cfgCalData);
|
result = ImportCalData(&cfgCalData);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL),
|
||||||
&cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData));
|
&cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData));
|
||||||
@ -1778,11 +1778,11 @@ nn::Result SetupVersionAndFileList()
|
|||||||
|
|
||||||
// ファイル一覧を読み込む
|
// ファイル一覧を読み込む
|
||||||
nn::Result result = ReadFileList(&s_SdFileSize, &s_FileLists);
|
nn::Result result = ReadFileList(&s_SdFileSize, &s_FileLists);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
// バージョンデータを読み込む
|
// バージョンデータを読み込む
|
||||||
result = ReadVersionData();
|
result = ReadVersionData();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -1801,7 +1801,7 @@ nn::Result ReadFileList(SdFileSize* sdFiles, common::ImportDataList* fileList)
|
|||||||
|
|
||||||
// サイズ取得のため一時的に開く
|
// サイズ取得のため一時的に開く
|
||||||
result = file.TryInitialize(common::FILE_LIST_PATHNAME);
|
result = file.TryInitialize(common::FILE_LIST_PATHNAME);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = file.TryGetSize(&fileSize);
|
result = file.TryGetSize(&fileSize);
|
||||||
if (result.IsFailure())
|
if (result.IsFailure())
|
||||||
|
|||||||
@ -39,14 +39,14 @@ PreinstallImporter::~PreinstallImporter()
|
|||||||
nn::Result PreinstallImporter::SetupSd(bool* isAlreadyAvailable)
|
nn::Result PreinstallImporter::SetupSd(bool* isAlreadyAvailable)
|
||||||
{
|
{
|
||||||
// SDカードがインポート可能状態かどうかチェック
|
// SDカードがインポート可能状態かどうかチェック
|
||||||
NN_UTIL_RETURN_IF_FAILED(
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
|
||||||
nn::am::QueryAvailableExternalTitleDatabase(isAlreadyAvailable)
|
nn::am::QueryAvailableExternalTitleDatabase(isAlreadyAvailable)
|
||||||
);
|
);
|
||||||
|
|
||||||
// タイトルデータベースを作成する
|
// タイトルデータベースを作成する
|
||||||
if (!*isAlreadyAvailable)
|
if (!*isAlreadyAvailable)
|
||||||
{
|
{
|
||||||
NN_UTIL_RETURN_IF_FAILED(
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
|
||||||
nn::am::InitializeExternalTitleDatabase()
|
nn::am::InitializeExternalTitleDatabase()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -68,7 +68,7 @@ nn::Result PreinstallImporter::ListTitles(nn::ProgramId* list, size_t* num, bit6
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 通信結果をパースしてタイトルリストを作成する
|
// 通信結果をパースしてタイトルリストを作成する
|
||||||
NN_UTIL_RETURN_IF_FAILED(
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
|
||||||
GetHtmlBodyAndParseXmlData(comm, list, num)
|
GetHtmlBodyAndParseXmlData(comm, list, num)
|
||||||
);
|
);
|
||||||
return nn::ResultSuccess();
|
return nn::ResultSuccess();
|
||||||
@ -78,7 +78,7 @@ nn::Result PreinstallImporter::ListTitlesBasedOnTickets(nn::ProgramId* list, siz
|
|||||||
{
|
{
|
||||||
s32 personalizedTicketNum;
|
s32 personalizedTicketNum;
|
||||||
nn::am::TicketInfo ticketInfo[256];
|
nn::am::TicketInfo ticketInfo[256];
|
||||||
NN_UTIL_RETURN_IF_FAILED(
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
|
||||||
nn::am::GetPersonalizedTicketInfoList(&personalizedTicketNum, ticketInfo, 256)
|
nn::am::GetPersonalizedTicketInfoList(&personalizedTicketNum, ticketInfo, 256)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ nn::Result PreinstallImporter::GetHtmlBodyAndParseXmlData(BgsCommunicator& comm,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// XMLを解析してタイトルリストを設定する
|
// XMLを解析してタイトルリストを設定する
|
||||||
NN_UTIL_RETURN_IF_FAILED(ParseXmlData(buf, list, num));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(ParseXmlData(buf, list, num));
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return nn::ResultSuccess();
|
||||||
}
|
}
|
||||||
@ -140,7 +140,7 @@ nn::Result PreinstallImporter::ParseXmlData(void* buf, nn::ProgramId* list, size
|
|||||||
nn::xml::simple::SimpleXmlParser simpleXmlParser(pAllocator);
|
nn::xml::simple::SimpleXmlParser simpleXmlParser(pAllocator);
|
||||||
const nn::xml::simple::SimpleXmlParser::Node* pTaskIdNode;
|
const nn::xml::simple::SimpleXmlParser::Node* pTaskIdNode;
|
||||||
|
|
||||||
NN_UTIL_RETURN_IF_FAILED(
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
|
||||||
SetNodetoTitleIds(simpleXmlParser, xmlResult, &pTaskIdNode)
|
SetNodetoTitleIds(simpleXmlParser, xmlResult, &pTaskIdNode)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -1,153 +1,153 @@
|
|||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Project: Horizon
|
Project: Horizon
|
||||||
File: RegionIdModifier.cpp
|
File: RegionIdModifier.cpp
|
||||||
|
|
||||||
Copyright (C)2011 Nintendo Co., Ltd. All rights reserved.
|
Copyright (C)2011 Nintendo Co., Ltd. All rights reserved.
|
||||||
|
|
||||||
These coded instructions, statements, and computer programs contain
|
These coded instructions, statements, and computer programs contain
|
||||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
Company Ltd., and are protected by Federal copyright law. They may
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
not be disclosed to third parties or copied or duplicated in any form,
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
in whole or in part, without the prior written consent of Nintendo.
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
$Rev:$
|
$Rev:$
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#include "RegionIdModifier.h"
|
#include "RegionIdModifier.h"
|
||||||
#include <cwchar>
|
#include <cwchar>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
struct CountryData
|
struct CountryData
|
||||||
{
|
{
|
||||||
u32 id; // 上記定数にあるように、国IDと地域IDを組み合わせたID
|
u32 id; // 上記定数にあるように、国IDと地域IDを組み合わせたID
|
||||||
u16 regionName[nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NUM_LANGUAGES][nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NAME_LENGTH]; // NULL終端込み
|
u16 regionName[nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NUM_LANGUAGES][nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NAME_LENGTH]; // NULL終端込み
|
||||||
u8 order[nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NUM_LANGUAGES]; // 言語ごとの地域名並び順(「未設定」が0になるので、最初の地域は1)
|
u8 order[nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NUM_LANGUAGES]; // 言語ごとの地域名並び順(「未設定」が0になるので、最初の地域は1)
|
||||||
u16 latitude; // リストの値を 65536/360 倍して格納して下さい
|
u16 latitude; // リストの値を 65536/360 倍して格納して下さい
|
||||||
u16 longitude; // リストの値を 65536/360 倍して格納して下さい
|
u16 longitude; // リストの値を 65536/360 倍して格納して下さい
|
||||||
};
|
};
|
||||||
|
|
||||||
const size_t NUP_VERSION_TO_REGIONNUM[] =
|
const size_t NUP_VERSION_TO_REGIONNUM[] =
|
||||||
{
|
{
|
||||||
1, // ローンチ(0)
|
1, // ローンチ(0)
|
||||||
1, // 0thNUP(1)
|
1, // 0thNUP(1)
|
||||||
2, // 1stNUP(2)
|
2, // 1stNUP(2)
|
||||||
2, // 1.05NUP(3)
|
2, // 1.05NUP(3)
|
||||||
2, // 1.1NUP(4)
|
2, // 1.1NUP(4)
|
||||||
3, // 2ndNUP(5)
|
3, // 2ndNUP(5)
|
||||||
3, // 2.1NUP(6)
|
3, // 2.1NUP(6)
|
||||||
};
|
};
|
||||||
|
|
||||||
const wchar_t* DIR_PATH[] =
|
const wchar_t* DIR_PATH[] =
|
||||||
{
|
{
|
||||||
L"0/JP/",
|
L"0/JP/",
|
||||||
L"0/US/",
|
L"0/US/",
|
||||||
L"0/EU/",
|
L"0/EU/",
|
||||||
L"2/JP/",
|
L"2/JP/",
|
||||||
L"2/US/",
|
L"2/US/",
|
||||||
L"2/EU/",
|
L"2/EU/",
|
||||||
L"5/JP/",
|
L"5/JP/",
|
||||||
L"5/US/",
|
L"5/US/",
|
||||||
L"5/EU/"
|
L"5/EU/"
|
||||||
};
|
};
|
||||||
|
|
||||||
RegionIdModifier::RegionIdModifier(u16 id, u8 nupVersion, u8 regionCode, const wchar_t* regionName)
|
RegionIdModifier::RegionIdModifier(u16 id, u8 nupVersion, u8 regionCode, const wchar_t* regionName)
|
||||||
{
|
{
|
||||||
m_Id = id;
|
m_Id = id;
|
||||||
m_NupVersion = nupVersion;
|
m_NupVersion = nupVersion;
|
||||||
m_RegionCode = regionCode;
|
m_RegionCode = regionCode;
|
||||||
if (regionName != NULL)
|
if (regionName != NULL)
|
||||||
{
|
{
|
||||||
std::wcsncpy(m_RegionName, regionName, sizeof(m_RegionName) / sizeof(wchar_t));
|
std::wcsncpy(m_RegionName, regionName, sizeof(m_RegionName) / sizeof(wchar_t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RegionIdModifier::IsValid()
|
bool RegionIdModifier::IsValid()
|
||||||
{
|
{
|
||||||
return (m_Id & 0x00ff) != 0x01;
|
return (m_Id & 0x00ff) != 0x01;
|
||||||
}
|
}
|
||||||
|
|
||||||
const PathList* RegionIdModifier::GetDirectoryPath()
|
const PathList* RegionIdModifier::GetDirectoryPath()
|
||||||
{
|
{
|
||||||
// 範囲外のリージョン
|
// 範囲外のリージョン
|
||||||
if (nn::cfg::CTR::CFG_REGION_EUROPE < m_RegionCode)
|
if (nn::cfg::CTR::CFG_REGION_EUROPE < m_RegionCode)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (u8 i = 0; i < nn::cfg::CTR::CFG_REGION_EUROPE + 1; i++)
|
for (u8 i = 0; i < nn::cfg::CTR::CFG_REGION_EUROPE + 1; i++)
|
||||||
{
|
{
|
||||||
std::wcsncpy(m_DirectoryPathBuf[i].path, DIR_PATH[m_RegionCode + i * (nn::cfg::CTR::CFG_REGION_EUROPE + 1)],
|
std::wcsncpy(m_DirectoryPathBuf[i].path, DIR_PATH[m_RegionCode + i * (nn::cfg::CTR::CFG_REGION_EUROPE + 1)],
|
||||||
PATHLIST_LENGTH);
|
PATHLIST_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_DirectoryPathBuf;
|
return m_DirectoryPathBuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t RegionIdModifier::GetDirectoryPathNum()
|
size_t RegionIdModifier::GetDirectoryPathNum()
|
||||||
{
|
{
|
||||||
// 範囲外のリージョン
|
// 範囲外のリージョン
|
||||||
if (nn::cfg::CTR::CFG_REGION_EUROPE < m_RegionCode)
|
if (nn::cfg::CTR::CFG_REGION_EUROPE < m_RegionCode)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t countryNum = sizeof(NUP_VERSION_TO_REGIONNUM) / sizeof(NUP_VERSION_TO_REGIONNUM[0]);
|
const size_t countryNum = sizeof(NUP_VERSION_TO_REGIONNUM) / sizeof(NUP_VERSION_TO_REGIONNUM[0]);
|
||||||
if (m_NupVersion > countryNum - 1)
|
if (m_NupVersion > countryNum - 1)
|
||||||
{
|
{
|
||||||
return NUP_VERSION_TO_REGIONNUM[countryNum - 1];
|
return NUP_VERSION_TO_REGIONNUM[countryNum - 1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return NUP_VERSION_TO_REGIONNUM[m_NupVersion];
|
return NUP_VERSION_TO_REGIONNUM[m_NupVersion];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const wchar_t* RegionIdModifier::GetFileName()
|
const wchar_t* RegionIdModifier::GetFileName()
|
||||||
{
|
{
|
||||||
std::swprintf(m_FileNameBuf, sizeof(m_FileNameBuf), L"%d_LZ.bin", m_Id >> 8);
|
std::swprintf(m_FileNameBuf, sizeof(m_FileNameBuf), L"%d_LZ.bin", m_Id >> 8);
|
||||||
return m_FileNameBuf;
|
return m_FileNameBuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
const PathList* RegionIdModifier::GetFilePath()
|
const PathList* RegionIdModifier::GetFilePath()
|
||||||
{
|
{
|
||||||
std::memset(m_FilePathBuf, 0, sizeof(m_FilePathBuf));
|
std::memset(m_FilePathBuf, 0, sizeof(m_FilePathBuf));
|
||||||
GetDirectoryPath();
|
GetDirectoryPath();
|
||||||
for (u8 i = 0; i < GetDirectoryPathNum(); i++)
|
for (u8 i = 0; i < GetDirectoryPathNum(); i++)
|
||||||
{
|
{
|
||||||
size_t writeSize = std::wcslen(m_DirectoryPathBuf[i].path);
|
size_t writeSize = std::wcslen(m_DirectoryPathBuf[i].path);
|
||||||
std::wcsncpy(m_FilePathBuf[i].path, m_DirectoryPathBuf[i].path, writeSize);
|
std::wcsncpy(m_FilePathBuf[i].path, m_DirectoryPathBuf[i].path, writeSize);
|
||||||
std::wcsncat(m_FilePathBuf[i].path, GetFileName(), PATHLIST_LENGTH - writeSize);
|
std::wcsncat(m_FilePathBuf[i].path, GetFileName(), PATHLIST_LENGTH - writeSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_FilePathBuf;
|
return m_FilePathBuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t RegionIdModifier::GetFilePathNum()
|
size_t RegionIdModifier::GetFilePathNum()
|
||||||
{
|
{
|
||||||
return GetDirectoryPathNum();
|
return GetDirectoryPathNum();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RegionIdModifier::GetValidRegionId(void* buf, size_t size, u8* id)
|
bool RegionIdModifier::GetValidRegionId(void* buf, size_t size, u8* id)
|
||||||
{
|
{
|
||||||
if (buf == NULL || size == 0)
|
if (buf == NULL || size == 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 numRegion; // その国に含まれる地域の数
|
u32 numRegion; // その国に含まれる地域の数
|
||||||
numRegion = *reinterpret_cast<u32*>(buf);
|
numRegion = *reinterpret_cast<u32*>(buf);
|
||||||
|
|
||||||
CountryData* pCountry;
|
CountryData* pCountry;
|
||||||
pCountry = reinterpret_cast<CountryData*>(&reinterpret_cast<u32*>(buf)[1]);
|
pCountry = reinterpret_cast<CountryData*>(&reinterpret_cast<u32*>(buf)[1]);
|
||||||
|
|
||||||
for (u32 i = 0; i < numRegion + 1; i++)
|
for (u32 i = 0; i < numRegion + 1; i++)
|
||||||
{
|
{
|
||||||
if (std::wcscmp(m_RegionName, reinterpret_cast<wchar_t*>(pCountry->regionName[0])) == 0)
|
if (std::wcscmp(m_RegionName, reinterpret_cast<wchar_t*>(pCountry->regionName[0])) == 0)
|
||||||
{
|
{
|
||||||
*id = (pCountry->id >> 16) & 0x00ff;
|
*id = (pCountry->id >> 16) & 0x00ff;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
pCountry++;
|
pCountry++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,89 +1,89 @@
|
|||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Project: Horizon
|
Project: Horizon
|
||||||
File: RegionIdModifier.h
|
File: RegionIdModifier.h
|
||||||
|
|
||||||
Copyright (C)2011 Nintendo Co., Ltd. All rights reserved.
|
Copyright (C)2011 Nintendo Co., Ltd. All rights reserved.
|
||||||
|
|
||||||
These coded instructions, statements, and computer programs contain
|
These coded instructions, statements, and computer programs contain
|
||||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
Company Ltd., and are protected by Federal copyright law. They may
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
not be disclosed to third parties or copied or duplicated in any form,
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
in whole or in part, without the prior written consent of Nintendo.
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
$Rev:$
|
$Rev:$
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#ifndef _REGION_ID_MODIFIER_H_
|
#ifndef _REGION_ID_MODIFIER_H_
|
||||||
#define _REGION_ID_MODIFIER_H_
|
#define _REGION_ID_MODIFIER_H_
|
||||||
|
|
||||||
#if defined(__ARMCC_VERSION)
|
#if defined(__ARMCC_VERSION)
|
||||||
#include <nn.h>
|
#include <nn.h>
|
||||||
#include <nn/cfg.h>
|
#include <nn/cfg.h>
|
||||||
#else
|
#else
|
||||||
#include "test_common.h"
|
#include "test_common.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const size_t PATHLIST_LENGTH = 32;
|
const size_t PATHLIST_LENGTH = 32;
|
||||||
struct PathList
|
struct PathList
|
||||||
{
|
{
|
||||||
wchar_t path[PATHLIST_LENGTH];
|
wchar_t path[PATHLIST_LENGTH];
|
||||||
};
|
};
|
||||||
|
|
||||||
//! @brief データ移行ツールで破壊した地域idを修正するためのクラスです
|
//! @brief データ移行ツールで破壊した地域idを修正するためのクラスです
|
||||||
class RegionIdModifier
|
class RegionIdModifier
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! @brief パラメータを与えて初期化します。
|
//! @brief パラメータを与えて初期化します。
|
||||||
//! @param[in] id SimpleAddressの上位16ビット
|
//! @param[in] id SimpleAddressの上位16ビット
|
||||||
//! @param[in] nupVersion NUPバージョン
|
//! @param[in] nupVersion NUPバージョン
|
||||||
//! @param[in] regionCode リージョン
|
//! @param[in] regionCode リージョン
|
||||||
//! @param[in] regionName 地域名
|
//! @param[in] regionName 地域名
|
||||||
RegionIdModifier(u16 id, u8 nupVersion, u8 regionCode, const wchar_t* regionName);
|
RegionIdModifier(u16 id, u8 nupVersion, u8 regionCode, const wchar_t* regionName);
|
||||||
~RegionIdModifier() {};
|
~RegionIdModifier() {};
|
||||||
|
|
||||||
//! @brief 正しいIDかどうか
|
//! @brief 正しいIDかどうか
|
||||||
bool IsValid();
|
bool IsValid();
|
||||||
|
|
||||||
//! @brief バージョン、リージョンに応じたディレクトリパスの配列を取得します
|
//! @brief バージョン、リージョンに応じたディレクトリパスの配列を取得します
|
||||||
//! @return パス名。バージョン・リージョンが正しくない場合はNULL
|
//! @return パス名。バージョン・リージョンが正しくない場合はNULL
|
||||||
const PathList* GetDirectoryPath();
|
const PathList* GetDirectoryPath();
|
||||||
|
|
||||||
//! @brief バージョン、リージョンに応じたディレクトリパス数を取得します
|
//! @brief バージョン、リージョンに応じたディレクトリパス数を取得します
|
||||||
size_t GetDirectoryPathNum();
|
size_t GetDirectoryPathNum();
|
||||||
|
|
||||||
//! @brief 国idに応じたファイル名を取得します
|
//! @brief 国idに応じたファイル名を取得します
|
||||||
const wchar_t* GetFileName();
|
const wchar_t* GetFileName();
|
||||||
|
|
||||||
//! @brief バージョン、リージョン、国idに応じたファイルパスの配列を取得します
|
//! @brief バージョン、リージョン、国idに応じたファイルパスの配列を取得します
|
||||||
const PathList* GetFilePath();
|
const PathList* GetFilePath();
|
||||||
|
|
||||||
//! @brief バージョン、リージョン、国idに応じたファイルパス数を取得します
|
//! @brief バージョン、リージョン、国idに応じたファイルパス数を取得します
|
||||||
size_t GetFilePathNum();
|
size_t GetFilePathNum();
|
||||||
|
|
||||||
//! @brief 与えられたバッファから正しい地域idを取得します
|
//! @brief 与えられたバッファから正しい地域idを取得します
|
||||||
//! @param[in] buf 展開済みの地域データの入ったバッファ
|
//! @param[in] buf 展開済みの地域データの入ったバッファ
|
||||||
//! @param[in] size バッファサイズ
|
//! @param[in] size バッファサイズ
|
||||||
//! @param[out] id 正しいid
|
//! @param[out] id 正しいid
|
||||||
//! @return 正しいidが見つかったかどうか
|
//! @return 正しいidが見つかったかどうか
|
||||||
bool GetValidRegionId(void* buf , size_t size, u8* id);
|
bool GetValidRegionId(void* buf , size_t size, u8* id);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! @brief SimpleAddressの上位16ビット
|
//! @brief SimpleAddressの上位16ビット
|
||||||
// 上位8ビットが国id,下位8ビットが地域
|
// 上位8ビットが国id,下位8ビットが地域
|
||||||
u16 m_Id;
|
u16 m_Id;
|
||||||
|
|
||||||
//! @brief NUPバージョン番号
|
//! @brief NUPバージョン番号
|
||||||
u8 m_NupVersion;
|
u8 m_NupVersion;
|
||||||
//! @brief リージョンコード
|
//! @brief リージョンコード
|
||||||
u8 m_RegionCode;
|
u8 m_RegionCode;
|
||||||
//! @brief 地域名
|
//! @brief 地域名
|
||||||
wchar_t m_RegionName[nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NAME_LENGTH];
|
wchar_t m_RegionName[nn::cfg::CTR::CFG_SIMPLE_ADDRESS_NAME_LENGTH];
|
||||||
|
|
||||||
//! @brief ファイル名を保存するバッファ
|
//! @brief ファイル名を保存するバッファ
|
||||||
wchar_t m_FileNameBuf[PATHLIST_LENGTH];
|
wchar_t m_FileNameBuf[PATHLIST_LENGTH];
|
||||||
//! @brief ディレクトリパスを保存するバッファ
|
//! @brief ディレクトリパスを保存するバッファ
|
||||||
PathList m_DirectoryPathBuf[nn::cfg::CTR::CFG_REGION_EUROPE + 1];
|
PathList m_DirectoryPathBuf[nn::cfg::CTR::CFG_REGION_EUROPE + 1];
|
||||||
//! @brief ファイルパスを保存するバッファ
|
//! @brief ファイルパスを保存するバッファ
|
||||||
PathList m_FilePathBuf[nn::cfg::CTR::CFG_REGION_EUROPE + 1];
|
PathList m_FilePathBuf[nn::cfg::CTR::CFG_REGION_EUROPE + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _REGION_ID_MODIFIER_H_
|
#endif // _REGION_ID_MODIFIER_H_
|
||||||
|
|||||||
@ -233,9 +233,9 @@ nn::Result ShopOperationConnect(ECAccountInfo** pAccountInfo)
|
|||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
COMMON_LOGGER_DETAIL("nim::Shop::Connect\n");
|
COMMON_LOGGER_DETAIL("nim::Shop::Connect\n");
|
||||||
result = nn::nim::Shop::Connect(pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE);
|
result = nn::nim::Shop::Connect(pAccountInfo, s_EcBufffer, EC_BUFFER_SIZE);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
result = CheckStandbyMode((*pAccountInfo)->isStandbyMode);
|
result = CheckStandbyMode((*pAccountInfo)->isStandbyMode);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
PrintECAccountInfo(**pAccountInfo);
|
PrintECAccountInfo(**pAccountInfo);
|
||||||
COMMON_LOGGER_DETAIL("\n");
|
COMMON_LOGGER_DETAIL("\n");
|
||||||
@ -254,7 +254,7 @@ nn::Result ShopOperationInitialize()
|
|||||||
{
|
{
|
||||||
COMMON_LOGGER_DETAIL("nim::InitializeForShop\n");
|
COMMON_LOGGER_DETAIL("nim::InitializeForShop\n");
|
||||||
result = nn::nim::InitializeForShop();
|
result = nn::nim::InitializeForShop();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
s_IsNimShopInitialized = true;
|
s_IsNimShopInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,11 +264,11 @@ nn::Result ShopOperationInitialize()
|
|||||||
COMMON_LOGGER_DETAIL("nim::Shop::SetApplication Id\n");
|
COMMON_LOGGER_DETAIL("nim::Shop::SetApplication Id\n");
|
||||||
|
|
||||||
nn::nim::Shop::SetApplicationId();
|
nn::nim::Shop::SetApplicationId();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
COMMON_LOGGER_DETAIL("nim::Shop::SetTIN\n");
|
COMMON_LOGGER_DETAIL("nim::Shop::SetTIN\n");
|
||||||
result = nn::nim::Shop::SetTin(CONSOLE_RESTORE_TIN);
|
result = nn::nim::Shop::SetTin(CONSOLE_RESTORE_TIN);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -277,14 +277,14 @@ nn::Result ShopOperationConnect()
|
|||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
result = ShopOperationInitialize();
|
result = ShopOperationInitialize();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
/* -------------------------------------------------------------------
|
/* -------------------------------------------------------------------
|
||||||
Connect
|
Connect
|
||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
ECAccountInfo* pAccountInfo;
|
ECAccountInfo* pAccountInfo;
|
||||||
result = ShopOperationConnect(&pAccountInfo);
|
result = ShopOperationConnect(&pAccountInfo);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -298,7 +298,7 @@ nn::Result ShopOperationFinalize()
|
|||||||
-------------------------------------------------------------------- */
|
-------------------------------------------------------------------- */
|
||||||
COMMON_LOGGER_DETAIL("nim::FinalizeForShop\n");
|
COMMON_LOGGER_DETAIL("nim::FinalizeForShop\n");
|
||||||
result = nn::nim::FinalizeForShop();
|
result = nn::nim::FinalizeForShop();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
s_IsNimShopInitialized = false;
|
s_IsNimShopInitialized = false;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@ -101,7 +101,7 @@ nn::Result GetEntry(ES_NAMESPACE::ESTitleId titleId, EC_NAMESPACE::ECTitleCatalo
|
|||||||
nn::Result GetTitleConfig(const ES_NAMESPACE::ESTitleId titleId, nn::nim::TitleConfig *titleConfig, s64* requiredSize)
|
nn::Result GetTitleConfig(const ES_NAMESPACE::ESTitleId titleId, nn::nim::TitleConfig *titleConfig, s64* requiredSize)
|
||||||
{
|
{
|
||||||
EC_NAMESPACE::ECTitleCatalogEntry *entry;
|
EC_NAMESPACE::ECTitleCatalogEntry *entry;
|
||||||
NN_UTIL_RETURN_IF_FAILED(GetEntry(titleId, &entry));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(GetEntry(titleId, &entry));
|
||||||
|
|
||||||
titleConfig->titleId =titleId;
|
titleConfig->titleId =titleId;
|
||||||
titleConfig->version=std::strtoull(GetAttribute(entry->attributes, entry->nAttributes, "Version"), NULL, 10);
|
titleConfig->version=std::strtoull(GetAttribute(entry->attributes, entry->nAttributes, "Version"), NULL, 10);
|
||||||
@ -307,7 +307,7 @@ nn::Result WaitCancelled()
|
|||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
// キャンセルがResultとして返ってくる / ダウンロード終了まで待つ
|
// キャンセルがResultとして返ってくる / ダウンロード終了まで待つ
|
||||||
NN_UTIL_RETURN_IF_FAILED(nn::nim::Shop::GetProgress(&progress));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(nn::nim::Shop::GetProgress(&progress));
|
||||||
if(progress.lastResult==nn::nim::ResultCancelRequested() || progress.state==nn::nim::TITLE_STATE_FINISHED)
|
if(progress.lastResult==nn::nim::ResultCancelRequested() || progress.state==nn::nim::TITLE_STATE_FINISHED)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -759,7 +759,7 @@ nn::Result CalculateFileSizeRecursively(std::wstring currentDirectory, s64& file
|
|||||||
|
|
||||||
NN_LOG("%s\n", common::GetCharStr(currentDirectory.c_str()));
|
NN_LOG("%s\n", common::GetCharStr(currentDirectory.c_str()));
|
||||||
result = dir.TryInitialize(currentDirectory.c_str());
|
result = dir.TryInitialize(currentDirectory.c_str());
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -786,7 +786,7 @@ nn::Result CalculateFileSizeRecursively(std::wstring currentDirectory, s64& file
|
|||||||
if (entry.attributes.isDirectory)
|
if (entry.attributes.isDirectory)
|
||||||
{
|
{
|
||||||
result = CalculateFileSizeRecursively(currentDirectory + std::wstring(entry.entryName) + std::wstring(L"/"), fileSize);
|
result = CalculateFileSizeRecursively(currentDirectory + std::wstring(entry.entryName) + std::wstring(L"/"), fileSize);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
}
|
}
|
||||||
// ファイルの場合
|
// ファイルの場合
|
||||||
else
|
else
|
||||||
|
|||||||
@ -457,7 +457,7 @@ nn::Result SaveDataMover::Import(void* buf, size_t bufSize, bit32 id, u64* progr
|
|||||||
const int MAX_PATH_LEN = 127;
|
const int MAX_PATH_LEN = 127;
|
||||||
char srcRoot[MAX_PATH_LEN + 1];
|
char srcRoot[MAX_PATH_LEN + 1];
|
||||||
|
|
||||||
NN_UTIL_RETURN_IF_FAILED(nn::fs::CreateNewSharedExtSaveDataRawStorage(id));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(nn::fs::CreateNewSharedExtSaveDataRawStorage(id));
|
||||||
|
|
||||||
// 2. fs::CreateNewSharedExtSaveDataRawStorage を呼び
|
// 2. fs::CreateNewSharedExtSaveDataRawStorage を呼び
|
||||||
// 書き込み用の領域を作成します。
|
// 書き込み用の領域を作成します。
|
||||||
|
|||||||
@ -98,7 +98,7 @@ nn::Result SdReaderWriter::WriteBuf(nn::fs::FileStream& file, const wchar_t* pat
|
|||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|
||||||
result = WriteBufCore(file, path, buf, size);
|
result = WriteBufCore(file, path, buf, size);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = file.TryFlush();
|
result = file.TryFlush();
|
||||||
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
@ -116,7 +116,7 @@ nn::Result SdReaderWriter::WriteBufWithCmac(const wchar_t* path, void* buf, size
|
|||||||
nn::fs::FileStream file;
|
nn::fs::FileStream file;
|
||||||
|
|
||||||
result = WriteBufCore(file, path, buf, size);
|
result = WriteBufCore(file, path, buf, size);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
bit8 sha256Hash[nn::crypto::Sha256Context::HASH_SIZE];
|
bit8 sha256Hash[nn::crypto::Sha256Context::HASH_SIZE];
|
||||||
nn::crypto::CalculateSha256(sha256Hash, buf, size);
|
nn::crypto::CalculateSha256(sha256Hash, buf, size);
|
||||||
@ -173,7 +173,7 @@ nn::Result SdReaderWriter::ReadBuf(nn::fs::FileStream& file, const wchar_t* path
|
|||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|
||||||
result = ReadBufCore(file, path, buf, size, totalSize);
|
result = ReadBufCore(file, path, buf, size, totalSize);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
file.Finalize();
|
file.Finalize();
|
||||||
return result;
|
return result;
|
||||||
@ -187,7 +187,7 @@ nn::Result SdReaderWriter::ReadBufWithCmac(const wchar_t* path, void* buf, size_
|
|||||||
NN_ASSERT(size > nn::crypto::AES_CMAC_MAC_SIZE);
|
NN_ASSERT(size > nn::crypto::AES_CMAC_MAC_SIZE);
|
||||||
|
|
||||||
result = ReadBufCore(file, path, buf, size, totalSize);
|
result = ReadBufCore(file, path, buf, size, totalSize);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
file.Finalize();
|
file.Finalize();
|
||||||
// ハッシュが付加されていない
|
// ハッシュが付加されていない
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#include <nn/fs.h>
|
#include <nn/fs.h>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include "configLoader.h"
|
#include "configLoader.h"
|
||||||
|
#include "CommonLogger.h"
|
||||||
|
|
||||||
namespace common
|
namespace common
|
||||||
{
|
{
|
||||||
@ -10,8 +11,8 @@ Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const
|
|||||||
{
|
{
|
||||||
s64 fileSize;
|
s64 fileSize;
|
||||||
FileInputStream fi;
|
FileInputStream fi;
|
||||||
NN_UTIL_RETURN_IF_FAILED(fi.TryInitialize(fileName));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(fi.TryInitialize(fileName));
|
||||||
NN_UTIL_RETURN_IF_FAILED(fi.TryGetSize(&fileSize));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(fi.TryGetSize(&fileSize));
|
||||||
|
|
||||||
// NULL終端ぶん読めるサイズを減らす
|
// NULL終端ぶん読めるサイズを減らす
|
||||||
if (fileSize > bufferSize - sizeof(wchar_t))
|
if (fileSize > bufferSize - sizeof(wchar_t))
|
||||||
@ -21,7 +22,7 @@ Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Buffer = static_cast<wchar_t*>(buffer);
|
m_Buffer = static_cast<wchar_t*>(buffer);
|
||||||
NN_UTIL_RETURN_IF_FAILED(fi.TryRead(&m_UsedBufferSize, m_Buffer, fileSize));
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(fi.TryRead(&m_UsedBufferSize, m_Buffer, fileSize));
|
||||||
NN_LOG("config size = %d\n", m_UsedBufferSize);
|
NN_LOG("config size = %d\n", m_UsedBufferSize);
|
||||||
return ParseData();
|
return ParseData();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,6 +39,7 @@ SOURCES[] =
|
|||||||
../../common/configLoader.cpp
|
../../common/configLoader.cpp
|
||||||
../../common/VersionDetect.cpp
|
../../common/VersionDetect.cpp
|
||||||
|
|
||||||
|
include $(ROOT)/common/BuildSwitch.om
|
||||||
CTR_BANNER_SPEC = AutoBoot.bsf
|
CTR_BANNER_SPEC = AutoBoot.bsf
|
||||||
|
|
||||||
ROMFS_ROOT = ../../common/romfiles
|
ROMFS_ROOT = ../../common/romfiles
|
||||||
@ -56,7 +57,7 @@ LIBS += libnn_cfg \
|
|||||||
|
|
||||||
INSTALL_SDK_TOOL = true
|
INSTALL_SDK_TOOL = true
|
||||||
|
|
||||||
ROM_SPEC_FILE = $(TARGET_PROGRAM).rsf
|
ROM_SPEC_FILE = $(TARGET_NAME).rsf
|
||||||
DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/private/RepairTool.desc
|
DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/private/RepairTool.desc
|
||||||
|
|
||||||
include $(ROOT_OMAKE)/modulerules
|
include $(ROOT_OMAKE)/modulerules
|
||||||
|
|||||||
@ -108,7 +108,11 @@ bool AddCmac(const wchar_t * from_path, void* buf, const size_t bufSize)
|
|||||||
const wchar_t* CMAC_DIR = L"CmacAdded";
|
const wchar_t* CMAC_DIR = L"CmacAdded";
|
||||||
targetDirectory << from_path << CMAC_DIR;
|
targetDirectory << from_path << CMAC_DIR;
|
||||||
result = nn::fs::TryDeleteDirectoryRecursively(targetDirectory.str().c_str());
|
result = nn::fs::TryDeleteDirectoryRecursively(targetDirectory.str().c_str());
|
||||||
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
if(!(result <= nn::fs::ResultNotFound()))
|
||||||
|
{
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
result = nn::fs::TryCreateDirectory(targetDirectory.str().c_str());
|
result = nn::fs::TryCreateDirectory(targetDirectory.str().c_str());
|
||||||
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user