summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/daemoncontrol.lua0
-rw-r--r--lib/getopts.lua59
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/daemoncontrol.lua b/lib/daemoncontrol.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/daemoncontrol.lua
diff --git a/lib/getopts.lua b/lib/getopts.lua
new file mode 100644
index 0000000..45aca7b
--- /dev/null
+++ b/lib/getopts.lua
@@ -0,0 +1,59 @@
+module (..., package.seeall)
+
+function getoptsfromfile (file, search, filter)
+ local opts = nil
+ local conf_file = fs.read_file_as_array ( file )
+ for i=1,table.maxn(conf_file) do
+ local l = conf_file[i]
+ if not string.find ( l, "^[;#].*" ) then
+ local a = string.match ( l, "^%s*(%S*)=" )
+ if (a) then
+ if not (search) or (search == a) then
+ local b = string.match ( l, '^%s*%S*%=%"?(.-)%s*%"?%s*$' )
+ local optstable = getopts.opts_to_table(b,filter)
+ if (optstable) or not (filter) then
+ if not (opts) then
+ opts = {}
+ end
+ if (optstable) then
+ opts[a] = optstable
+ else
+ opts[a] = b
+ end
+ end
+ end
+ end
+ end
+ end
+ return opts
+end
+
+function opts_to_table ( optstring, filter )
+ local optsparams = nil
+ local optstr = string.match(optstring, "^\"?(.*)%\"?") -- Filter away leading/trailing "
+ if optstr then
+ local option = ""
+ local optvalue = ""
+ for j = 1, string.len(optstr) do
+ if (string.sub(optstr, j, j) == "-") then
+ option=string.sub(optstr, j, j+1)
+ if not (filter) or (filter == option) then
+ for k = j+1, string.len(optstr) do
+ if not (optsparams) then
+ optsparams = {}
+ end
+ if (string.sub(optstr, k, k) == "-") then
+ optsparams[option] = string.match(string.sub(optstr, j+2, k-1),"^%s*(.*)%s?")
+ break
+ end
+ if (k == string.len(optstr)) then
+ optsparams[option] = string.match(string.sub(optstr, j+2, k),"^%s*(.*)%s?")
+ break
+ end
+ end
+ end
+ end
+ end
+ end
+ return optsparams
+end