From d45a50274c37b451669dc806870f16fa409eb667 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 1 Apr 2017 19:57:30 +0100 Subject: [PATCH] Replace SDL with normal fopen in cmdline_sprite.c --- src/openrct2/cmdline_sprite.c | 56 ++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/src/openrct2/cmdline_sprite.c b/src/openrct2/cmdline_sprite.c index 3f8deffef4..9d2588c416 100644 --- a/src/openrct2/cmdline_sprite.c +++ b/src/openrct2/cmdline_sprite.c @@ -20,8 +20,8 @@ #include "cmdline_sprite.h" #include "drawing/drawing.h" #include "Imaging.h" +#include "localisation/localisation.h" #include "OpenRCT2.h" -#include "platform/platform.h" #include "util/util.h" #define MODE_DEFAULT 0 @@ -61,6 +61,22 @@ rct_sprite_file_header spriteFileHeader; rct_g1_element *spriteFileEntries; uint8 *spriteFileData; +#ifdef _WIN32 + +static FILE * fopen_utf8(const char * path, const char * mode) +{ + wchar_t * pathW = utf8_to_widechar(path); + wchar_t * modeW = utf8_to_widechar(mode); + FILE * file = _wfopen(pathW, modeW); + free(pathW); + free(modeW); + return file; +} + +#define fopen fopen_utf8 + +#endif + static void sprite_file_load_palette(sint32 spriteIndex) { rct_g1_element *g1 = &spriteFileEntries[spriteIndex]; @@ -90,14 +106,12 @@ static void sprite_entries_make_relative() static bool sprite_file_open(const utf8 *path) { - SDL_RWops *file; - - file = SDL_RWFromFile(path, "rb"); + FILE * file = fopen(path, "rb"); if (file == NULL) return false; - if (SDL_RWread(file, &spriteFileHeader, sizeof(rct_sprite_file_header), 1) != 1) { - SDL_RWclose(file); + if (fread(&spriteFileHeader, sizeof(rct_sprite_file_header), 1, file) != 1) { + fclose(file); return false; } @@ -105,21 +119,21 @@ static bool sprite_file_open(const utf8 *path) sint32 openEntryTableSize = spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit); rct_g1_element_32bit * openElements = (rct_g1_element_32bit *)malloc(openEntryTableSize); if (openElements == NULL) { - SDL_RWclose(file); + fclose(file); return false; } - if (SDL_RWread(file, openElements, openEntryTableSize, 1) != 1) { + if (fread(openElements, openEntryTableSize, 1, file) != 1) { free(openElements); - SDL_RWclose(file); + fclose(file); return false; } spriteFileData = malloc(spriteFileHeader.total_size); - if (SDL_RWread(file, spriteFileData, spriteFileHeader.total_size, 1) != 1) { + if (fread(spriteFileData, spriteFileHeader.total_size, 1, file) != 1) { free(spriteFileData); free(openElements); - SDL_RWclose(file); + fclose(file); return false; } @@ -141,18 +155,18 @@ static bool sprite_file_open(const utf8 *path) free(openElements); } - SDL_RWclose(file); + fclose(file); return true; } static bool sprite_file_save(const char *path) { - SDL_RWops *file = SDL_RWFromFile(path, "wb"); + FILE * file = fopen(path, "wb"); if (file == NULL) return false; - if (SDL_RWwrite(file, &spriteFileHeader, sizeof(rct_sprite_file_header), 1) != 1) { - SDL_RWclose(file); + if (fwrite(&spriteFileHeader, sizeof(rct_sprite_file_header), 1, file) != 1) { + fclose(file); return false; } @@ -160,7 +174,7 @@ static bool sprite_file_save(const char *path) sint32 saveEntryTableSize = spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit); rct_g1_element_32bit * saveElements = (rct_g1_element_32bit *)malloc(saveEntryTableSize); if (saveElements == NULL) { - SDL_RWclose(file); + fclose(file); return false; } @@ -177,20 +191,20 @@ static bool sprite_file_save(const char *path) outElement->zoomed_offset = inElement->zoomed_offset; } - if (SDL_RWwrite(file, saveElements, saveEntryTableSize, 1) != 1) { + if (fwrite(saveElements, saveEntryTableSize, 1, file) != 1) { free(saveElements); - SDL_RWclose(file); + fclose(file); return false; } free(saveElements); - if (SDL_RWwrite(file, spriteFileData, spriteFileHeader.total_size, 1) != 1) { - SDL_RWclose(file); + if (fwrite(spriteFileData, spriteFileHeader.total_size, 1, file) != 1) { + fclose(file); return false; } } - SDL_RWclose(file); + fclose(file); return true; }