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
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
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
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
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