Fix file deletion not working in web version

This commit is contained in:
elasota
2021-05-10 19:43:52 -04:00
parent c354d49e9f
commit 32d96798cc

View File

@@ -431,22 +431,22 @@ bool GpFileSystem_Web::ResolvePath(PortabilityLayer::VirtualDirectory_t virtualD
break; break;
case PortabilityLayer::VirtualDirectories::kHighScores: case PortabilityLayer::VirtualDirectories::kHighScores:
pathAppend = "HighScores"; pathAppend = "HighScores";
rootPath = &m_basePath; rootPath = &m_prefsPath;
isIDB = true; isIDB = true;
break; break;
case PortabilityLayer::VirtualDirectories::kUserData: case PortabilityLayer::VirtualDirectories::kUserData:
pathAppend = "Houses"; pathAppend = "Houses";
rootPath = &m_basePath; rootPath = &m_prefsPath;
isIDB = true; isIDB = true;
break; break;
case PortabilityLayer::VirtualDirectories::kUserSaves: case PortabilityLayer::VirtualDirectories::kUserSaves:
pathAppend = "SavedGames"; pathAppend = "SavedGames";
rootPath = &m_basePath; rootPath = &m_prefsPath;
isIDB = true; isIDB = true;
break; break;
case PortabilityLayer::VirtualDirectories::kPrefs: case PortabilityLayer::VirtualDirectories::kPrefs:
pathAppend = "Prefs"; pathAppend = "Prefs";
rootPath = &m_basePath; rootPath = &m_prefsPath;
isIDB = true; isIDB = true;
break; break;
case PortabilityLayer::VirtualDirectories::kSourceExport: case PortabilityLayer::VirtualDirectories::kSourceExport:
@@ -682,11 +682,12 @@ bool GpFileSystem_Web::DeleteFile(PortabilityLayer::VirtualDirectory_t virtualDi
if (unlink(resolvedPath.c_str()) < 0) if (unlink(resolvedPath.c_str()) < 0)
{ {
existed = (errno != ENOENT); existed = (errno != ENOENT);
if (existed && isIDB)
FlushFileSystem();
return false; return false;
} }
if (isIDB)
MarkFSStateDirty();
existed = true; existed = true;
return true; return true;
} }
@@ -854,7 +855,11 @@ void GpIOStream::Close()
bool IGpFileSystem::DeleteFile(PortabilityLayer::VirtualDirectory_t virtualDirectory, const char *path, bool &existed) bool IGpFileSystem::DeleteFile(PortabilityLayer::VirtualDirectory_t virtualDirectory, const char *path, bool &existed)
{ {
return static_cast<GpFileSystem_Web*>(this)->DeleteFile(virtualDirectory, path, existed); bool deleted = static_cast<GpFileSystem_Web*>(this)->DeleteFile(virtualDirectory, path, existed);
if (deleted)
GpFileSystem_Web::FlushFS();
return deleted;
} }
#endif #endif