(LibretroDB) Style nits

This commit is contained in:
twinaphex 2015-02-01 15:47:02 +01:00
parent a2d8e0f148
commit fc49dbf141
3 changed files with 343 additions and 319 deletions

View File

@ -197,8 +197,10 @@ static int libretrodb_find_index(libretrodb_t *db, const char *index_name,
while (offset < eof) while (offset < eof)
{ {
libretrodb_read_index_header(db->fd, idx); libretrodb_read_index_header(db->fd, idx);
if (strncmp(index_name, idx->name, strlen(idx->name)) == 0) if (strncmp(index_name, idx->name, strlen(idx->name)) == 0)
return 0; return 0;
offset = lseek(db->fd, idx->next, SEEK_CUR); offset = lseek(db->fd, idx->next, SEEK_CUR);
} }
@ -223,9 +225,11 @@ static int binsearch(const void * buff, const void * item,
*offset = *(uint64_t *)(current + field_size); *offset = *(uint64_t *)(current + field_size);
return 0; return 0;
} }
else if (count == 0)
if (count == 0)
return -1; return -1;
else if (rv > 0)
if (rv > 0)
return binsearch(buff, item, mid, field_size, offset); return binsearch(buff, item, mid, field_size, offset);
return binsearch(current + item_size, item, return binsearch(current + item_size, item,
@ -270,10 +274,10 @@ int libretrodb_find_entry(libretrodb_t *db, const char *index_name,
lseek(db->fd, offset, SEEK_SET); lseek(db->fd, offset, SEEK_SET);
rv = rmsgpack_dom_read(db->fd, out); rv = rmsgpack_dom_read(db->fd, out);
if (rv < 0) if (rv < 0)
return rv; return rv;
return rv; return rv;
} }
@ -375,9 +379,10 @@ int libretrodb_cursor_open(libretrodb_t *db, libretrodb_cursor_t *cursor,
static int node_iter(void * value, void * ctx) static int node_iter(void * value, void * ctx)
{ {
struct node_iter_ctx * nictx = (struct node_iter_ctx *)ctx; struct node_iter_ctx *nictx = (struct node_iter_ctx*)ctx;
if (write(nictx->db->fd, value, nictx->idx->key_size + sizeof(uint64_t)) > 0) if (write(nictx->db->fd, value,
nictx->idx->key_size + sizeof(uint64_t)) > 0)
return 0; return 0;
return -1; return -1;
@ -415,8 +420,10 @@ int libretrodb_create_index(libretrodb_t *db,
key.type = RDT_STRING; key.type = RDT_STRING;
key.string.len = strlen(field_name); key.string.len = strlen(field_name);
/* We know we aren't going to change it */ /* We know we aren't going to change it */
key.string.buff = (char *) field_name; key.string.buff = (char *) field_name;
while (libretrodb_cursor_read_item(&cur, &item) == 0) while (libretrodb_cursor_read_item(&cur, &item) == 0)
{ {
if (item.type != RDT_MAP) if (item.type != RDT_MAP)
@ -466,7 +473,9 @@ int libretrodb_create_index(libretrodb_t *db,
} }
memcpy(buff, field->binary.buff, field_size); memcpy(buff, field->binary.buff, field_size);
buff_u64 = (uint64_t *)buff + field_size; buff_u64 = (uint64_t *)buff + field_size;
memcpy(buff_u64, &item_loc, sizeof(uint64_t)); memcpy(buff_u64, &item_loc, sizeof(uint64_t));
if (bintree_insert(&tree, buff) != 0) if (bintree_insert(&tree, buff) != 0)

View File

@ -128,7 +128,7 @@ int rmsgpack_write_string(int fd, const char *s, uint32_t len)
if (write(fd, &fixlen, sizeof(int8_t)) == -1) if (write(fd, &fixlen, sizeof(int8_t)) == -1)
return -errno; return -errno;
} }
else if (len < 1<<8) else if (len < (1 << 8))
{ {
if (write(fd, &MPF_STR8, sizeof(MPF_STR8)) == -1) if (write(fd, &MPF_STR8, sizeof(MPF_STR8)) == -1)
return -errno; return -errno;
@ -136,7 +136,7 @@ int rmsgpack_write_string(int fd, const char *s, uint32_t len)
return -errno; return -errno;
written += sizeof(uint8_t); written += sizeof(uint8_t);
} }
else if (len < 1<<16) else if (len < (1 << 16))
{ {
if (write(fd, &MPF_STR16, sizeof(MPF_STR16)) == -1) if (write(fd, &MPF_STR16, sizeof(MPF_STR16)) == -1)
return -errno; return -errno;
@ -166,6 +166,7 @@ int rmsgpack_write_bin(int fd, const void *s, uint32_t len)
uint16_t tmp_i16; uint16_t tmp_i16;
uint32_t tmp_i32; uint32_t tmp_i32;
int written = sizeof(int8_t); int written = sizeof(int8_t);
if (len == (uint8_t)len) if (len == (uint8_t)len)
{ {
if (write(fd, &MPF_BIN8, sizeof(MPF_BIN8)) == -1) if (write(fd, &MPF_BIN8, sizeof(MPF_BIN8)) == -1)
@ -212,11 +213,10 @@ int rmsgpack_write_bool(int fd, int value)
if (write(fd, &MPF_TRUE, sizeof(MPF_TRUE)) == -1) if (write(fd, &MPF_TRUE, sizeof(MPF_TRUE)) == -1)
return -errno; return -errno;
} }
else
{
if (write(fd, &MPF_FALSE, sizeof(MPF_FALSE)) == -1) if (write(fd, &MPF_FALSE, sizeof(MPF_FALSE)) == -1)
return -errno; return -errno;
}
return sizeof(uint8_t); return sizeof(uint8_t);
} }
@ -359,6 +359,7 @@ static int read_int(int fd, int64_t *out, size_t size)
uint16_t tmp16; uint16_t tmp16;
uint32_t tmp32; uint32_t tmp32;
uint64_t tmp64; uint64_t tmp64;
if (read(fd, &tmp64, size) == -1) if (read(fd, &tmp64, size) == -1)
return -errno; return -errno;
@ -385,32 +386,28 @@ static int read_int(int fd, int64_t *out, size_t size)
return 0; return 0;
} }
static int read_buff( static int read_buff(int fd, size_t size, char **pbuff, uint64_t *len)
int fd, {
size_t size,
char ** pbuff,
uint64_t * len
){
uint64_t tmp_len = 0; uint64_t tmp_len = 0;
if (read_uint(fd, &tmp_len, size) == -1) if (read_uint(fd, &tmp_len, size) == -1)
return -errno; return -errno;
*pbuff = (char *)calloc(tmp_len + 1, sizeof(char)); *pbuff = (char *)calloc(tmp_len + 1, sizeof(char));
if (read(fd, *pbuff, tmp_len) == -1) if (read(fd, *pbuff, tmp_len) == -1)
{ {
free(*pbuff); free(*pbuff);
return -errno; return -errno;
} }
*len = tmp_len; *len = tmp_len;
return 0; return 0;
} }
static int read_map( static int read_map(int fd, uint32_t len,
int fd, struct rmsgpack_read_callbacks *callbacks, void *data)
uint32_t len, {
struct rmsgpack_read_callbacks * callbacks,
void * data
){
int rv; int rv;
unsigned i; unsigned i;
@ -429,12 +426,8 @@ static int read_map(
return 0; return 0;
} }
static int read_array( static int read_array(int fd, uint32_t len,
int fd, struct rmsgpack_read_callbacks *callbacks, void *data)
uint32_t len,
struct rmsgpack_read_callbacks * callbacks,
void * data
)
{ {
int rv; int rv;
unsigned i; unsigned i;
@ -452,15 +445,16 @@ static int read_array(
return 0; return 0;
} }
int rmsgpack_read(int fd, struct rmsgpack_read_callbacks * callbacks, int rmsgpack_read(int fd,
void * data) struct rmsgpack_read_callbacks *callbacks, void *data)
{ {
int rv; int rv;
uint64_t tmp_len = 0; uint64_t tmp_len = 0;
uint64_t tmp_uint = 0; uint64_t tmp_uint = 0;
int64_t tmp_int = 0; int64_t tmp_int = 0;
uint8_t type = 0; uint8_t type = 0;
char * buff = NULL; char *buff = NULL;
if (read(fd, &type, sizeof(uint8_t)) == -1) if (read(fd, &type, sizeof(uint8_t)) == -1)
return -errno; return -errno;
@ -523,7 +517,8 @@ int rmsgpack_read(int fd, struct rmsgpack_read_callbacks * callbacks,
case 0xc4: case 0xc4:
case 0xc5: case 0xc5:
case 0xc6: case 0xc6:
if ((rv = read_buff(fd, 1<<(type - 0xc4), &buff, &tmp_len)) < 0) if ((rv = read_buff(fd, 1<<(type - 0xc4),
&buff, &tmp_len)) < 0)
return rv; return rv;
if (callbacks->read_bin) if (callbacks->read_bin)

View File

@ -14,20 +14,19 @@
struct dom_reader_state struct dom_reader_state
{ {
int i; int i;
struct rmsgpack_dom_value * stack[MAX_DEPTH]; struct rmsgpack_dom_value *stack[MAX_DEPTH];
}; };
static struct rmsgpack_dom_value *dom_reader_state_pop(
static struct rmsgpack_dom_value * dom_reader_state_pop( struct dom_reader_state *s)
struct dom_reader_state * s)
{ {
struct rmsgpack_dom_value * v = s->stack[s->i]; struct rmsgpack_dom_value *v = s->stack[s->i];
s->i--; s->i--;
return v; return v;
} }
static int dom_reader_state_push(struct dom_reader_state * s, static int dom_reader_state_push(struct dom_reader_state *s,
struct rmsgpack_dom_value * v) struct rmsgpack_dom_value *v)
{ {
if ((s->i + 1) == MAX_DEPTH) if ((s->i + 1) == MAX_DEPTH)
return -ENOMEM; return -ENOMEM;
@ -36,20 +35,21 @@ static int dom_reader_state_push(struct dom_reader_state * s,
return 0; return 0;
} }
static int dom_read_nil(void * data) static int dom_read_nil(void *data)
{ {
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = struct rmsgpack_dom_value *v =
(struct rmsgpack_dom_value *)dom_reader_state_pop(dom_state); (struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
v->type = RDT_NULL; v->type = RDT_NULL;
return 0; return 0;
} }
static int dom_read_bool(int value, void * data) static int dom_read_bool(int value, void *data)
{ {
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = struct rmsgpack_dom_value *v =
(struct rmsgpack_dom_value *)dom_reader_state_pop(dom_state); (struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
v->type = RDT_BOOL; v->type = RDT_BOOL;
v->bool_ = value; v->bool_ = value;
return 0; return 0;
@ -57,19 +57,21 @@ static int dom_read_bool(int value, void * data)
static int dom_read_int(int64_t value, void *data) static int dom_read_int(int64_t value, void *data)
{ {
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = struct rmsgpack_dom_value *v =
(struct rmsgpack_dom_value *)dom_reader_state_pop(dom_state); (struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
v->type = RDT_INT; v->type = RDT_INT;
v->int_ = value; v->int_ = value;
return 0; return 0;
} }
static int dom_read_uint(uint64_t value, void * data) static int dom_read_uint(uint64_t value, void *data)
{ {
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = struct rmsgpack_dom_value *v =
(struct rmsgpack_dom_value *)dom_reader_state_pop(dom_state); (struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
v->type = RDT_UINT; v->type = RDT_UINT;
v->uint_ = value; v->uint_ = value;
return 0; return 0;
@ -77,9 +79,10 @@ static int dom_read_uint(uint64_t value, void * data)
static int dom_read_string(char *value, uint32_t len, void *data) static int dom_read_string(char *value, uint32_t len, void *data)
{ {
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = struct rmsgpack_dom_value *v =
(struct rmsgpack_dom_value *)dom_reader_state_pop(dom_state); (struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
v->type = RDT_STRING; v->type = RDT_STRING;
v->string.len = len; v->string.len = len;
v->string.buff = value; v->string.buff = value;
@ -90,7 +93,8 @@ static int dom_read_bin(void *value, uint32_t len, void *data)
{ {
struct dom_reader_state *dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value *v = struct rmsgpack_dom_value *v =
(struct rmsgpack_dom_value *)dom_reader_state_pop(dom_state); (struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
v->type = RDT_BINARY; v->type = RDT_BINARY;
v->binary.len = len; v->binary.len = len;
v->binary.buff = (char *)value; v->binary.buff = (char *)value;
@ -100,9 +104,9 @@ static int dom_read_bin(void *value, uint32_t len, void *data)
static int dom_read_map_start(uint32_t len, void *data) static int dom_read_map_start(uint32_t len, void *data)
{ {
unsigned i; unsigned i;
struct rmsgpack_dom_pair * items = NULL; struct rmsgpack_dom_pair *items = NULL;
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = dom_reader_state_pop(dom_state); struct rmsgpack_dom_value *v = dom_reader_state_pop(dom_state);
v->type = RDT_MAP; v->type = RDT_MAP;
v->map.len = len; v->map.len = len;
@ -115,6 +119,7 @@ static int dom_read_map_start(uint32_t len, void *data)
return -ENOMEM; return -ENOMEM;
v->map.items = items; v->map.items = items;
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
{ {
if (dom_reader_state_push(dom_state, &items[i].value) < 0) if (dom_reader_state_push(dom_state, &items[i].value) < 0)
@ -122,17 +127,16 @@ static int dom_read_map_start(uint32_t len, void *data)
if (dom_reader_state_push(dom_state, &items[i].key) < 0) if (dom_reader_state_push(dom_state, &items[i].key) < 0)
return -ENOMEM; return -ENOMEM;
} }
return 0; return 0;
} }
static int dom_read_array_start( static int dom_read_array_start(uint32_t len, void *data)
uint32_t len, {
void * data
){
unsigned i; unsigned i;
struct dom_reader_state * dom_state = (struct dom_reader_state *)data; struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
struct rmsgpack_dom_value * v = dom_reader_state_pop(dom_state); struct rmsgpack_dom_value *v = dom_reader_state_pop(dom_state);
struct rmsgpack_dom_value * items = NULL; struct rmsgpack_dom_value *items = NULL;
v->type = RDT_ARRAY; v->type = RDT_ARRAY;
v->array.len = len; v->array.len = len;
@ -145,10 +149,12 @@ static int dom_read_array_start(
v->array.items = items; v->array.items = items;
for (i = 0; i < len; i++) { for (i = 0; i < len; i++)
{
if (dom_reader_state_push(dom_state, &items[i]) < 0) if (dom_reader_state_push(dom_state, &items[i]) < 0)
return -ENOMEM; return -ENOMEM;
} }
return 0; return 0;
} }
@ -163,10 +169,12 @@ static struct rmsgpack_read_callbacks dom_reader_callbacks = {
dom_read_array_start dom_read_array_start
}; };
void rmsgpack_dom_value_free(struct rmsgpack_dom_value * v){ void rmsgpack_dom_value_free(struct rmsgpack_dom_value *v)
{
unsigned i; unsigned i;
switch (v->type) { switch (v->type)
{
case RDT_STRING: case RDT_STRING:
free(v->string.buff); free(v->string.buff);
break; break;
@ -174,7 +182,8 @@ void rmsgpack_dom_value_free(struct rmsgpack_dom_value * v){
free(v->binary.buff); free(v->binary.buff);
break; break;
case RDT_MAP: case RDT_MAP:
for (i = 0; i < v->map.len; i++) { for (i = 0; i < v->map.len; i++)
{
rmsgpack_dom_value_free(&v->map.items[i].key); rmsgpack_dom_value_free(&v->map.items[i].key);
rmsgpack_dom_value_free(&v->map.items[i].value); rmsgpack_dom_value_free(&v->map.items[i].value);
} }
@ -194,15 +203,16 @@ void rmsgpack_dom_value_free(struct rmsgpack_dom_value * v){
} }
} }
struct rmsgpack_dom_value * rmsgpack_dom_value_map_value( struct rmsgpack_dom_value *rmsgpack_dom_value_map_value(
const struct rmsgpack_dom_value * map, const struct rmsgpack_dom_value *map,
const struct rmsgpack_dom_value * key const struct rmsgpack_dom_value *key)
){ {
unsigned i; unsigned i;
if (map->type != RDT_MAP) if (map->type != RDT_MAP)
return NULL; return NULL;
for (i = 0; i < map->map.len; i++) { for (i = 0; i < map->map.len; i++)
{
if (rmsgpack_dom_value_cmp(key, &map->map.items[i].key) == 0) if (rmsgpack_dom_value_cmp(key, &map->map.items[i].key) == 0)
return &map->map.items[i].value; return &map->map.items[i].value;
} }
@ -210,9 +220,10 @@ struct rmsgpack_dom_value * rmsgpack_dom_value_map_value(
} }
int rmsgpack_dom_value_cmp( int rmsgpack_dom_value_cmp(
const struct rmsgpack_dom_value * a, const struct rmsgpack_dom_value *a,
const struct rmsgpack_dom_value * b const struct rmsgpack_dom_value *b
){ )
{
int rv; int rv;
unsigned i; unsigned i;
@ -222,7 +233,8 @@ int rmsgpack_dom_value_cmp(
if (a->type != b->type) if (a->type != b->type)
return 1; return 1;
switch (a->type) { switch (a->type)
{
case RDT_NULL: case RDT_NULL:
return 0; return 0;
case RDT_BOOL: case RDT_BOOL:
@ -242,18 +254,23 @@ int rmsgpack_dom_value_cmp(
case RDT_MAP: case RDT_MAP:
if (a->map.len != b->map.len) if (a->map.len != b->map.len)
return 1; return 1;
for (i = 0; i < a->map.len; i++) { for (i = 0; i < a->map.len; i++)
if ((rv = rmsgpack_dom_value_cmp(&a->map.items[i].key, &b->map.items[i].key)) != 0) {
if ((rv = rmsgpack_dom_value_cmp(&a->map.items[i].key,
&b->map.items[i].key)) != 0)
return rv; return rv;
if ((rv = rmsgpack_dom_value_cmp(&a->map.items[i].value, &b->map.items[i].value)) != 0) if ((rv = rmsgpack_dom_value_cmp(&a->map.items[i].value,
&b->map.items[i].value)) != 0)
return rv; return rv;
} }
break; break;
case RDT_ARRAY: case RDT_ARRAY:
if (a->array.len != b->array.len) if (a->array.len != b->array.len)
return 1; return 1;
for (i = 0; i < a->array.len; i++) { for (i = 0; i < a->array.len; i++)
if ((rv = rmsgpack_dom_value_cmp(&a->array.items[i], &b->array.items[i])) != 0) {
if ((rv = rmsgpack_dom_value_cmp(&a->array.items[i],
&b->array.items[i])) != 0)
return rv; return rv;
} }
break; break;
@ -262,10 +279,12 @@ int rmsgpack_dom_value_cmp(
return 1; return 1;
} }
void rmsgpack_dom_value_print(struct rmsgpack_dom_value * obj){ void rmsgpack_dom_value_print(struct rmsgpack_dom_value *obj)
{
unsigned i; unsigned i;
switch (obj->type) { switch (obj->type)
{
case RDT_NULL: case RDT_NULL:
printf("nil"); printf("nil");
break; break;
@ -300,7 +319,8 @@ void rmsgpack_dom_value_print(struct rmsgpack_dom_value * obj){
break; break;
case RDT_MAP: case RDT_MAP:
printf("{"); printf("{");
for (i = 0; i < obj->map.len; i++) { for (i = 0; i < obj->map.len; i++)
{
rmsgpack_dom_value_print(&obj->map.items[i].key); rmsgpack_dom_value_print(&obj->map.items[i].key);
printf(": "); printf(": ");
rmsgpack_dom_value_print(&obj->map.items[i].value); rmsgpack_dom_value_print(&obj->map.items[i].value);
@ -311,7 +331,8 @@ void rmsgpack_dom_value_print(struct rmsgpack_dom_value * obj){
break; break;
case RDT_ARRAY: case RDT_ARRAY:
printf("["); printf("[");
for (i = 0; i < obj->array.len; i++) { for (i = 0; i < obj->array.len; i++)
{
rmsgpack_dom_value_print(&obj->array.items[i]); rmsgpack_dom_value_print(&obj->array.items[i]);
if (i < (obj->array.len - 1)) if (i < (obj->array.len - 1))
printf(", "); printf(", ");
@ -319,15 +340,14 @@ void rmsgpack_dom_value_print(struct rmsgpack_dom_value * obj){
printf("]"); printf("]");
} }
} }
int rmsgpack_dom_write( int rmsgpack_dom_write(int fd, const struct rmsgpack_dom_value *obj)
int fd, {
const struct rmsgpack_dom_value * obj
){
unsigned i; unsigned i;
int rv = 0; int rv = 0;
int written = 0; int written = 0;
switch (obj->type) { switch (obj->type)
{
case RDT_NULL: case RDT_NULL:
return rmsgpack_write_nil(fd); return rmsgpack_write_nil(fd);
case RDT_BOOL: case RDT_BOOL:
@ -344,7 +364,9 @@ int rmsgpack_dom_write(
if ((rv = rmsgpack_write_map_header(fd, obj->map.len)) < 0) if ((rv = rmsgpack_write_map_header(fd, obj->map.len)) < 0)
return rv; return rv;
written += rv; written += rv;
for (i = 0; i < obj->map.len; i++) {
for (i = 0; i < obj->map.len; i++)
{
if ((rv = rmsgpack_dom_write(fd, &obj->map.items[i].key)) < 0) if ((rv = rmsgpack_dom_write(fd, &obj->map.items[i].key)) < 0)
return rv; return rv;
written += rv; written += rv;
@ -357,7 +379,9 @@ int rmsgpack_dom_write(
if ((rv = rmsgpack_write_array_header(fd, obj->array.len)) < 0) if ((rv = rmsgpack_write_array_header(fd, obj->array.len)) < 0)
return rv; return rv;
written += rv; written += rv;
for (i = 0; i < obj->array.len; i++) {
for (i = 0; i < obj->array.len; i++)
{
if ((rv = rmsgpack_dom_write(fd, &obj->array.items[i])) < 0) if ((rv = rmsgpack_dom_write(fd, &obj->array.items[i])) < 0)
return rv; return rv;
written += rv; written += rv;
@ -366,14 +390,14 @@ int rmsgpack_dom_write(
return written; return written;
} }
int rmsgpack_dom_read( int rmsgpack_dom_read(int fd, struct rmsgpack_dom_value *out)
int fd, {
struct rmsgpack_dom_value * out
){
int rv = 0;
struct dom_reader_state s; struct dom_reader_state s;
int rv = 0;
s.i = 0; s.i = 0;
s.stack[0] = out; s.stack[0] = out;
rv = rmsgpack_read(fd, &dom_reader_callbacks, &s); rv = rmsgpack_read(fd, &dom_reader_callbacks, &s);
if (rv < 0) if (rv < 0)
@ -387,18 +411,18 @@ int rmsgpack_dom_read_into(int fd, ...)
va_list ap; va_list ap;
struct rmsgpack_dom_value map; struct rmsgpack_dom_value map;
int rv; int rv;
const char * key_name; const char *key_name;
struct rmsgpack_dom_value key; struct rmsgpack_dom_value key;
struct rmsgpack_dom_value * value; struct rmsgpack_dom_value *value;
int64_t * int_value; int64_t *int_value;
uint64_t * uint_value; uint64_t *uint_value;
int * bool_value; int *bool_value;
char * buff_value; char *buff_value;
uint64_t min_len; uint64_t min_len;
int value_type = 0; int value_type = 0;
va_start(ap, fd); va_start(ap, fd);
rv = rmsgpack_dom_read(fd, &map); rv = rmsgpack_dom_read(fd, &map);
(void)value_type; (void)value_type;
@ -418,7 +442,8 @@ int rmsgpack_dom_read_into(int fd, ...)
while (1) while (1)
{ {
key_name = va_arg(ap, const char *); key_name = va_arg(ap, const char *);
if (key_name == NULL)
if (!key_name)
{ {
rv = 0; rv = 0;
goto clean; goto clean;
@ -448,24 +473,19 @@ int rmsgpack_dom_read_into(int fd, ...)
buff_value = va_arg(ap, char *); buff_value = va_arg(ap, char *);
uint_value = va_arg(ap, uint64_t *); uint_value = va_arg(ap, uint64_t *);
*uint_value = value->binary.len; *uint_value = value->binary.len;
min_len = value->binary.len > *uint_value ? *uint_value : value->binary.len; min_len = (value->binary.len > *uint_value) ?
memcpy( *uint_value : value->binary.len;
buff_value,
value->binary.buff,
min_len
);
memcpy(buff_value, value->binary.buff, min_len);
break; break;
case RDT_STRING: case RDT_STRING:
buff_value = va_arg(ap, char *); buff_value = va_arg(ap, char *);
uint_value = va_arg(ap, uint64_t *); uint_value = va_arg(ap, uint64_t *);
min_len = value->string.len + 1 > *uint_value ? *uint_value : value->string.len + 1; min_len = (value->string.len + 1 > *uint_value) ?
*uint_value : value->string.len + 1;
*uint_value = min_len; *uint_value = min_len;
memcpy(
buff_value, memcpy(buff_value, value->string.buff, min_len);
value->string.buff,
min_len
);
break; break;
default: default:
rv = -1; rv = -1;