Add core.mkdir

This commit is contained in:
ShadowNinja 2014-09-09 15:17:01 -04:00
parent 3a8c788880
commit 05ab9973f9
3 changed files with 49 additions and 33 deletions

View File

@ -1674,15 +1674,12 @@ Helper functions
* Useful for storing custom data
* `minetest.is_singleplayer()`
* `minetest.features`
* table containing API feature flags: `{foo=true, bar=true}`
* Table containing API feature flags: `{foo=true, bar=true}`
* `minetest.has_feature(arg)`: returns `boolean, missing_features`
* `arg`: string or table in format `{foo=true, bar=true}`
* `missing_features`: `{foo=true, bar=true}`
* `minetest.get_player_information(playername)`
* table containing information about player peer.
Example of `minetest.get_player_information` return value:
* `minetest.get_player_information(player_name)`: returns a table containing
information about player. Example return value:
{
address = "127.0.0.1", -- IP address of client
ip_version = 4, -- IPv4 / IPv6
@ -1704,6 +1701,9 @@ Example of `minetest.get_player_information` return value:
--vers_string = "0.4.9-git", -- full version string
--state = "Active" -- current client state
}
* `minetest.mkdir(path)`: returns success.
* Creates a directory specified by `path`, creating parent directories
if they don't exist.
### Logging
* `minetest.debug(line)`
@ -2282,9 +2282,6 @@ These functions return the leftover itemstack.
the floor or ceiling
* The first four options are mutually-exclusive; the last in the list takes
precedence over the first.
* `minetest.rotate_node(itemstack, placer, pointed_thing)`
* calls `rotate_and_place()` with infinitestacks set according to the state of
the creative mode setting, and checks for "sneak" to set the `invert_wall`

View File

@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "cpp_api/s_async.h"
#include "serialization.h"
#include "json/json.h"
#include "cpp_api/s_security.h"
#include "debug.h"
#include "porting.h"
#include "log.h"
@ -327,6 +328,17 @@ int ModApiUtil::l_decompress(lua_State *L)
return 1;
}
// mkdir(path)
int ModApiUtil::l_mkdir(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
const char *path = luaL_checkstring(L, 1);
CHECK_SECURE_PATH_OPTIONAL(L, path);
lua_pushboolean(L, fs::CreateAllDirs(path));
return 1;
}
void ModApiUtil::Initialize(lua_State *L, int top)
{
API_FCT(debug);
@ -352,6 +364,8 @@ void ModApiUtil::Initialize(lua_State *L, int top)
API_FCT(compress);
API_FCT(decompress);
API_FCT(mkdir);
}
void ModApiUtil::InitializeAsync(AsyncEngine& engine)
@ -374,5 +388,7 @@ void ModApiUtil::InitializeAsync(AsyncEngine& engine)
ASYNC_API_FCT(compress);
ASYNC_API_FCT(decompress);
ASYNC_API_FCT(mkdir);
}

View File

@ -78,7 +78,7 @@ private:
// is_yes(arg)
static int l_is_yes(lua_State *L);
// get_scriptdir()
// get_builtin_path()
static int l_get_builtin_path(lua_State *L);
// compress(data, method, ...)
@ -87,6 +87,9 @@ private:
// decompress(data, method, ...)
static int l_decompress(lua_State *L);
// mkdir(path)
static int l_mkdir(lua_State *L);
public:
static void Initialize(lua_State *L, int top);