diff options
Diffstat (limited to 'lualib/rspamadm/getopt.lua')
-rw-r--r-- | lualib/rspamadm/getopt.lua | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lualib/rspamadm/getopt.lua b/lualib/rspamadm/getopt.lua new file mode 100644 index 000000000..bd0a2f67e --- /dev/null +++ b/lualib/rspamadm/getopt.lua @@ -0,0 +1,34 @@ +local function getopt(arg, options) + local tab = {} + for k, v in ipairs(arg) do + if string.sub(v, 1, 2) == "--" then + local x = string.find(v, "=", 1, true) + if x then tab[string.sub(v, 3, x - 1)] = string.sub(v, x + 1) + else tab[string.sub(v, 3)] = true + end + elseif string.sub(v, 1, 1) == "-" then + local y = 2 + local l = string.len(v) + local jopt + while (y <= l) do + jopt = string.sub(v, y, y) + if string.find(options, jopt, 1, true) then + if y < l then + tab[jopt] = string.sub(v, y + 1) + y = l + else + tab[jopt] = arg[k + 1] + end + else + tab[jopt] = true + end + y = y + 1 + end + end + end + return tab +end + +return { + getopt = getopt +} |