MCPcopy Create free account
hub / github.com/MonaSolutions/MonaServer / ExecuteFile

Method ExecuteFile

MonaServer/sources/Service.cpp:363–399  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

361}
362
363int 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
401int Service::Item(lua_State *pState) {
402 SCRIPT_CALLBACK(Service,service)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected