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

Function get_func_by_name

lua/sp.c:3024–3057  ·  view source on GitHub ↗

return 'main' function to call on the lua stack

Source from the content-addressed store, hash-verified

3022
3023// return 'main' function to call on the lua stack
3024static int get_func_by_name(Lua L, const char *func, char **err)
3025{
3026 lua_getglobal(L, "_SP");
3027 lua_pushstring(L, "cdb2_func_names");
3028 lua_gettable(L, -2); // result, _SP{}
3029 if (!lua_istable(L, -1)) {
3030 logmsg(LOGMSG_ERROR, "%s fail at %d\n", __func__, __LINE__);
3031 *err = strdup("get_func_by_name failed");
3032 return -1;
3033 }
3034 lua_pushstring(L, func);
3035 lua_gettable(L, -2);
3036 if (!lua_isfunction(L, -1)) {
3037 if (strcmp(func, "main") != 0) {
3038 logmsg(LOGMSG_ERROR, "%s fail at %d\n", __func__, __LINE__);
3039 *err = strdup("get_func_by_name failed");
3040 return -2;
3041 }
3042 lua_pop(L, 1); // nil
3043 // local function main() -- not found
3044 // look for _SP.spname
3045 SP sp = getsp(L);
3046 lua_pushstring(L, sp->spname);
3047 lua_gettable(L, -3); // _SP.spname ?
3048 if (!lua_isfunction(L, -1)) {
3049 logmsg(LOGMSG_ERROR, "%s fail at %d\n", __func__, __LINE__);
3050 *err = strdup("get_func_by_name failed");
3051 return -3;
3052 }
3053 }
3054 lua_insert(L, 1);
3055 lua_settop(L, 1);
3056 return 0;
3057}
3058
3059static int process_src(Lua L, const char *src, char **err)
3060{

Callers 5

db_create_thread_intFunction · 0.85
lua_final_intFunction · 0.85
lua_step_intFunction · 0.85
lua_func_intFunction · 0.85
exec_procedure_intFunction · 0.85

Calls 6

lua_pushstringFunction · 0.85
lua_gettableFunction · 0.85
lua_insertFunction · 0.85
lua_settopFunction · 0.85
logmsgFunction · 0.50
strdupFunction · 0.50

Tested by

no test coverage detected