aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShadowNinja <shadowninja@minetest.net>2014-09-09 15:17:01 -0400
committerShadowNinja <shadowninja@minetest.net>2015-05-16 18:32:37 -0400
commit05ab9973f9029676dfa252617c8cb698ab13eb24 (patch)
tree38737835d842be0f7df15cd13389800683c935b1
parent3a8c7888807e4483bbdb3edd81c9893f3e2f427d (diff)
downloadminetest-05ab9973f9029676dfa252617c8cb698ab13eb24.tar.gz
minetest-05ab9973f9029676dfa252617c8cb698ab13eb24.tar.bz2
minetest-05ab9973f9029676dfa252617c8cb698ab13eb24.zip
Add core.mkdir
-rw-r--r--doc/lua_api.txt61
-rw-r--r--src/script/lua_api/l_util.cpp16
-rw-r--r--src/script/lua_api/l_util.h5
3 files changed, 49 insertions, 33 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index 2421af069..c82208286 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -1674,36 +1674,36 @@ 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:
-
- {
- address = "127.0.0.1", -- IP address of client
- ip_version = 4, -- IPv4 / IPv6
- min_rtt = 0.01, -- minimum round trip time
- max_rtt = 0.2, -- maximum round trip time
- avg_rtt = 0.02, -- average round trip time
- min_jitter = 0.01, -- minimum packet time jitter
- max_jitter = 0.5, -- maximum packet time jitter
- avg_jitter = 0.03, -- average packet time jitter
- connection_uptime = 200, -- seconds since client connected
-
- -- following information is available on debug build only!!!
- -- DO NOT USE IN MODS
- --ser_vers = 26, -- serialization version used by client
- --prot_vers = 23, -- protocol version used by client
- --major = 0, -- major version number
- --minor = 4, -- minor version number
- --patch = 10, -- patch version number
- --vers_string = "0.4.9-git", -- full version string
- --state = "Active" -- current client state
- }
+* `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
+ min_rtt = 0.01, -- minimum round trip time
+ max_rtt = 0.2, -- maximum round trip time
+ avg_rtt = 0.02, -- average round trip time
+ min_jitter = 0.01, -- minimum packet time jitter
+ max_jitter = 0.5, -- maximum packet time jitter
+ avg_jitter = 0.03, -- average packet time jitter
+ connection_uptime = 200, -- seconds since client connected
+
+ -- following information is available on debug build only!!!
+ -- DO NOT USE IN MODS
+ --ser_vers = 26, -- serialization version used by client
+ --prot_vers = 23, -- protocol version used by client
+ --major = 0, -- major version number
+ --minor = 4, -- minor version number
+ --patch = 10, -- patch version number
+ --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,11 +2282,8 @@ 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
+ * 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`
parameter.
@@ -2306,7 +2303,7 @@ minetest.global_exists(name)
* Any function in the minetest namespace can be called using the syntax
`minetest.env:somefunction(somearguments)`
instead of `minetest.somefunction(somearguments)`
- * Deprecated, but support is not to be dropped soon
+ * Deprecated, but support is not to be dropped soon
### Global tables
* `minetest.registered_items`
diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp
index 151d449d5..e16b6feab 100644
--- a/src/script/lua_api/l_util.cpp
+++ b/src/script/lua_api/l_util.cpp
@@ -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);
}
diff --git a/src/script/lua_api/l_util.h b/src/script/lua_api/l_util.h
index e82432381..bf7cd71d3 100644
--- a/src/script/lua_api/l_util.h
+++ b/src/script/lua_api/l_util.h
@@ -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);