Merge pull request #742 from RachelBryk/stop-panicking

Don't spam PanicAlerts on wii save exports.
This commit is contained in:
Lioncash 2014-08-05 23:36:52 -04:00
commit 5e50d8fa0d
1 changed files with 38 additions and 34 deletions

View File

@ -46,6 +46,14 @@ bool CWiiSaveCrypted::ImportWiiSave(const char* FileName)
bool CWiiSaveCrypted::ExportWiiSave(u64 TitleID) bool CWiiSaveCrypted::ExportWiiSave(u64 TitleID)
{ {
CWiiSaveCrypted exportSave("", TitleID); CWiiSaveCrypted exportSave("", TitleID);
if (exportSave.b_valid)
{
SuccessAlertT("Successfully exported file to %s", exportSave.encryptedSavePath.c_str());
}
else
{
PanicAlertT("Export failed");
}
return exportSave.b_valid; return exportSave.b_valid;
} }
@ -77,12 +85,16 @@ void CWiiSaveCrypted::ExportAllSaves()
} }
} }
} }
SuccessAlertT("Found %d save files", (unsigned int) titles.size()); SuccessAlertT("Found %u save files", (unsigned int) titles.size());
u32 success = 0;
for (const u64& title : titles) for (const u64& title : titles)
{ {
CWiiSaveCrypted* exportSave = new CWiiSaveCrypted("", title); CWiiSaveCrypted* exportSave = new CWiiSaveCrypted("", title);
if (exportSave->b_valid)
success++;
delete exportSave; delete exportSave;
} }
SuccessAlertT("Sucessfully exported %u saves to %s", success, (File::GetUserPath(D_USER_IDX) + "private/wii/title/").c_str());
} }
CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID) CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)
: m_TitleID(TitleID) : m_TitleID(TitleID)
@ -119,14 +131,6 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)
WriteBKHDR(); WriteBKHDR();
ExportWiiSaveFiles(); ExportWiiSaveFiles();
do_sig(); do_sig();
if (b_valid)
{
SuccessAlertT("Successfully exported file to %s", encryptedSavePath.c_str());
}
else
{
PanicAlertT("Export failed");
}
} }
} }
} }
@ -136,13 +140,13 @@ void CWiiSaveCrypted::ReadHDR()
File::IOFile fpData_bin(encryptedSavePath, "rb"); File::IOFile fpData_bin(encryptedSavePath, "rb");
if (!fpData_bin) if (!fpData_bin)
{ {
PanicAlertT("Cannot open %s", encryptedSavePath.c_str()); ERROR_LOG(CONSOLE, "Cannot open %s", encryptedSavePath.c_str());
b_valid = false; b_valid = false;
return; return;
} }
if (!fpData_bin.ReadBytes(&_encryptedHeader, HEADER_SZ)) if (!fpData_bin.ReadBytes(&_encryptedHeader, HEADER_SZ))
{ {
PanicAlertT("Failed to read header"); ERROR_LOG(CONSOLE, "Failed to read header");
b_valid = false; b_valid = false;
return; return;
} }
@ -153,7 +157,7 @@ void CWiiSaveCrypted::ReadHDR()
if ((bannerSize < FULL_BNR_MIN) || (bannerSize > FULL_BNR_MAX) || if ((bannerSize < FULL_BNR_MIN) || (bannerSize > FULL_BNR_MAX) ||
(((bannerSize - BNR_SZ) % ICON_SZ) != 0)) (((bannerSize - BNR_SZ) % ICON_SZ) != 0))
{ {
PanicAlertT("Not a Wii save or read failure for file header size %x", bannerSize); ERROR_LOG(CONSOLE, "Not a Wii save or read failure for file header size %x", bannerSize);
b_valid = false; b_valid = false;
return; return;
} }
@ -167,7 +171,7 @@ void CWiiSaveCrypted::ReadHDR()
md5((u8*)&_header, HEADER_SZ, md5_calc); md5((u8*)&_header, HEADER_SZ, md5_calc);
if (memcmp(md5_file, md5_calc, 0x10)) if (memcmp(md5_file, md5_calc, 0x10))
{ {
PanicAlertT("MD5 mismatch\n %016" PRIx64 "%016" PRIx64 " != %016" PRIx64 "%016" PRIx64, Common::swap64(md5_file),Common::swap64(md5_file+8), Common::swap64(md5_calc), Common::swap64(md5_calc+8)); ERROR_LOG(CONSOLE, "MD5 mismatch\n %016" PRIx64 "%016" PRIx64 " != %016" PRIx64 "%016" PRIx64, Common::swap64(md5_file),Common::swap64(md5_file+8), Common::swap64(md5_calc), Common::swap64(md5_calc+8));
b_valid= false; b_valid= false;
} }
@ -201,7 +205,7 @@ void CWiiSaveCrypted::WriteHDR()
File::IOFile fpBanner_bin(BannerFilePath, "rb"); File::IOFile fpBanner_bin(BannerFilePath, "rb");
if (!fpBanner_bin.ReadBytes(_header.BNR, bannerSize)) if (!fpBanner_bin.ReadBytes(_header.BNR, bannerSize))
{ {
PanicAlertT("Failed to read banner.bin"); ERROR_LOG(CONSOLE, "Failed to read banner.bin");
b_valid = false; b_valid = false;
return; return;
} }
@ -217,7 +221,7 @@ void CWiiSaveCrypted::WriteHDR()
File::IOFile fpData_bin(encryptedSavePath, "wb"); File::IOFile fpData_bin(encryptedSavePath, "wb");
if (!fpData_bin.WriteBytes(&_encryptedHeader, HEADER_SZ)) if (!fpData_bin.WriteBytes(&_encryptedHeader, HEADER_SZ))
{ {
PanicAlertT("Failed to write header for %s", encryptedSavePath.c_str()); ERROR_LOG(CONSOLE, "Failed to write header for %s", encryptedSavePath.c_str());
b_valid = false; b_valid = false;
} }
} }
@ -231,14 +235,14 @@ void CWiiSaveCrypted::ReadBKHDR()
File::IOFile fpData_bin(encryptedSavePath, "rb"); File::IOFile fpData_bin(encryptedSavePath, "rb");
if (!fpData_bin) if (!fpData_bin)
{ {
PanicAlertT("Cannot open %s", encryptedSavePath.c_str()); ERROR_LOG(CONSOLE, "Cannot open %s", encryptedSavePath.c_str());
b_valid = false; b_valid = false;
return; return;
} }
fpData_bin.Seek(HEADER_SZ, SEEK_SET); fpData_bin.Seek(HEADER_SZ, SEEK_SET);
if (!fpData_bin.ReadBytes(&bkhdr, BK_SZ)) if (!fpData_bin.ReadBytes(&bkhdr, BK_SZ))
{ {
PanicAlertT("Failed to read bk header"); ERROR_LOG(CONSOLE, "Failed to read bk header");
b_valid = false; b_valid = false;
return; return;
} }
@ -247,7 +251,7 @@ void CWiiSaveCrypted::ReadBKHDR()
if (bkhdr.size != Common::swap32(BK_LISTED_SZ) || if (bkhdr.size != Common::swap32(BK_LISTED_SZ) ||
bkhdr.magic != Common::swap32(BK_HDR_MAGIC)) bkhdr.magic != Common::swap32(BK_HDR_MAGIC))
{ {
PanicAlertT("Invalid Size(%x) or Magic word (%x)", bkhdr.size, bkhdr.magic); ERROR_LOG(CONSOLE, "Invalid Size(%x) or Magic word (%x)", bkhdr.size, bkhdr.magic);
b_valid = false; b_valid = false;
return; return;
} }
@ -281,7 +285,7 @@ void CWiiSaveCrypted::WriteBKHDR()
File::IOFile fpData_bin(encryptedSavePath, "ab"); File::IOFile fpData_bin(encryptedSavePath, "ab");
if (!fpData_bin.WriteBytes(&bkhdr, BK_SZ)) if (!fpData_bin.WriteBytes(&bkhdr, BK_SZ))
{ {
PanicAlertT("Failed to write bkhdr"); ERROR_LOG(CONSOLE, "Failed to write bkhdr");
b_valid = false; b_valid = false;
} }
} }
@ -293,7 +297,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()
File::IOFile fpData_bin(encryptedSavePath, "rb"); File::IOFile fpData_bin(encryptedSavePath, "rb");
if (!fpData_bin) if (!fpData_bin)
{ {
PanicAlertT("Cannot open %s", encryptedSavePath.c_str()); ERROR_LOG(CONSOLE, "Cannot open %s", encryptedSavePath.c_str());
b_valid = false; b_valid = false;
return; return;
} }
@ -303,7 +307,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()
FileHDR _tmpFileHDR; FileHDR _tmpFileHDR;
for (u32 i = 0; i < _numberOfFiles; i++) for (u32 i = 0; i < _numberOfFiles; ++i)
{ {
memset(&_tmpFileHDR, 0, FILE_HDR_SZ); memset(&_tmpFileHDR, 0, FILE_HDR_SZ);
memset(IV, 0, 0x10); memset(IV, 0, 0x10);
@ -311,13 +315,13 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()
if (!fpData_bin.ReadBytes(&_tmpFileHDR, FILE_HDR_SZ)) if (!fpData_bin.ReadBytes(&_tmpFileHDR, FILE_HDR_SZ))
{ {
PanicAlertT("Failed to read header for file %d", i); ERROR_LOG(CONSOLE, "Failed to read header for file %d", i);
b_valid = false; b_valid = false;
} }
if (Common::swap32(_tmpFileHDR.magic) != FILE_HDR_MAGIC) if (Common::swap32(_tmpFileHDR.magic) != FILE_HDR_MAGIC)
{ {
PanicAlertT("Bad File Header"); ERROR_LOG(CONSOLE, "Bad File Header");
break; break;
} }
else else
@ -340,7 +344,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()
_encryptedData.reserve(RoundedFileSize); _encryptedData.reserve(RoundedFileSize);
if (!fpData_bin.ReadBytes(&_encryptedData[0], RoundedFileSize)) if (!fpData_bin.ReadBytes(&_encryptedData[0], RoundedFileSize))
{ {
PanicAlertT("Failed to read data from file %d", i); ERROR_LOG(CONSOLE, "Failed to read data from file %d", i);
b_valid = false; b_valid = false;
break; break;
} }
@ -400,7 +404,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles()
if (__name.length() > 0x44) if (__name.length() > 0x44)
{ {
PanicAlertT("\"%s\" is too long for the filename, max length is 0x44 + \\0", __name.c_str()); ERROR_LOG(CONSOLE, "\"%s\" is too long for the filename, max length is 0x44 + \\0", __name.c_str());
b_valid = false; b_valid = false;
return; return;
} }
@ -415,14 +419,14 @@ void CWiiSaveCrypted::ExportWiiSaveFiles()
{ {
if (_fileSize == 0) if (_fileSize == 0)
{ {
PanicAlertT("%s is a 0 byte file", FilesList[i].c_str()); ERROR_LOG(CONSOLE, "%s is a 0 byte file", FilesList[i].c_str());
b_valid = false; b_valid = false;
return; return;
} }
File::IOFile fpRawSaveFile(FilesList[i], "rb"); File::IOFile fpRawSaveFile(FilesList[i], "rb");
if (!fpRawSaveFile) if (!fpRawSaveFile)
{ {
PanicAlertT("%s failed to open", FilesList[i].c_str()); ERROR_LOG(CONSOLE, "%s failed to open", FilesList[i].c_str());
b_valid = false; b_valid = false;
} }
@ -432,7 +436,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles()
memset(&_data[0], 0, _roundedfileSize); memset(&_data[0], 0, _roundedfileSize);
if (!fpRawSaveFile.ReadBytes(&_data[0], _fileSize)) if (!fpRawSaveFile.ReadBytes(&_data[0], _fileSize))
{ {
PanicAlertT("Failed to read data from file: %s", FilesList[i].c_str()); ERROR_LOG(CONSOLE, "Failed to read data from file: %s", FilesList[i].c_str());
b_valid = false; b_valid = false;
} }
@ -440,7 +444,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles()
File::IOFile fpData_bin(encryptedSavePath, "ab"); File::IOFile fpData_bin(encryptedSavePath, "ab");
if (!fpData_bin.WriteBytes(&_encryptedData[0], _roundedfileSize)) if (!fpData_bin.WriteBytes(&_encryptedData[0], _roundedfileSize))
PanicAlertT("Failed to write data to file: %s", encryptedSavePath.c_str()); ERROR_LOG(CONSOLE, "Failed to write data to file: %s", encryptedSavePath.c_str());
} }
@ -561,21 +565,21 @@ bool CWiiSaveCrypted::getPaths(bool forExport)
if (!File::IsDirectory(WiiTitlePath)) if (!File::IsDirectory(WiiTitlePath))
{ {
b_valid = false; b_valid = false;
PanicAlertT("No save folder found for title %s", GameID); ERROR_LOG(CONSOLE, "No save folder found for title %s", GameID);
return false; return false;
} }
if (!File::Exists(WiiTitlePath + "banner.bin")) if (!File::Exists(WiiTitlePath + "banner.bin"))
{ {
b_valid = false; b_valid = false;
PanicAlertT("No banner file found for title %s", GameID); ERROR_LOG(CONSOLE, "No banner file found for title %s", GameID);
return false; return false;
} }
if (encryptedSavePath.length() == 0) if (encryptedSavePath.length() == 0)
{ {
encryptedSavePath = File::GetUserPath(D_USER_IDX); // If no path was passed, use User folder encryptedSavePath = File::GetUserPath(D_USER_IDX); // If no path was passed, use User folder
} }
encryptedSavePath += StringFromFormat("/private/wii/title/%s/data.bin", GameID); encryptedSavePath += StringFromFormat("private/wii/title/%s/data.bin", GameID);
File::CreateFullPath(encryptedSavePath); File::CreateFullPath(encryptedSavePath);
} }
else else
@ -593,7 +597,7 @@ void CWiiSaveCrypted::ScanForFiles(std::string savDir, std::vector<std::string>&
*_numFiles = *_sizeFiles = 0; *_numFiles = *_sizeFiles = 0;
Directories.push_back(savDir); Directories.push_back(savDir);
for (u32 i = 0; i < Directories.size(); i++) for (u32 i = 0; i < Directories.size(); ++i)
{ {
if (i != 0) if (i != 0)
{ {
@ -612,7 +616,7 @@ void CWiiSaveCrypted::ScanForFiles(std::string savDir, std::vector<std::string>&
{ {
if ((elem.virtualName == "nocopy") || elem.virtualName == "nomove") if ((elem.virtualName == "nocopy") || elem.virtualName == "nomove")
{ {
PanicAlertT("This save will likely require homebrew tools to copy to a real Wii."); NOTICE_LOG(CONSOLE, "This save will likely require homebrew tools to copy to a real Wii.");
} }
Directories.push_back(elem.physicalName); Directories.push_back(elem.physicalName);