aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-08-11 10:29:25 +0200
committerKim Alvefur <zash@zash.se>2015-08-11 10:29:25 +0200
commitaf5dd482f0ece847376d7d4411806b85f48e996d (patch)
tree02d74684d9b149679340af6d76c462c2a1d4a0b3 /util
parent1338b18fb4cd898fadce44250a4cc04b0f27aca4 (diff)
parentb49513cdeb2bb123625fb87f53a04d42b7eb6fb2 (diff)
downloadprosody-af5dd482f0ece847376d7d4411806b85f48e996d.tar.gz
prosody-af5dd482f0ece847376d7d4411806b85f48e996d.zip
Merge 0.10->trunk
Diffstat (limited to 'util')
-rw-r--r--util/interpolation.lua18
-rw-r--r--util/prosodyctl.lua30
-rw-r--r--util/sql.lua4
3 files changed, 30 insertions, 22 deletions
diff --git a/util/interpolation.lua b/util/interpolation.lua
index b78bdfd1..315cc203 100644
--- a/util/interpolation.lua
+++ b/util/interpolation.lua
@@ -1,6 +1,6 @@
-- Simple template language
--
--- The new() function takes a pattern and an escape function and returns
+-- The new() function takes a pattern and an escape function and returns
-- a render() function. Both are required.
--
-- The function render() takes a string template and a table of values.
@@ -9,14 +9,14 @@
-- symbol.
--
-- Variants are:
--- {name} is substituted for values["name"] and is escaped using the
+-- {name} is substituted for values["name"] and is escaped using the
-- second argument to new_render(). To disable the escaping, use {name!}.
-- {name.item} can be used to access table items.
-- To renter lists of items: {name# item number {idx} is {item} }
-- Or key-value pairs: {name% t[ {idx} ] = {item} }
--- To show a defaults for missing values {name? sub-template } can be used,
+-- To show a defaults for missing values {name? sub-template } can be used,
-- which renders a sub-template if values["name"] is false-ish.
--- {name& sub-template } does the opposite, the sub-template is rendered
+-- {name& sub-template } does the opposite, the sub-template is rendered
-- if the selected value is anything but false or nil.
local type, tostring = type, tostring;
@@ -24,7 +24,7 @@ local pairs, ipairs = pairs, ipairs;
local s_sub, s_gsub, s_match = string.sub, string.gsub, string.match;
local t_concat = table.concat;
-local function new_render(pat, escape)
+local function new_render(pat, escape, funcs)
-- assert(type(pat) == "string", "bad argument #1 to 'new_render' (string expected)");
-- assert(type(escape) == "function", "bad argument #2 to 'new_render' (function expected)");
local function render(template, values)
@@ -42,6 +42,14 @@ local function new_render(pat, escape)
if not value then break; end
end
end
+ if funcs then
+ while value ~= nil and opt == '|' do
+ local f;
+ f, opt, e = s_match(block, "^([%a_][%w_.]*)(%p?)()", e);
+ f = funcs[f];
+ if f then value = f(value); end
+ end
+ end
if opt == '#' or opt == '%' then
if type(value) ~= "table" then return ""; end
local iter = opt == '#' and ipairs or pairs;
diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua
index cc48d590..9e30f8ea 100644
--- a/util/prosodyctl.lua
+++ b/util/prosodyctl.lua
@@ -1,7 +1,7 @@
-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
---
+--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
@@ -146,7 +146,7 @@ function adduser(params)
if not(provider) or provider.name == "null" then
usermanager.initialize_host(host);
end
-
+
local ok, errmsg = usermanager.create_user(user, password, host);
if not ok then
return false, errmsg;
@@ -162,7 +162,7 @@ function user_exists(params)
if not(provider) or provider.name == "null" then
usermanager.initialize_host(host);
end
-
+
return usermanager.user_exists(user, host);
end
@@ -170,7 +170,7 @@ function passwd(params)
if not _M.user_exists(params) then
return false, "no-such-user";
end
-
+
return _M.adduser(params);
end
@@ -179,7 +179,7 @@ function deluser(params)
return false, "no-such-user";
end
local user, host = nodeprep(params.user), nameprep(params.host);
-
+
return usermanager.delete_user(user, host);
end
@@ -192,30 +192,30 @@ function getpid()
if type(pidfile) ~= "string" then
return false, "invalid-pidfile";
end
-
+
local modules_enabled = set.new(config.get("*", "modules_disabled"));
if prosody.platform ~= "posix" or modules_enabled:contains("posix") then
return false, "no-posix";
end
-
+
local file, err = io.open(pidfile, "r+");
if not file then
return false, "pidfile-read-failed", err;
end
-
+
local locked, err = lfs.lock(file, "w");
if locked then
file:close();
return false, "pidfile-not-locked";
end
-
+
local pid = tonumber(file:read("*a"));
file:close();
-
+
if not pid then
return false, "invalid-pid";
end
-
+
return true, pid;
end
@@ -256,10 +256,10 @@ function stop()
if not ret then
return false, "not-running";
end
-
+
local ok, pid = _M.getpid()
if not ok then return false, pid; end
-
+
signal.kill(pid, signal.SIGTERM);
return true;
end
@@ -272,10 +272,10 @@ function reload()
if not ret then
return false, "not-running";
end
-
+
local ok, pid = _M.getpid()
if not ok then return false, pid; end
-
+
signal.kill(pid, signal.SIGHUP);
return true;
end
diff --git a/util/sql.lua b/util/sql.lua
index f934bbdf..be34c381 100644
--- a/util/sql.lua
+++ b/util/sql.lua
@@ -285,7 +285,7 @@ function engine:set_encoding() -- to UTF-8
if not ok then
return ok, err;
end
-
+
if driver == "MySQL" then
local ok, actual_charset = self:transaction(function ()
return self:select"SHOW SESSION VARIABLES LIKE 'character_set_client'";
@@ -297,7 +297,7 @@ function engine:set_encoding() -- to UTF-8
end
end
end
-
+
return true;
end
local engine_mt = { __index = engine };