thorium/pak_src/pak_file_io.c
2022-02-11 12:39:10 -08:00

41 lines
1.1 KiB
C

#include "pak_file_io.h"
PakFile readFile(const char *fileName) {
PakFile file;
/* declare a file pointer */
FILE *filePtr = fopen(fileName, "rb");
/* quit if the file does not exist */
if (filePtr == NULL)
return NULL_File;
/* Get the number of bytes */
fseeko(filePtr, 0, SEEK_END);
file.size = (uint32_t) ftello(filePtr);
/* reset the file position indicator to
the beginning of the file */
fseeko(filePtr, 0, SEEK_SET);
/* grab sufficient memory for the
buffer to hold the text */
file.buffer = calloc(file.size + 1, sizeof(uint8_t));
/* memory error */
if (file.buffer == NULL)
return NULL_File;
/* copy all the text into the buffer */
fread(file.buffer, sizeof(uint8_t), file.size, filePtr);
fclose(filePtr);
return file;
}
bool writeFile(const char *fileName, const PakFile file) {
FILE *filePtr = fopen(fileName, "wb");
if (filePtr == NULL)
return false;
const size_t result = fwrite(file.buffer, sizeof(uint8_t), file.size, filePtr);
fclose(filePtr);
return (result == file.size);
}