]> source.dussan.org Git - rspamd.git/commitdiff
Add getopt module
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Dec 2015 15:26:37 +0000 (15:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Dec 2015 15:26:37 +0000 (15:26 +0000)
src/rspamadm/getopt.lua.in [new file with mode: 0644]

diff --git a/src/rspamadm/getopt.lua.in b/src/rspamadm/getopt.lua.in
new file mode 100644 (file)
index 0000000..d069d2d
--- /dev/null
@@ -0,0 +1,31 @@
+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
+