** Try to find a load function for module 'modname' at file 'filename'. ** First, change '.' to '_' in 'modname'; then, if 'modname' has ** the form X-Y (that is, it has an "ignore mark"), build a function ** name "luaopen_X" and look for it. (For compatibility, if that ** fails, it also tries "luaopen_Y".) If there is no ignore mark, ** look for a function named "luaopen_modname". */
| 553 | ** look for a function named "luaopen_modname". |
| 554 | */ |
| 555 | static int loadfunc (lua_State *L, const char *filename, const char *modname) { |
| 556 | const char *openfunc; |
| 557 | const char *mark; |
| 558 | modname = luaL_gsub(L, modname, ".", LUA_OFSEP); |
| 559 | mark = strchr(modname, *LUA_IGMARK); |
| 560 | if (mark) { |
| 561 | int stat; |
| 562 | openfunc = lua_pushlstring(L, modname, mark - modname); |
| 563 | openfunc = lua_pushfstring(L, LUA_POF"%s", openfunc); |
| 564 | stat = lookforfunc(L, filename, openfunc); |
| 565 | if (stat != ERRFUNC) return stat; |
| 566 | modname = mark + 1; /* else go ahead and try old-style name */ |
| 567 | } |
| 568 | openfunc = lua_pushfstring(L, LUA_POF"%s", modname); |
| 569 | return lookforfunc(L, filename, openfunc); |
| 570 | } |
| 571 | |
| 572 | |
| 573 | static int searcher_C (lua_State *L) { |
no test coverage detected