util.startup: Check root after detecting platform and reading config (thanks SigmaTel71)
Ensures that startup.detect_platform() runs so know whether to use the
POSIX method of checking the current user or something else. Also after
reading the config so we know whether the root override setting is set.
-- Generate net/http/codes.lua from IANA HTTP status code registry
if not pcall(require, "prosody.loader") then
pcall(require, "loader");
end
local xml = require "prosody.util.xml";
local registry = xml.parse(io.read("*a"), { allow_processing_instructions = true });
io.write([[
local response_codes = {
-- Source: http://www.iana.org/assignments/http-status-codes
]]);
for record in registry:get_child("registry"):childtags("record") do
-- Extract values
local value = record:get_child_text("value");
local description = record:get_child_text("description");
local ref = record:get_child_text("xref");
local code = tonumber(value);
-- Space between major groups
if code and code % 100 == 0 then
io.write("\n");
end
-- Reserved and Unassigned entries should be not be included
if description == "Reserved" or description == "Unassigned" or description == "(Unused)" then
code = nil;
end
-- Non-empty references become comments
if ref and ref:find("%S") then
ref = " -- " .. ref;
else
ref = "";
end
io.write((code and "\t[%d] = %q;%s\n" or "\t-- [%s] = %q;%s\n"):format(code or value, description, ref));
end
io.write([[};
for k,v in pairs(response_codes) do response_codes[k] = k.." "..v; end
return setmetatable(response_codes, { __index = function(_, k) return k.." Unassigned"; end })
]]);