#include #include #include "readfile.h" char *readFile ( const char *fileName ) { SDL_IOStream *ioStream = SDL_IOFromFile(fileName, "rb"); if (!ioStream) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "ioStream: %s.", SDL_GetError()); exit(EXIT_FAILURE); } if (SDL_SeekIO(ioStream, 0, SDL_IO_SEEK_END) == -1) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "SDL_SeekIO_END: %s.", SDL_GetError()); exit(EXIT_FAILURE); } long len = SDL_TellIO(ioStream); if (len == -1) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "SDL_TellIO: %s.", SDL_GetError()); exit(EXIT_FAILURE); } if (SDL_SeekIO(ioStream, 0, SDL_IO_SEEK_SET) == -1) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "SDL_IO_SEEK_SET: %s.", SDL_GetError()); exit(EXIT_FAILURE); } char *res = SDL_malloc(len + 1); if (!res) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "SDL_malloc: %s.", SDL_GetError()); exit(EXIT_FAILURE); } if (SDL_ReadIO(ioStream, res, len) != (size_t)len) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "SDL_ReadIO: %s.", SDL_GetError()); exit(EXIT_FAILURE); } if (!SDL_CloseIO(ioStream)) { SDL_LogCritical(SDL_LOG_CATEGORY_ASSERT, "SDL_CloseIO: %s.", SDL_GetError()); exit(EXIT_FAILURE); } res[len] = 0; return res; }