diff --git a/libretro-db/query.c b/libretro-db/query.c index aa873f2468..3b425d6150 100644 --- a/libretro-db/query.c +++ b/libretro-db/query.c @@ -43,7 +43,7 @@ struct argument { struct rmsgpack_dom_value value; struct invocation invocation; - }; + } arg; }; struct query @@ -170,12 +170,12 @@ static void argument_free(struct argument *arg) if (arg->type != AT_FUNCTION) { - rmsgpack_dom_value_free(&arg->value); + rmsgpack_dom_value_free(&arg->arg.value); return; } - for (i = 0; i < arg->invocation.argc; i++) - argument_free(&arg->invocation.argv[i]); + for (i = 0; i < arg->arg.invocation.argc; i++) + argument_free(&arg->arg.invocation.argv[i]); } static struct buffer parse_argument(struct buffer buff, struct argument *arg, @@ -215,12 +215,12 @@ static struct rmsgpack_dom_value equals(struct rmsgpack_dom_value input, res.val.bool_ = 0; else { - if (input.type == RDT_UINT && arg.value.type == RDT_INT) + if (input.type == RDT_UINT && arg.arg.value.type == RDT_INT) { - arg.value.type = RDT_UINT; - arg.value.val.uint_ = arg.value.val.int_; + arg.arg.value.type = RDT_UINT; + arg.arg.value.val.uint_ = arg.arg.value.val.int_; } - res.val.bool_ = (rmsgpack_dom_value_cmp(&input, &arg.value) == 0); + res.val.bool_ = (rmsgpack_dom_value_cmp(&input, &arg.arg.value) == 0); } } return res; @@ -241,9 +241,9 @@ static struct rmsgpack_dom_value operator_or(struct rmsgpack_dom_value input, res = equals(input, 1, &argv[i]); else { - res = is_true(argv[i].invocation.func(input, - argv[i].invocation.argc, - argv[i].invocation.argv + res = is_true(argv[i].arg.invocation.func(input, + argv[i].arg.invocation.argc, + argv[i].arg.invocation.argv ), 0, NULL); } @@ -269,16 +269,16 @@ static struct rmsgpack_dom_value between(struct rmsgpack_dom_value input, return res; if (argv[0].type != AT_VALUE || argv[1].type != AT_VALUE) return res; - if (argv[0].value.type != RDT_INT || argv[1].value.type != RDT_INT) + if (argv[0].arg.value.type != RDT_INT || argv[1].arg.value.type != RDT_INT) return res; switch (input.type) { case RDT_INT: - res.val.bool_ = input.val.int_ >= argv[0].value.val.int_ && input.val.int_ <= argv[1].value.val.int_; + res.val.bool_ = (input.val.int_ >= argv[0].arg.value.val.int_) && (input.val.int_ <= argv[1].arg.value.val.int_); break; case RDT_UINT: - res.val.bool_ = input.val.int_ >= argv[0].value.val.uint_ && input.val.int_ <= argv[1].value.val.int_; + res.val.bool_ = (input.val.int_ >= argv[0].arg.value.val.uint_) && (input.val.int_ <= argv[1].arg.value.val.int_); break; default: return res; @@ -303,9 +303,9 @@ static struct rmsgpack_dom_value operator_and(struct rmsgpack_dom_value input, else { res = is_true( - argv[i].invocation.func(input, - argv[i].invocation.argc, - argv[i].invocation.argv + argv[i].arg.invocation.func(input, + argv[i].arg.invocation.argc, + argv[i].arg.invocation.argv ), 0, NULL); } @@ -329,12 +329,12 @@ static struct rmsgpack_dom_value q_glob(struct rmsgpack_dom_value input, if (argc != 1) return res; - if (argv[0].type != AT_VALUE || argv[0].value.type != RDT_STRING) + if (argv[0].type != AT_VALUE || argv[0].arg.value.type != RDT_STRING) return res; if (input.type != RDT_STRING) return res; res.val.bool_ = rl_fnmatch( - argv[0].value.val.string.buff, + argv[0].arg.value.val.string.buff, input.val.string.buff, 0 ) == 0; @@ -371,7 +371,7 @@ static struct rmsgpack_dom_value all_map(struct rmsgpack_dom_value input, res.val.bool_ = 0; return res; } - value = rmsgpack_dom_value_map_value(&input, &arg.value); + value = rmsgpack_dom_value_map_value(&input, &arg.arg.value); if (!value) /* All missing fields are nil */ value = &nil_value; arg = argv[i + 1]; @@ -379,10 +379,10 @@ static struct rmsgpack_dom_value all_map(struct rmsgpack_dom_value input, res = equals(*value, 1, &arg); else { - res = is_true(arg.invocation.func( + res = is_true(arg.arg.invocation.func( *value, - arg.invocation.argc, - arg.invocation.argv + arg.arg.invocation.argc, + arg.arg.invocation.argv ), 0, NULL); value = NULL; } @@ -727,25 +727,25 @@ static struct buffer parse_table(struct buffer buff, if (!*error) { - args[argi].value.type = RDT_STRING; - args[argi].value.val.string.len = ident_len; - args[argi].value.val.string.buff = (char*)calloc( + args[argi].arg.value.type = RDT_STRING; + args[argi].arg.value.val.string.len = ident_len; + args[argi].arg.value.val.string.buff = (char*)calloc( ident_len + 1, sizeof(char) ); - if (!args[argi].value.val.string.buff) + if (!args[argi].arg.value.val.string.buff) goto error; strncpy( - args[argi].value.val.string.buff, + args[argi].arg.value.val.string.buff, ident_name, ident_len ); } } else - buff = parse_string(buff, &args[argi].value, error); + buff = parse_string(buff, &args[argi].arg.value, error); if (*error) goto error; @@ -823,17 +823,17 @@ static struct buffer parse_argument(struct buffer buff, ) { arg->type = AT_FUNCTION; - buff = parse_method_call(buff, &arg->invocation, error); + buff = parse_method_call(buff, &arg->arg.invocation, error); } else if (peek(buff, "{")) { arg->type = AT_FUNCTION; - buff = parse_table(buff, &arg->invocation, error); + buff = parse_table(buff, &arg->arg.invocation, error); } else { arg->type = AT_VALUE; - buff = parse_value(buff, &arg->value, error); + buff = parse_value(buff, &arg->arg.value, error); } return buff; }