GCMemcard: Use std::array for DEntry.m_filename.

This commit is contained in:
Admiral H. Curtiss 2018-11-18 19:13:42 +01:00
parent 443729d2c3
commit 0c638ad858
2 changed files with 15 additions and 10 deletions

View File

@ -371,7 +371,7 @@ u8 GCMemcard::TitlePresent(const DEntry& d) const
while (i < DIRLEN)
{
if ((BE32(CurrentDir->m_dir_entries[i].m_gamecode) == BE32(d.m_gamecode)) &&
(!memcmp(CurrentDir->m_dir_entries[i].m_filename, d.m_filename, 32)))
CurrentDir->m_dir_entries[i].m_filename == d.m_filename)
{
break;
}
@ -428,7 +428,9 @@ std::string GCMemcard::DEntry_FileName(u8 index) const
if (!m_valid || index >= DIRLEN)
return "";
return std::string((const char*)CurrentDir->m_dir_entries[index].m_filename, DENTRY_STRLEN);
return std::string(
reinterpret_cast<const char*>(CurrentDir->m_dir_entries[index].m_filename.data()),
CurrentDir->m_dir_entries[index].m_filename.size());
}
u32 GCMemcard::DEntry_ModTime(u8 index) const
@ -1317,7 +1319,7 @@ s32 GCMemcard::FZEROGX_MakeSaveGameValid(const Header& cardheader, const DEntry&
int block = 0;
// check for F-Zero GX system file
if (strcmp(reinterpret_cast<const char*>(direntry.m_filename), "f_zero.dat") != 0)
if (strcmp(reinterpret_cast<const char*>(direntry.m_filename.data()), "f_zero.dat") != 0)
return 0;
// get encrypted destination memory card serial numbers
@ -1371,10 +1373,10 @@ s32 GCMemcard::PSO_MakeSaveGameValid(const Header& cardheader, const DEntry& dir
u32 pso3offset = 0x00;
// check for PSO1&2 system file
if (strcmp(reinterpret_cast<const char*>(direntry.m_filename), "PSO_SYSTEM") != 0)
if (strcmp(reinterpret_cast<const char*>(direntry.m_filename.data()), "PSO_SYSTEM") != 0)
{
// check for PSO3 system file
if (strcmp(reinterpret_cast<const char*>(direntry.m_filename), "PSO3_SYSTEM") == 0)
if (strcmp(reinterpret_cast<const char*>(direntry.m_filename.data()), "PSO3_SYSTEM") == 0)
{
// PSO3 data block size adjustment
pso3offset = 0x10;

View File

@ -168,7 +168,8 @@ struct DEntry
std::string GCI_FileName() const
{
std::string filename = std::string((char*)m_makercode, 2) + '-' +
std::string((char*)m_gamecode, 4) + '-' + (char*)m_filename + ".gci";
std::string((char*)m_gamecode, 4) + '-' +
reinterpret_cast<const char*>(m_filename.data()) + ".gci";
return Common::EscapeFileName(filename);
}
@ -186,7 +187,7 @@ struct DEntry
// 10 RGB5A3 banner
// 11 ? maybe ==00? Time Splitters 2 and 3 have it and don't have banner
//
u8 m_filename[DENTRY_STRLEN]; // 0x08 0x20 Filename
std::array<u8, DENTRY_STRLEN> m_filename; // 0x08 0x20 Filename
Common::BigEndianValue<u32>
m_modification_time; // 0x28 0x04 Time of file's last modification in seconds since
// 12am, January 1st, 2000
@ -296,9 +297,11 @@ public:
bool LoadSaveBlocks();
bool HasCopyProtection() const
{
if ((strcmp((char*)m_gci_header.m_filename, "PSO_SYSTEM") == 0) ||
(strcmp((char*)m_gci_header.m_filename, "PSO3_SYSTEM") == 0) ||
(strcmp((char*)m_gci_header.m_filename, "f_zero.dat") == 0))
if ((strcmp(reinterpret_cast<const char*>(m_gci_header.m_filename.data()), "PSO_SYSTEM") ==
0) ||
(strcmp(reinterpret_cast<const char*>(m_gci_header.m_filename.data()), "PSO3_SYSTEM") ==
0) ||
(strcmp(reinterpret_cast<const char*>(m_gci_header.m_filename.data()), "f_zero.dat") == 0))
return true;
return false;
}