(libretro-db) Simplifications/cleanups
This commit is contained in:
parent
66ad277dc1
commit
6b21ad6f53
|
@ -169,26 +169,6 @@ clean:
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int libretrodb_read_index_header(RFILE *fd, libretrodb_index_t *idx)
|
|
||||||
{
|
|
||||||
uint64_t name_len = 50;
|
|
||||||
return rmsgpack_dom_read_into(fd,
|
|
||||||
"name", idx->name, &name_len,
|
|
||||||
"key_size", &idx->key_size,
|
|
||||||
"next", &idx->next, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void libretrodb_write_index_header(RFILE *fd, libretrodb_index_t *idx)
|
|
||||||
{
|
|
||||||
rmsgpack_write_map_header(fd, 3);
|
|
||||||
rmsgpack_write_string(fd, "name", STRLEN_CONST("name"));
|
|
||||||
rmsgpack_write_string(fd, idx->name, (uint32_t)strlen(idx->name));
|
|
||||||
rmsgpack_write_string(fd, "key_size", (uint32_t)STRLEN_CONST("key_size"));
|
|
||||||
rmsgpack_write_uint(fd, idx->key_size);
|
|
||||||
rmsgpack_write_string(fd, "next", STRLEN_CONST("next"));
|
|
||||||
rmsgpack_write_uint(fd, idx->next);
|
|
||||||
}
|
|
||||||
|
|
||||||
void libretrodb_close(libretrodb_t *db)
|
void libretrodb_close(libretrodb_t *db)
|
||||||
{
|
{
|
||||||
if (db->fd)
|
if (db->fd)
|
||||||
|
@ -251,7 +231,12 @@ static int libretrodb_find_index(libretrodb_t *db, const char *index_name,
|
||||||
/* TODO: this should use filestream_eof instead */
|
/* TODO: this should use filestream_eof instead */
|
||||||
while (offset < eof)
|
while (offset < eof)
|
||||||
{
|
{
|
||||||
libretrodb_read_index_header(db->fd, idx);
|
uint64_t name_len = 50;
|
||||||
|
/* Read index header */
|
||||||
|
rmsgpack_dom_read_into(db->fd,
|
||||||
|
"name", idx->name, &name_len,
|
||||||
|
"key_size", &idx->key_size,
|
||||||
|
"next", &idx->next, NULL);
|
||||||
|
|
||||||
if (strncmp(index_name, idx->name, strlen(idx->name)) == 0)
|
if (strncmp(index_name, idx->name, strlen(idx->name)) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -274,7 +259,7 @@ static int binsearch(const void *buff, const void *item,
|
||||||
|
|
||||||
if (rv == 0)
|
if (rv == 0)
|
||||||
{
|
{
|
||||||
*offset = *(uint64_t *)(current + field_size);
|
*offset = *(uint64_t *)(current + field_size);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +285,7 @@ int libretrodb_find_entry(libretrodb_t *db, const char *index_name,
|
||||||
if (libretrodb_find_index(db, index_name, &idx) < 0)
|
if (libretrodb_find_index(db, index_name, &idx) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
bufflen = idx.next;
|
bufflen = idx.next;
|
||||||
|
|
||||||
if (!(buff = malloc(bufflen)))
|
if (!(buff = malloc(bufflen)))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -469,9 +454,9 @@ int libretrodb_create_index(libretrodb_t *db,
|
||||||
if (!tree || (libretrodb_cursor_open(db, &cur, NULL) != 0))
|
if (!tree || (libretrodb_cursor_open(db, &cur, NULL) != 0))
|
||||||
goto clean;
|
goto clean;
|
||||||
|
|
||||||
key.type = RDT_STRING;
|
key.type = RDT_STRING;
|
||||||
key.val.string.len = (uint32_t)strlen(field_name);
|
key.val.string.len = (uint32_t)strlen(field_name);
|
||||||
key.val.string.buff = (char *) field_name; /* We know we aren't going to change it */
|
key.val.string.buff = (char *)field_name; /* We know we aren't going to change it */
|
||||||
|
|
||||||
while (libretrodb_cursor_read_item(&cur, &item) == 0)
|
while (libretrodb_cursor_read_item(&cur, &item) == 0)
|
||||||
{
|
{
|
||||||
|
@ -523,7 +508,15 @@ int libretrodb_create_index(libretrodb_t *db,
|
||||||
|
|
||||||
idx.key_size = field_size;
|
idx.key_size = field_size;
|
||||||
idx.next = db->count * (field_size + sizeof(uint64_t));
|
idx.next = db->count * (field_size + sizeof(uint64_t));
|
||||||
libretrodb_write_index_header(db->fd, &idx);
|
|
||||||
|
/* Write index header */
|
||||||
|
rmsgpack_write_map_header(db->fd, 3);
|
||||||
|
rmsgpack_write_string(db->fd, "name", STRLEN_CONST("name"));
|
||||||
|
rmsgpack_write_string(db->fd, idx.name, (uint32_t)strlen(idx.name));
|
||||||
|
rmsgpack_write_string(db->fd, "key_size", (uint32_t)STRLEN_CONST("key_size"));
|
||||||
|
rmsgpack_write_uint (db->fd, idx.key_size);
|
||||||
|
rmsgpack_write_string(db->fd, "next", STRLEN_CONST("next"));
|
||||||
|
rmsgpack_write_uint (db->fd, idx.next);
|
||||||
|
|
||||||
nictx.db = db;
|
nictx.db = db;
|
||||||
nictx.idx = &idx;
|
nictx.idx = &idx;
|
||||||
|
|
|
@ -405,22 +405,22 @@ static int rmsgpack_read_int(RFILE *fd, int64_t *out, size_t size)
|
||||||
|
|
||||||
static int rmsgpack_read_buff(RFILE *fd, size_t size, char **pbuff, uint64_t *len)
|
static int rmsgpack_read_buff(RFILE *fd, size_t size, char **pbuff, uint64_t *len)
|
||||||
{
|
{
|
||||||
uint64_t tmp_len = 0;
|
ssize_t read_len;
|
||||||
ssize_t read_len = 0;
|
uint64_t tmp_len = 0;
|
||||||
|
|
||||||
if (rmsgpack_read_uint(fd, &tmp_len, size) == -1)
|
if (rmsgpack_read_uint(fd, &tmp_len, size) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
*pbuff = (char *)malloc((size_t)(tmp_len + 1) * sizeof(char));
|
*pbuff = (char *)malloc((size_t)(tmp_len + 1) * sizeof(char));
|
||||||
|
|
||||||
if ((read_len = filestream_read(fd, *pbuff, (size_t)tmp_len)) == -1)
|
if ((read_len = filestream_read(fd, *pbuff, (size_t)tmp_len)) == -1)
|
||||||
{
|
{
|
||||||
free(*pbuff);
|
free(*pbuff);
|
||||||
*pbuff = NULL;
|
*pbuff = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
*len = read_len;
|
*len = read_len;
|
||||||
(*pbuff)[read_len] = 0;
|
(*pbuff)[read_len] = 0;
|
||||||
|
|
||||||
/* Throw warning on read_len != tmp_len ? */
|
/* Throw warning on read_len != tmp_len ? */
|
||||||
|
|
Loading…
Reference in New Issue