Provide remove compatibility layer

This commit is contained in:
Alexander Batalov 2022-06-18 09:02:15 +03:00
parent bd90b57312
commit 83417b2d6a
5 changed files with 21 additions and 12 deletions

View File

@ -237,7 +237,7 @@ void automapExit()
if (configGetString(&gGameConfig, GAME_CONFIG_SYSTEM_KEY, GAME_CONFIG_MASTER_PATCHES_KEY, &masterPatchesPath)) { if (configGetString(&gGameConfig, GAME_CONFIG_SYSTEM_KEY, GAME_CONFIG_MASTER_PATCHES_KEY, &masterPatchesPath)) {
char path[COMPAT_MAX_PATH]; char path[COMPAT_MAX_PATH];
sprintf(path, "%s\\%s\\%s", masterPatchesPath, "MAPS", AUTOMAP_DB); sprintf(path, "%s\\%s\\%s", masterPatchesPath, "MAPS", AUTOMAP_DB);
remove(path); compat_remove(path);
} }
} }
@ -774,7 +774,7 @@ int automapSaveCurrent()
// NOTE: Not sure about the size. // NOTE: Not sure about the size.
char automapDbPath[512]; char automapDbPath[512];
sprintf(automapDbPath, "%s\\%s\\%s", masterPatchesPath, "MAPS", AUTOMAP_DB); sprintf(automapDbPath, "%s\\%s\\%s", masterPatchesPath, "MAPS", AUTOMAP_DB);
if (remove(automapDbPath) != 0) { if (compat_remove(automapDbPath) != 0) {
debugPrint("\nAUTOMAP: Error removing database!\n"); debugPrint("\nAUTOMAP: Error removing database!\n");
return -1; return -1;
} }

View File

@ -1857,7 +1857,7 @@ void gameSoundDeleteOldMusicFile()
if (_background_fname_copied[0] != '\0') { if (_background_fname_copied[0] != '\0') {
char path[COMPAT_MAX_PATH]; char path[COMPAT_MAX_PATH];
sprintf(path, "%s%s%s", "sound\\music\\", _background_fname_copied, ".ACM"); sprintf(path, "%s%s%s", "sound\\music\\", _background_fname_copied, ".ACM");
if (remove(path)) { if (compat_remove(path)) {
if (gGameSoundDebugEnabled) { if (gGameSoundDebugEnabled) {
debugPrint("Deleting old music file failed.\n"); debugPrint("Deleting old music file failed.\n");
} }

View File

@ -2192,7 +2192,7 @@ int _GameMap2Slot(File* stream)
sprintf(_gmpath, "%s\\%s\\%s%.2d\\", _patches, "SAVEGAME", "SLOT", _slot_cursor + 1); sprintf(_gmpath, "%s\\%s\\%s%.2d\\", _patches, "SAVEGAME", "SLOT", _slot_cursor + 1);
_strmfe(_str0, "AUTOMAP.DB", "SAV"); _strmfe(_str0, "AUTOMAP.DB", "SAV");
strcat(_gmpath, _str0); strcat(_gmpath, _str0);
remove(_gmpath); compat_remove(_gmpath);
for (int index = 0; index < fileNameListLength; index += 1) { for (int index = 0; index < fileNameListLength; index += 1) {
char* string = fileNameList[index]; char* string = fileNameList[index];
@ -2281,7 +2281,7 @@ int _SlotMap2Game(File* stream)
} }
sprintf(_str0, "%s\\%s\\%s", _patches, "MAPS", "AUTOMAP.DB"); sprintf(_str0, "%s\\%s\\%s", _patches, "MAPS", "AUTOMAP.DB");
remove(_str0); compat_remove(_str0);
if (gPartyMemberDescriptionsLength > 1) { if (gPartyMemberDescriptionsLength > 1) {
for (int index = 1; index < gPartyMemberDescriptionsLength; index += 1) { for (int index = 1; index < gPartyMemberDescriptionsLength; index += 1) {
@ -2463,7 +2463,7 @@ int _MapDirErase(const char* relativePath, const char* extension)
int fileListLength = fileNameListInit(path, &fileList, 0, 0); int fileListLength = fileNameListInit(path, &fileList, 0, 0);
while (--fileListLength >= 0) { while (--fileListLength >= 0) {
sprintf(path, "%s\\%s%s", _patches, relativePath, fileList[fileListLength]); sprintf(path, "%s\\%s%s", _patches, relativePath, fileList[fileListLength]);
remove(path); compat_remove(path);
} }
fileNameListFree(&fileList, 0); fileNameListFree(&fileList, 0);
@ -2476,7 +2476,7 @@ int _MapDirEraseFile_(const char* a1, const char* a2)
char path[COMPAT_MAX_PATH]; char path[COMPAT_MAX_PATH];
sprintf(path, "%s\\%s%s", _patches, a1, a2); sprintf(path, "%s\\%s%s", _patches, a1, a2);
if (remove(path) != 0) { if (compat_remove(path) != 0) {
return -1; return -1;
} }
@ -2565,7 +2565,7 @@ int _RestoreSave()
strcpy(_str0, _gmpath); strcpy(_str0, _gmpath);
strcat(_str0, "SAVE.DAT"); strcat(_str0, "SAVE.DAT");
_strmfe(_str1, _str0, "BAK"); _strmfe(_str1, _str0, "BAK");
remove(_str0); compat_remove(_str0);
if (rename(_str1, _str0) != 0) { if (rename(_str1, _str0) != 0) {
_EraseSave(); _EraseSave();
@ -2593,7 +2593,7 @@ int _RestoreSave()
strcpy(_str0, _gmpath); strcpy(_str0, _gmpath);
strcat(_str0, fileList[index]); strcat(_str0, fileList[index]);
_strmfe(_str1, _str0, "SAV"); _strmfe(_str1, _str0, "SAV");
remove(_str1); compat_remove(_str1);
if (rename(_str0, _str1) != 0) { if (rename(_str0, _str1) != 0) {
// FIXME: Probably leaks fileList. // FIXME: Probably leaks fileList.
_EraseSave(); _EraseSave();
@ -2652,7 +2652,7 @@ int _EraseSave()
sprintf(_gmpath, "%s\\%s\\%s%.2d\\", _patches, "SAVEGAME", "SLOT", _slot_cursor + 1); sprintf(_gmpath, "%s\\%s\\%s%.2d\\", _patches, "SAVEGAME", "SLOT", _slot_cursor + 1);
strcpy(_str0, _gmpath); strcpy(_str0, _gmpath);
strcat(_str0, "SAVE.DAT"); strcat(_str0, "SAVE.DAT");
remove(_str0); compat_remove(_str0);
sprintf(_gmpath, "%s\\%s%.2d\\", "SAVEGAME", "SLOT", _slot_cursor + 1); sprintf(_gmpath, "%s\\%s%.2d\\", "SAVEGAME", "SLOT", _slot_cursor + 1);
sprintf(_str0, "%s*.%s", _gmpath, "SAV"); sprintf(_str0, "%s*.%s", _gmpath, "SAV");
@ -2667,7 +2667,7 @@ int _EraseSave()
for (int index = fileListLength - 1; index >= 0; index--) { for (int index = fileListLength - 1; index >= 0; index--) {
strcpy(_str0, _gmpath); strcpy(_str0, _gmpath);
strcat(_str0, fileList[index]); strcat(_str0, fileList[index]);
remove(_str0); compat_remove(_str0);
} }
fileNameListFree(&fileList, 0); fileNameListFree(&fileList, 0);
@ -2678,7 +2678,7 @@ int _EraseSave()
strcpy(_str0, _gmpath); strcpy(_str0, _gmpath);
strcat(_str0, v1); strcat(_str0, v1);
remove(_str0); compat_remove(_str0);
return 0; return 0;
} }

View File

@ -171,6 +171,14 @@ gzFile compat_gzopen(const char* path, const char* mode)
return gzopen(nativePath, mode); return gzopen(nativePath, mode);
} }
int compat_remove(const char* path)
{
char nativePath[COMPAT_MAX_PATH];
strcpy(nativePath, path);
compat_windows_path_to_native(nativePath);
return remove(nativePath);
}
void compat_windows_path_to_native(char* path) void compat_windows_path_to_native(char* path)
{ {
#ifndef _WIN32 #ifndef _WIN32

View File

@ -36,6 +36,7 @@ int compat_mkdir(const char* path);
unsigned int compat_timeGetTime(); unsigned int compat_timeGetTime();
FILE* compat_fopen(const char* path, const char* mode); FILE* compat_fopen(const char* path, const char* mode);
gzFile compat_gzopen(const char* path, const char* mode); gzFile compat_gzopen(const char* path, const char* mode);
int compat_remove(const char* path);
void compat_windows_path_to_native(char* path); void compat_windows_path_to_native(char* path);
#endif /* PLATFORM_COMPAT_H */ #endif /* PLATFORM_COMPAT_H */