mirror of https://github.com/PCSX2/pcsx2.git
FolderMemoryCard: Cleaned filenames should be used for directories, as well.
This commit is contained in:
parent
65058df3da
commit
fbc8d30b67
|
@ -339,18 +339,20 @@ bool FolderMemoryCard::AddFolder( MemoryCardFileEntry* const dirEntry, const wxS
|
||||||
metaFileName.AppendDir( fileName );
|
metaFileName.AppendDir( fileName );
|
||||||
wxFFile metaFile;
|
wxFFile metaFile;
|
||||||
if ( metaFileName.FileExists() && metaFile.Open( metaFileName.GetFullPath(), L"rb" ) ) {
|
if ( metaFileName.FileExists() && metaFile.Open( metaFileName.GetFullPath(), L"rb" ) ) {
|
||||||
metaFile.Read( &newDirEntry->entry.raw, 0x40 );
|
size_t bytesRead = metaFile.Read( &newDirEntry->entry.raw, sizeof( newDirEntry->entry.raw ) );
|
||||||
metaFile.Close();
|
metaFile.Close();
|
||||||
|
if ( bytesRead < 0x60 ) {
|
||||||
|
strcpy( (char*)&newDirEntry->entry.data.name[0], fileName.mbc_str() );
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
newDirEntry->entry.data.mode = MemoryCardFileEntry::DefaultDirMode;
|
newDirEntry->entry.data.mode = MemoryCardFileEntry::DefaultDirMode;
|
||||||
newDirEntry->entry.data.timeCreated = MemoryCardFileEntryDateTime::FromWxDateTime( creationTime );
|
newDirEntry->entry.data.timeCreated = MemoryCardFileEntryDateTime::FromWxDateTime( creationTime );
|
||||||
newDirEntry->entry.data.timeModified = MemoryCardFileEntryDateTime::FromWxDateTime( modificationTime );
|
newDirEntry->entry.data.timeModified = MemoryCardFileEntryDateTime::FromWxDateTime( modificationTime );
|
||||||
|
strcpy( (char*)&newDirEntry->entry.data.name[0], fileName.mbc_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
newDirEntry->entry.data.length = 2;
|
|
||||||
strcpy( (char*)&newDirEntry->entry.data.name[0], fileName.mbc_str() );
|
|
||||||
|
|
||||||
// create new cluster for . and .. entries
|
// create new cluster for . and .. entries
|
||||||
|
newDirEntry->entry.data.length = 2;
|
||||||
u32 newCluster = GetFreeDataCluster();
|
u32 newCluster = GetFreeDataCluster();
|
||||||
m_fat.data[0][0][newCluster] = 0xFFFFFFFF;
|
m_fat.data[0][0][newCluster] = 0xFFFFFFFF;
|
||||||
newDirEntry->entry.data.cluster = newCluster;
|
newDirEntry->entry.data.cluster = newCluster;
|
||||||
|
@ -861,18 +863,21 @@ void FolderMemoryCard::FlushFileEntries( const u32 dirCluster, const u32 remaini
|
||||||
MemoryCardFileEntry* entry = &entries->entries[i];
|
MemoryCardFileEntry* entry = &entries->entries[i];
|
||||||
if ( entry->IsValid() && entry->IsUsed() && entry->IsDir() ) {
|
if ( entry->IsValid() && entry->IsUsed() && entry->IsDir() ) {
|
||||||
if ( !entry->IsDotDir() ) {
|
if ( !entry->IsDotDir() ) {
|
||||||
const wxString subDirName = wxString::FromAscii( (const char*)entry->entry.data.name );
|
char cleanName[sizeof( entry->entry.data.name )];
|
||||||
|
memcpy( cleanName, (const char*)entry->entry.data.name, sizeof( cleanName ) );
|
||||||
|
bool filenameCleaned = FileAccessHelper::CleanMemcardFilename( cleanName );
|
||||||
|
const wxString subDirName = wxString::FromAscii( (const char*)cleanName );
|
||||||
const wxString subDirPath = dirPath + L"/" + subDirName;
|
const wxString subDirPath = dirPath + L"/" + subDirName;
|
||||||
|
|
||||||
// if this directory has nonstandard metadata, write that to the file system
|
// if this directory has nonstandard metadata, write that to the file system
|
||||||
wxFileName metaFileName( m_folderName.GetFullPath() + subDirPath + L"/_pcsx2_meta_directory" );
|
wxFileName metaFileName( m_folderName.GetFullPath() + subDirPath + L"/_pcsx2_meta_directory" );
|
||||||
if ( entry->entry.data.mode != MemoryCardFileEntry::DefaultDirMode || entry->entry.data.attr != 0 ) {
|
if ( filenameCleaned || entry->entry.data.mode != MemoryCardFileEntry::DefaultDirMode || entry->entry.data.attr != 0 ) {
|
||||||
if ( !metaFileName.DirExists() ) {
|
if ( !metaFileName.DirExists() ) {
|
||||||
metaFileName.Mkdir();
|
metaFileName.Mkdir();
|
||||||
}
|
}
|
||||||
wxFFile metaFile( metaFileName.GetFullPath(), L"wb" );
|
wxFFile metaFile( metaFileName.GetFullPath(), L"wb" );
|
||||||
if ( metaFile.IsOpened() ) {
|
if ( metaFile.IsOpened() ) {
|
||||||
metaFile.Write( entry->entry.raw, 0x40 );
|
metaFile.Write( entry->entry.raw, sizeof( entry->entry.raw ) );
|
||||||
metaFile.Close();
|
metaFile.Close();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue