mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add core.get_dir_list
This commit is contained in:
parent
6c06330daf
commit
8f9af57314
7 changed files with 39 additions and 36 deletions
|
@ -753,30 +753,6 @@ int ModApiMainMenu::l_get_texturepath_share(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
int ModApiMainMenu::l_get_dirlist(lua_State *L)
|
||||
{
|
||||
const char *path = luaL_checkstring(L, 1);
|
||||
bool dironly = lua_toboolean(L, 2);
|
||||
|
||||
std::vector<fs::DirListNode> dirlist = fs::GetDirListing(path);
|
||||
|
||||
unsigned int index = 1;
|
||||
lua_newtable(L);
|
||||
int table = lua_gettop(L);
|
||||
|
||||
for (unsigned int i=0;i< dirlist.size(); i++) {
|
||||
if ((dirlist[i].dir) || (dironly == false)) {
|
||||
lua_pushnumber(L,index);
|
||||
lua_pushstring(L,dirlist[i].name.c_str());
|
||||
lua_settable(L, table);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
int ModApiMainMenu::l_create_dir(lua_State *L) {
|
||||
const char *path = luaL_checkstring(L, 1);
|
||||
|
@ -1170,7 +1146,6 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
|
|||
API_FCT(get_gamepath);
|
||||
API_FCT(get_texturepath);
|
||||
API_FCT(get_texturepath_share);
|
||||
API_FCT(get_dirlist);
|
||||
API_FCT(create_dir);
|
||||
API_FCT(delete_dir);
|
||||
API_FCT(copy_dir);
|
||||
|
@ -1204,7 +1179,6 @@ void ModApiMainMenu::InitializeAsync(AsyncEngine& engine)
|
|||
ASYNC_API_FCT(get_gamepath);
|
||||
ASYNC_API_FCT(get_texturepath);
|
||||
ASYNC_API_FCT(get_texturepath_share);
|
||||
ASYNC_API_FCT(get_dirlist);
|
||||
ASYNC_API_FCT(create_dir);
|
||||
ASYNC_API_FCT(delete_dir);
|
||||
ASYNC_API_FCT(copy_dir);
|
||||
|
|
|
@ -339,6 +339,29 @@ int ModApiUtil::l_mkdir(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
// get_dir_list(path, is_dir)
|
||||
int ModApiUtil::l_get_dir_list(lua_State *L)
|
||||
{
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
const char *path = luaL_checkstring(L, 1);
|
||||
short is_dir = lua_isboolean(L, 2) ? lua_toboolean(L, 2) : -1;
|
||||
|
||||
CHECK_SECURE_PATH_OPTIONAL(L, path);
|
||||
|
||||
std::vector<fs::DirListNode> list = fs::GetDirListing(path);
|
||||
|
||||
int index = 0;
|
||||
lua_newtable(L);
|
||||
|
||||
for (size_t i = 0; i < list.size(); i++) {
|
||||
if (is_dir == -1 || is_dir == list[i].dir) {
|
||||
lua_pushstring(L, list[i].name.c_str());
|
||||
lua_rawseti(L, -2, ++index);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ModApiUtil::l_request_insecure_environment(lua_State *L)
|
||||
{
|
||||
|
@ -391,6 +414,7 @@ void ModApiUtil::Initialize(lua_State *L, int top)
|
|||
API_FCT(decompress);
|
||||
|
||||
API_FCT(mkdir);
|
||||
API_FCT(get_dir_list);
|
||||
|
||||
API_FCT(request_insecure_environment);
|
||||
}
|
||||
|
@ -417,5 +441,6 @@ void ModApiUtil::InitializeAsync(AsyncEngine& engine)
|
|||
ASYNC_API_FCT(decompress);
|
||||
|
||||
ASYNC_API_FCT(mkdir);
|
||||
ASYNC_API_FCT(get_dir_list);
|
||||
}
|
||||
|
||||
|
|
|
@ -90,6 +90,9 @@ private:
|
|||
// mkdir(path)
|
||||
static int l_mkdir(lua_State *L);
|
||||
|
||||
// get_dir_list(path, is_dir)
|
||||
static int l_get_dir_list(lua_State *L);
|
||||
|
||||
// request_insecure_environment()
|
||||
static int l_request_insecure_environment(lua_State *L);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue