mirror of
https://github.com/libretro/RetroArch.git
synced 2025-04-02 10:51:52 -04:00
Move crc32_calculate to file_archive_zlib.c
This commit is contained in:
parent
d53a0c5994
commit
aae1faf76f
8 changed files with 53 additions and 23 deletions
|
@ -76,6 +76,8 @@ static bool read_content_file(unsigned i, const char *path, void **buf,
|
|||
{
|
||||
#ifdef HAVE_ZLIB
|
||||
uint32_t *content_crc_ptr = NULL;
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
uint8_t *ret_buf = NULL;
|
||||
global_t *global = global_get_ptr();
|
||||
|
@ -97,8 +99,7 @@ static bool read_content_file(unsigned i, const char *path, void **buf,
|
|||
|
||||
#ifdef HAVE_ZLIB
|
||||
content_ctl(CONTENT_CTL_GET_CRC, &content_crc_ptr);
|
||||
|
||||
*content_crc_ptr = file_archive_crc32_calculate(0, ret_buf, *length);
|
||||
*content_crc_ptr = stream_backend->stream_crc_calculate(0, ret_buf, *length);
|
||||
|
||||
RARCH_LOG("CRC32: 0x%x .\n", (unsigned)*content_crc_ptr);
|
||||
#endif
|
||||
|
|
|
@ -403,7 +403,7 @@ static int zip_file_decompressed(const char *name, const char *valid_exts,
|
|||
ret = handle.backend->stream_decompress_data_to_file_iterate(handle.stream);
|
||||
}while(ret == 0);
|
||||
|
||||
handle.real_checksum = file_archive_crc32_calculate(0, handle.data, size);
|
||||
handle.real_checksum = handle.backend->stream_crc_calculate(0, handle.data, size);
|
||||
|
||||
if (handle.real_checksum != crc32)
|
||||
{
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
#endif
|
||||
|
||||
#include <compat/strl.h>
|
||||
#include <compat/zlib.h>
|
||||
#include <file/file_archive.h>
|
||||
#include <file/file_path.h>
|
||||
#include <retro_file.h>
|
||||
|
@ -399,14 +398,6 @@ static int file_archive_parse_file_init(zlib_transfer_t *state,
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint32_t file_archive_crc32_calculate(
|
||||
uint32_t crc,
|
||||
const uint8_t *data,
|
||||
size_t length)
|
||||
{
|
||||
return crc32(crc, data, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* file_archive_inflate_data_to_file:
|
||||
* @path : filename path of archive.
|
||||
|
@ -443,7 +434,7 @@ int file_archive_inflate_data_to_file(
|
|||
goto end;
|
||||
}
|
||||
|
||||
handle->real_checksum = file_archive_crc32_calculate(
|
||||
handle->real_checksum = handle->backend->stream_crc_calculate(
|
||||
0, handle->data, size);
|
||||
|
||||
#if 0
|
||||
|
|
|
@ -188,6 +188,12 @@ static void zlib_stream_compress_init(void *data, int level)
|
|||
deflateInit(stream, level);
|
||||
}
|
||||
|
||||
static uint32_t zlib_stream_crc32_calculate(uint32_t crc,
|
||||
const uint8_t *data, size_t length)
|
||||
{
|
||||
return crc32(crc, data, length);
|
||||
}
|
||||
|
||||
const struct zlib_file_backend zlib_backend = {
|
||||
zlib_stream_new,
|
||||
zlib_stream_free,
|
||||
|
@ -202,5 +208,6 @@ const struct zlib_file_backend zlib_backend = {
|
|||
zlib_stream_compress_init,
|
||||
zlib_stream_compress_free,
|
||||
zlib_stream_compress_data_to_file,
|
||||
zlib_stream_crc32_calculate,
|
||||
"zlib"
|
||||
};
|
||||
|
|
|
@ -48,7 +48,9 @@ static void dword_write_be(uint8_t *buf, uint32_t val)
|
|||
static bool png_write_crc(RFILE *file, const uint8_t *data, size_t size)
|
||||
{
|
||||
uint8_t crc_raw[4] = {0};
|
||||
uint32_t crc = file_archive_crc32_calculate(0, data, size);
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
uint32_t crc = stream_backend->stream_crc_calculate(0, data, size);
|
||||
|
||||
dword_write_be(crc_raw, crc);
|
||||
return retro_fwrite(file, crc_raw, sizeof(crc_raw)) == sizeof(crc_raw);
|
||||
|
|
|
@ -62,6 +62,7 @@ struct zlib_file_backend
|
|||
void (*stream_compress_init)(void *, int);
|
||||
void (*stream_compress_free)(void *);
|
||||
int (*stream_compress_data_to_file)(void *);
|
||||
uint32_t (*stream_crc_calculate)(uint32_t, const uint8_t *, size_t);
|
||||
const char *ident;
|
||||
};
|
||||
|
||||
|
@ -82,8 +83,6 @@ typedef int (*file_archive_file_cb)(const char *name, const char *valid_exts,
|
|||
const uint8_t *cdata, unsigned cmode, uint32_t csize, uint32_t size,
|
||||
uint32_t crc32, void *userdata);
|
||||
|
||||
uint32_t file_archive_crc32_calculate(uint32_t crc, const uint8_t *data, size_t length);
|
||||
|
||||
/**
|
||||
* zlib_parse_file:
|
||||
* @file : filename path of archive
|
||||
|
|
38
patch.c
38
patch.c
|
@ -55,7 +55,10 @@ static uint8_t bps_read(struct bps_data *bps)
|
|||
{
|
||||
uint8_t data = bps->modify_data[bps->modify_offset++];
|
||||
#ifdef HAVE_ZLIB
|
||||
bps->modify_checksum = ~file_archive_crc32_calculate(~bps->modify_checksum, &data, 1);
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
bps->modify_checksum = ~stream_backend->stream_crc_calculate(
|
||||
~bps->modify_checksum, &data, 1);
|
||||
#endif
|
||||
return data;
|
||||
}
|
||||
|
@ -79,12 +82,16 @@ static uint64_t bps_decode(struct bps_data *bps)
|
|||
|
||||
static void bps_write(struct bps_data *bps, uint8_t data)
|
||||
{
|
||||
#ifdef HAVE_ZLIB
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
if (!bps)
|
||||
return;
|
||||
|
||||
bps->target_data[bps->output_offset++] = data;
|
||||
#ifdef HAVE_ZLIB
|
||||
bps->target_checksum = ~file_archive_crc32_calculate(~bps->target_checksum, &data, 1);
|
||||
bps->target_checksum = ~stream_backend->stream_crc_calculate(~bps->target_checksum, &data, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -99,6 +106,10 @@ patch_error_t bps_apply_patch(
|
|||
struct bps_data bps = {0};
|
||||
uint32_t modify_source_checksum = 0, modify_target_checksum = 0,
|
||||
modify_modify_checksum = 0, checksum;
|
||||
#ifdef HAVE_ZLIB
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
|
||||
if (modify_length < 19)
|
||||
return PATCH_PATCH_TOO_SMALL;
|
||||
|
@ -186,7 +197,7 @@ patch_error_t bps_apply_patch(
|
|||
modify_modify_checksum |= bps_read(&bps) << i;
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
bps.source_checksum = file_archive_crc32_calculate(0, bps.source_data, bps.source_length);
|
||||
bps.source_checksum = stream_backend->stream_crc_calculate(0, bps.source_data, bps.source_length);
|
||||
#else
|
||||
return PATCH_PATCH_CHECKSUM_INVALID;
|
||||
#endif
|
||||
|
@ -216,11 +227,16 @@ struct ups_data
|
|||
|
||||
static uint8_t ups_patch_read(struct ups_data *data)
|
||||
{
|
||||
#ifdef HAVE_ZLIB
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
|
||||
if (data && data->patch_offset < data->patch_length)
|
||||
{
|
||||
uint8_t n = data->patch_data[data->patch_offset++];
|
||||
#ifdef HAVE_ZLIB
|
||||
data->patch_checksum = ~file_archive_crc32_calculate(~data->patch_checksum, &n, 1);
|
||||
data->patch_checksum = ~stream_backend->stream_crc_calculate(~data->patch_checksum, &n, 1);
|
||||
#endif
|
||||
return n;
|
||||
}
|
||||
|
@ -229,11 +245,16 @@ static uint8_t ups_patch_read(struct ups_data *data)
|
|||
|
||||
static uint8_t ups_source_read(struct ups_data *data)
|
||||
{
|
||||
#ifdef HAVE_ZLIB
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
|
||||
if (data && data->source_offset < data->source_length)
|
||||
{
|
||||
uint8_t n = data->source_data[data->source_offset++];
|
||||
#ifdef HAVE_ZLIB
|
||||
data->source_checksum = ~file_archive_crc32_calculate(~data->source_checksum, &n, 1);
|
||||
data->source_checksum = ~stream_backend->stream_crc_calculate(~data->source_checksum, &n, 1);
|
||||
#endif
|
||||
return n;
|
||||
}
|
||||
|
@ -242,11 +263,16 @@ static uint8_t ups_source_read(struct ups_data *data)
|
|||
|
||||
static void ups_target_write(struct ups_data *data, uint8_t n)
|
||||
{
|
||||
#ifdef HAVE_ZLIB
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
|
||||
if (data && data->target_offset < data->target_length)
|
||||
{
|
||||
data->target_data[data->target_offset] = n;
|
||||
#ifdef HAVE_ZLIB
|
||||
data->target_checksum = ~file_archive_crc32_calculate(~data->target_checksum, &n, 1);
|
||||
data->target_checksum = ~stream_backend->stream_crc_calculate(~data->target_checksum, &n, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -202,13 +202,17 @@ static int database_info_iterate_playlist(
|
|||
{
|
||||
ssize_t ret;
|
||||
int read_from = read_file(name, (void**)&db_state->buf, &ret);
|
||||
#ifdef HAVE_ZLIB
|
||||
const struct zlib_file_backend *stream_backend =
|
||||
file_archive_get_default_file_backend();
|
||||
#endif
|
||||
|
||||
if (read_from != 1 || ret <= 0)
|
||||
return 0;
|
||||
|
||||
|
||||
#ifdef HAVE_ZLIB
|
||||
db_state->crc = file_archive_crc32_calculate(0, db_state->buf, ret);
|
||||
db_state->crc = stream_backend->stream_crc_calculate(0, db_state->buf, ret);
|
||||
#endif
|
||||
db->type = DATABASE_TYPE_CRC_LOOKUP;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue