]> git.lizzy.rs Git - worldedit.git/commitdiff
Allow more characters in file names
authorShadowNinja <shadowninja@minetest.net>
Mon, 1 Jun 2015 21:08:43 +0000 (17:08 -0400)
committerShadowNinja <shadowninja@minetest.net>
Mon, 1 Jun 2015 21:08:43 +0000 (17:08 -0400)
worldedit_commands/init.lua

index 612de62ad4eb19152e5c1e9bfa85389179e38063..83a127eaa73ba5f77fdc4117319461846b38cd92 100644 (file)
@@ -78,6 +78,10 @@ local function mkdir(path)
        end\r
 end\r
 \r
+local function check_filename(name)\r
+       return name:find("^[%w%s%^&'@{}%[%],%$=!%-#%(%)%%%.%+~_]+$") ~= nil\r
+end\r
+\r
 \r
 minetest.register_chatcommand("/about", {\r
        params = "",\r
@@ -885,11 +889,10 @@ minetest.register_chatcommand("/save", {
                        worldedit.player_notify(name, "invalid usage: " .. param)\r
                        return\r
                end\r
-               if not param:find("^[a-zA-Z0-9_%-.]+$") then\r
+               if not check_filename(param) then\r
                        worldedit.player_notify(name, "Disallowed file name: " .. param)\r
                        return\r
                end\r
-\r
                local result, count = worldedit.serialize(worldedit.pos1[name],\r
                                worldedit.pos2[name])\r
 \r
@@ -923,8 +926,8 @@ minetest.register_chatcommand("/allocate", {
                        worldedit.player_notify(name, "invalid usage: " .. param)\r
                        return\r
                end\r
-               if not string.find(param, "^[%w \t.,+-_=!@#$%%^&*()%[%]{};'\"]+$") then\r
-                       worldedit.player_notify(name, "invalid file name: " .. param)\r
+               if not check_filename(param) then\r
+                       worldedit.player_notify(name, "Disallowed file name: " .. param)\r
                        return\r
                end\r
 \r
@@ -1056,7 +1059,7 @@ minetest.register_chatcommand("/mtschemcreate", {
                        worldedit.player_notify(name, "No filename specified")\r
                        return\r
                end\r
-               if not param:find("^[a-zA-Z0-9_%-.]+$") then\r
+               if not check_filename(param) then\r
                        worldedit.player_notify(name, "Disallowed file name: " .. param)\r
                        return\r
                end\r
@@ -1083,10 +1086,14 @@ minetest.register_chatcommand("/mtschemplace", {
        description = "Load nodes from \"(world folder)/schems/<file>.mts\" with position 1 of the current WorldEdit region as the origin",\r
        privs = {worldedit=true},\r
        func = function(name, param)\r
-               if param == nil then\r
+               if param == "" then\r
                        worldedit.player_notify(name, "no filename specified")\r
                        return\r
                end\r
+               if not check_filename(param) then\r
+                       worldedit.player_notify(name, "Disallowed file name: " .. param)\r
+                       return\r
+               end\r
 \r
                local pos = get_position(name)\r
                if pos == nil then return end\r