Fix ISO Directory extraction.

This commit is contained in:
Jordan Woyak
2014-06-29 14:22:06 -05:00
parent 91da031220
commit 3805c4967f
4 changed files with 52 additions and 71 deletions

View File

@ -307,28 +307,20 @@ size_t CFileSystemGCWii::BuildFilenames(const size_t _FirstIndex, const size_t _
while (CurrentIndex < _LastIndex)
{
SFileInfo *rFileInfo = &m_FileInfoVector[CurrentIndex];
u64 uOffset = _NameTableOffset + (rFileInfo->m_NameOffset & 0xFFFFFF);
std::string filename = GetStringFromOffset(uOffset);
SFileInfo& rFileInfo = m_FileInfoVector[CurrentIndex];
u64 const uOffset = _NameTableOffset + (rFileInfo.m_NameOffset & 0xFFFFFF);
rFileInfo.m_FullPath = _szDirectory + GetStringFromOffset(uOffset);
// check next index
if (rFileInfo->IsDirectory())
if (rFileInfo.IsDirectory())
{
if (_szDirectory.empty())
rFileInfo->m_FullPath += StringFromFormat("%s/", filename.c_str());
else
rFileInfo->m_FullPath += StringFromFormat("%s%s/", _szDirectory.c_str(), filename.c_str());
CurrentIndex = BuildFilenames(CurrentIndex + 1, (size_t) rFileInfo->m_FileSize, rFileInfo->m_FullPath, _NameTableOffset);
rFileInfo.m_FullPath += '/';
CurrentIndex = BuildFilenames(CurrentIndex + 1, (size_t) rFileInfo.m_FileSize, rFileInfo.m_FullPath, _NameTableOffset);
}
else // This is a filename
else
{
if (_szDirectory.empty())
rFileInfo->m_FullPath += filename;
else
rFileInfo->m_FullPath += StringFromFormat("%s%s", _szDirectory.c_str(), filename.c_str());
CurrentIndex++;
++CurrentIndex;
}
}