-local data_path = "data";\r
-dm.set_data_path(data_path);\r
-\r
-local path_separator = "/"; if os.getenv("WINDIR") then path_separator = "\\" end\r
-local _mkdir = {}\r
-function mkdir(path)\r
- path = path:gsub("/", path_separator);\r
- --print("mkdir",path);\r
- local x = io.popen("mkdir "..path.." 2>&1"):read("*a");\r
-end\r
-function encode(s) return s and (s:gsub("%W", function (c) return string.format("%%%x", c:byte()); end)); end\r
-function getpath(username, host, datastore, ext)\r
- ext = ext or "dat";\r
- if username then\r
- return format("%s/%s/%s/%s.%s", data_path, encode(host), datastore, encode(username), ext);\r
- elseif host then\r
- return format("%s/%s/%s.%s", data_path, encode(host), datastore, ext);\r
- else\r
- return format("%s/%s.%s", data_path, datastore, ext);\r
- end\r
-end\r
-function mkdirs(host)\r
- if not _mkdir[host] then\r
- local host_dir = string.format("%s/%s", data_path, encode(host));\r
- mkdir(host_dir);\r
- mkdir(host_dir.."/accounts");\r
- mkdir(host_dir.."/vcard");\r
- mkdir(host_dir.."/roster");\r
- mkdir(host_dir.."/private");\r
- mkdir(host_dir.."/offline");\r
- _mkdir[host] = true;\r
- end\r
-end\r
-mkdir(data_path);\r