MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / push_args

Function push_args

lua/sp.c:6391–6433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6389}
6390
6391static int push_args(const char **argstr, struct sqlclntstate *clnt, char **err, int *argc)
6392{
6393 const char *s = *argstr;
6394 SP sp = clnt->sp;
6395 Lua lua = sp->lua;
6396
6397 const char *msg = s;
6398 int argcnt = 0;
6399 sparg_t arg;
6400
6401 int rc;
6402 while ((rc = getarg(&s, clnt, &arg)) > arg_end) {
6403 if ((rc = !lua_checkstack(lua, 1)) != 0) break;
6404 switch (arg.type) {
6405 case arg_null: luabb_pushnull(lua, DBTYPES_CSTRING); break;
6406 case arg_int: lua_pushnumber(lua, arg.u.i); break;
6407 case arg_real: lua_pushnumber(lua, arg.u.d); break;
6408 case arg_str: lua_pushstring(lua, arg.u.c); break;
6409 case arg_blob: luabb_pushblob(lua, &arg.u.b); break;
6410 case arg_bool: lua_pushboolean(lua, arg.u.i); break;
6411 case arg_param: rc = push_param(lua, clnt, arg.u.i); break;
6412 default: rc = 99; break;
6413 }
6414 free(arg.mbuf);
6415 ++argcnt;
6416 if (rc) break;
6417 msg = s;
6418 }
6419 if (rc != arg_end) {
6420 *err = malloc(64);
6421 if (arg.type == arg_param) {
6422 snprintf0(*err, 60, "Bad parameter:%s type:%d", arg.buf + 1, rc);
6423 } else {
6424 if (snprintf0(*err, 60, "bad argument -> %s", msg) >= 60) {
6425 strcat(*err, "...");
6426 }
6427 }
6428 reset_sp(sp);
6429 return -1;
6430 }
6431 *argc = argcnt;
6432 return 0;
6433}
6434
6435static int run_sp_int(struct sqlclntstate *clnt, int argcnt, char **err)
6436{

Callers 1

push_args_and_run_spFunction · 0.85

Calls 12

getargFunction · 0.85
lua_checkstackFunction · 0.85
luabb_pushnullFunction · 0.85
lua_pushnumberFunction · 0.85
lua_pushstringFunction · 0.85
luabb_pushblobFunction · 0.85
lua_pushbooleanFunction · 0.85
push_paramFunction · 0.85
freeFunction · 0.85
mallocFunction · 0.85
snprintf0Function · 0.85
reset_spFunction · 0.85

Tested by

no test coverage detected