| 361 | } |
| 362 | |
| 363 | int Service::ExecuteFile(lua_State *pState) { |
| 364 | // 1 - name |
| 365 | |
| 366 | int results(0); |
| 367 | |
| 368 | SCRIPT_BEGIN(pState) |
| 369 | |
| 370 | bool isRequire(lua_toboolean(pState, lua_upvalueindex(2)) ? true : false); |
| 371 | if (isRequire) { |
| 372 | const char* name(lua_tostring(pState, 1)); |
| 373 | if (!name) { |
| 374 | SCRIPT_ERROR("require must take a string argument") |
| 375 | return 0; |
| 376 | } |
| 377 | string ext; |
| 378 | if (String::ICompare(FileSystem::GetExtension(name,ext),"lua")==0) |
| 379 | results = LoadFile(pState); |
| 380 | } else |
| 381 | results = LoadFile(pState); |
| 382 | |
| 383 | if (results) { |
| 384 | results = lua_gettop(pState)-results; |
| 385 | lua_call(pState, 0, LUA_MULTRET); |
| 386 | results = lua_gettop(pState)-results; |
| 387 | } else if (isRequire) { |
| 388 | // is require, try lib |
| 389 | results = lua_gettop(pState); |
| 390 | lua_getglobal(pState, "require"); |
| 391 | lua_pushvalue(pState, 1); |
| 392 | lua_call(pState, 1, LUA_MULTRET); |
| 393 | results = lua_gettop(pState)-results; |
| 394 | } |
| 395 | |
| 396 | SCRIPT_END |
| 397 | |
| 398 | return results; |
| 399 | } |
| 400 | |
| 401 | int Service::Item(lua_State *pState) { |
| 402 | SCRIPT_CALLBACK(Service,service) |
nothing calls this directly
no outgoing calls
no test coverage detected