mirror of
https://github.com/Alex313031/thorium.git
synced 2025-01-10 11:57:48 -03:00
41 lines
1.1 KiB
C
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);
|
|
}
|