diff options
author | Nathan Angelacos <nangel@tetrasec.net> | 2008-09-29 20:16:06 +0000 |
---|---|---|
committer | Nathan Angelacos <nangel@tetrasec.net> | 2008-09-29 20:16:06 +0000 |
commit | 06f12e51f6a31a06008a482058107f1511ba2ebf (patch) | |
tree | 6bf40f8750ed81c57d87ed0b0df9abeaea6bf300 /lib/format.lua | |
parent | 6653bf15788592e34d1e5acce850142c15e52b46 (diff) | |
download | acf-core-06f12e51f6a31a06008a482058107f1511ba2ebf.tar.bz2 acf-core-06f12e51f6a31a06008a482058107f1511ba2ebf.tar.xz |
Auditing functions in place
git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@1536 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'lib/format.lua')
-rw-r--r-- | lib/format.lua | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/format.lua b/lib/format.lua index 057bc03..1407b97 100644 --- a/lib/format.lua +++ b/lib/format.lua @@ -187,22 +187,22 @@ end -- Takes a str and expands any ${...} constructs with the Lua variable -- ex: a="foo"; print(expand_bash_syntax_vars("a=${a}) - > "a=foo" - -function expand_bash_syntax_vars ( str ) - local deref = function ( f) - local v = _G - for w in string.gfind(f, "[%w_]+") do - v = v[w] - end - return v - end - - for w in string.gmatch (str, "${[^}]*}" ) do - local rvar = string.sub(w,3,-2) - local rval = ( deref(rvar) or "nil" ) - str = string.gsub (str, w, rval) - end - return (str) +expand_bash_syntax_vars = function (str) + + local deref = function ( f) + local v = getfenv(3) -- get the upstream global env + for w in string.gfind(f, "[%w_]+") do + if v then v = v[w] end + end + return v + end + + for w in string.gmatch (str, "${[^}]*}" ) do + local rvar = string.sub(w,3,-2) + local rval = ( deref(rvar) or "nil" ) + str = string.gsub (str, w, rval) + end + return (str) end -- Removes the linenum line from str and replaces it with line. |