From 592b94ed536fa16b80860928132df31b9260cd06 Mon Sep 17 00:00:00 2001 From: Mika Havela Date: Sun, 13 Jan 2008 21:16:50 +0000 Subject: Moving getopts function from openntpd-model to a library.\nMoving daemon-control to a library.\nThese 2 libraries are not documented yet and are not working as they should. Work in progress! git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@558 ab2d0c66-481e-0410-8bed-d214d4d58bed --- lib/daemoncontrol.lua | 0 lib/getopts.lua | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 lib/daemoncontrol.lua create mode 100644 lib/getopts.lua (limited to 'lib') diff --git a/lib/daemoncontrol.lua b/lib/daemoncontrol.lua new file mode 100644 index 0000000..e69de29 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 -- cgit v1.2.3