1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 12:03:07 +01:00

Remove unused sawyercoding functions

This commit is contained in:
Ted John
2017-02-11 12:57:42 +00:00
parent 7671b21682
commit 216dda634b
2 changed files with 0 additions and 109 deletions

View File

@@ -40,111 +40,6 @@ uint32 sawyercoding_calculate_checksum(const uint8* buffer, size_t length)
return checksum;
}
/**
*
* rct2: 0x00676FD2
*/
sint32 sawyercoding_validate_checksum(SDL_RWops* rw)
{
size_t i, dataSize;
uint32 checksum, fileChecksum;
uint8 buffer[1024];
// Get data size
SDL_RWseek(rw, 0, RW_SEEK_END);
// for whatever the reason, SDL_RWtell return Sint64 instead of size_t.
dataSize = (size_t)SDL_RWtell(rw);
if (dataSize < 8)
return 0;
dataSize -= 4;
// Calculate checksum
SDL_RWseek(rw, 0, RW_SEEK_SET);
checksum = 0;
do {
size_t bufferSize = min(dataSize, 1024);
if (SDL_RWread(rw, buffer, bufferSize, 1) != 1)
return 0;
for (i = 0; i < bufferSize; i++)
checksum += buffer[i];
dataSize -= bufferSize;
} while (dataSize != 0);
// Read file checksum
if (SDL_RWread(rw, &fileChecksum, sizeof(fileChecksum), 1) != 1)
return 0;
// Reset file position
SDL_RWseek(rw, 0, RW_SEEK_SET);
// Validate
return checksum == fileChecksum;
}
bool sawyercoding_read_chunk_safe(SDL_RWops *rw, void *dst, size_t dstLength)
{
// Allocate 16 MB to store uncompressed data
uint8 *tempBuffer = malloc(16 * 1024 * 1024);
size_t uncompressedLength = sawyercoding_read_chunk_with_size(rw, tempBuffer, 16 * 1024 * 1024);
if (uncompressedLength == SIZE_MAX) {
free(tempBuffer);
return false;
} else {
memcpy(dst, tempBuffer, min(dstLength, uncompressedLength));
free(tempBuffer);
return true;
}
}
bool sawyercoding_skip_chunk(SDL_RWops *rw)
{
// Read chunk header
sawyercoding_chunk_header chunkHeader;
if (SDL_RWread(rw, &chunkHeader, sizeof(sawyercoding_chunk_header), 1) != 1) {
log_error("Unable to read chunk header!");
return false;
}
// Skip chunk data
SDL_RWseek(rw, chunkHeader.length, RW_SEEK_CUR);
return true;
}
/**
*
* rct2: 0x0067685F
* buffer (esi)
*/
size_t sawyercoding_read_chunk_with_size(SDL_RWops* rw, uint8 *buffer, const size_t buffer_size)
{
sawyercoding_chunk_header chunkHeader;
// Read chunk header
if (SDL_RWread(rw, &chunkHeader, sizeof(sawyercoding_chunk_header), 1) != 1) {
log_error("Unable to read chunk header!");
return -1;
}
uint8* src_buffer = malloc(chunkHeader.length);
if (src_buffer == NULL) {
log_error("Unable to read chunk data!");
return -1;
}
// Read chunk data
if (SDL_RWread(rw, src_buffer, chunkHeader.length, 1) != 1) {
free(src_buffer);
log_error("Unable to read chunk data!");
return -1;
}
// Decode chunk data
size_t data_size = sawyercoding_read_chunk_buffer(buffer, src_buffer, chunkHeader, buffer_size);
free(src_buffer);
return data_size;
}
size_t sawyercoding_read_chunk_buffer(uint8 *dst_buffer, const uint8 *src_buffer, sawyercoding_chunk_header chunkHeader, size_t dst_buffer_size) {
switch (chunkHeader.encoding) {
case CHUNK_ENCODING_NONE:

View File

@@ -49,11 +49,7 @@ enum {
FILE_TYPE_SC4 = (2 << 2)
};
sint32 sawyercoding_validate_checksum(SDL_RWops* rw);
uint32 sawyercoding_calculate_checksum(const uint8* buffer, size_t length);
bool sawyercoding_read_chunk_safe(SDL_RWops *rw, void *dst, size_t dstLength);
bool sawyercoding_skip_chunk(SDL_RWops *rw);
size_t sawyercoding_read_chunk_with_size(SDL_RWops* rw, uint8 *buffer, const size_t buffer_size);
size_t sawyercoding_read_chunk_buffer(uint8 *dst_buffer, const uint8 *src_buffer, sawyercoding_chunk_header chunkHeader, size_t dst_buffer_size);
size_t sawyercoding_write_chunk_buffer(uint8 *dst_file, const uint8 *src_buffer, sawyercoding_chunk_header chunkHeader);
size_t sawyercoding_decode_sv4(const uint8 *src, uint8 *dst, size_t length, size_t bufferLength);