--- previous/src/file.c 2018/04/24 19:27:27 1.1.1.3 +++ previous/src/file.c 2018/04/24 19:31:06 1.1.1.4 @@ -157,7 +157,7 @@ bool File_DoesFileNameEndWithSlash(char * or NULL for error. If pFileSize is non-NULL, read file size * is set to that. */ -Uint8 *File_Read(const char *pszFileName, long *pFileSize, const char * const ppszExts[]) +Uint8 *File_Load(const char *pszFileName, long *pFileSize, const char * const ppszExts[]) { char *filepath = NULL; Uint8 *pFile = NULL; @@ -578,6 +578,46 @@ FILE *File_Close(FILE *fp) /*-----------------------------------------------------------------------*/ /** + * Read data from given FILE pointer to buffer and return status + */ +bool File_Read(Uint8 *data, Uint32 size, Uint64 offset, FILE *fp) +{ + if (fseek(fp, offset, SEEK_SET)) + { + fprintf(stderr, "File seek failed:\n %s\n", strerror(errno)); + return false; + } + if (fread(data, size, 1, fp) != 1) + { + fprintf(stderr, "Error occured while reading file.\n"); + return false; + } + return true; +} + + +/*-----------------------------------------------------------------------*/ +/** + * Write data to given FILE pointer and return status + */ +bool File_Write(Uint8 *data, Uint32 size, Uint64 offset, FILE *fp) +{ + if (fseek(fp, offset, SEEK_SET)) + { + fprintf(stderr, "File seek failed:\n %s\n", strerror(errno)); + return false; + } + if (fwrite(data, size, 1, fp) != 1) + { + fprintf(stderr, "Error occured while writing file.\n"); + return false; + } + return true; +} + + +/*-----------------------------------------------------------------------*/ +/** * Check if input is available at the specified file descriptor. */ bool File_InputAvailable(FILE *fp) @@ -637,11 +677,6 @@ void File_MakeAbsoluteName(char *pFileNa char *pTempName; int inpos, outpos; -#if defined (__AMIGAOS4__) - /* This function does not work on Amiga OS */ - return; -#endif - inpos = 0; pTempName = malloc(FILENAME_MAX); if (!pTempName)