From c711b12514d29da6123247e39ab8a12e8633a393 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 3 Mar 2018 13:10:11 +0000 Subject: [PATCH] [Minor] Support multiple arguments in lua getopt --- lualib/rspamadm/getopt.lua | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lualib/rspamadm/getopt.lua b/lualib/rspamadm/getopt.lua index bd0a2f67e..c36774092 100644 --- a/lualib/rspamadm/getopt.lua +++ b/lualib/rspamadm/getopt.lua @@ -1,9 +1,25 @@ +local function insert_option(tab, name, value) + if tab[name] then + if type(tab[name] == 'table') then + table.insert(tab[name], value) + else + local old_val = tab[name] + tab[name] = { + old_val, + value + } + end + else + tab[name] = value + end +end + 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) + if x then insert_option(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 @@ -14,10 +30,10 @@ local function getopt(arg, options) 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) + insert_option(tab, jopt, string.sub(v, y + 1)) y = l else - tab[jopt] = arg[k + 1] + insert_option(tab, jopt, arg[k + 1]) end else tab[jopt] = true -- 2.39.5