aboutsummaryrefslogtreecommitdiffstats
path: root/lualib/rspamadm/getopt.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lualib/rspamadm/getopt.lua')
-rw-r--r--lualib/rspamadm/getopt.lua34
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
+}