convert luci.fs users to nixio.fs api
[project/luci.git] / libs / web / luasrc / template.lua
index 4aa9b09..e8f65e3 100644 (file)
@@ -24,13 +24,14 @@ limitations under the License.
 
 ]]--
 
-local fs = require"luci.fs"
+local fs = require "nixio.fs"
 local sys = require "luci.sys"
 local util = require "luci.util"
 local table = require "table"
 local string = require "string"
 local config = require "luci.config"
 local coroutine = require "coroutine"
+local nixio = require "nixio", require "nixio.util"
 
 local tostring, pairs, loadstring = tostring, pairs, loadstring
 local setmetatable, loadfile = setmetatable, loadfile
@@ -63,7 +64,7 @@ function compile(template)
 
        -- Search all <% %> expressions
        local function expr_add(ws1, skip1, command, skip2, ws2)
-               table.insert(expr, command)
+               expr[#expr+1] = command
                return ( #skip1 > 0 and "" or ws1 ) .. 
                       "<%" .. tostring(#expr) .. "%>" ..
                       ( #skip2 > 0 and "" or ws2 )
@@ -88,9 +89,9 @@ function compile(template)
        
        -- Replacements
        local r_include = '")\ninclude("%s")\nwrite("'
-       local r_i18n    = '"..translate("%1","%2").."'
-       local r_i18n2    = '"..translate("%1", "").."'
-       local r_pexec   = '"..(%s or "").."'
+       local r_i18n    = '")\nwrite(translate("%1","%2"))\nwrite("'
+       local r_i18n2   = '")\nwrite(translate("%1", ""))\nwrite("'
+       local r_pexec   = '")\nwrite(tostring(%s or ""))\nwrite("'
        local r_exec    = '")\n%s\nwrite("'
        
        -- Parse the expressions
@@ -172,32 +173,33 @@ function Template.__init__(self, name)
        local err       
        
        if compiler_mode == "file" then
-               local tplmt = fs.mtime(sourcefile) or fs.mtime(sourcefile .. ".htm")
-               local commt = fs.mtime(compiledfile)
+               local tplmt = fs.stat(sourcefile, "mtime") or fs.stat(sourcefile .. ".htm", "mtime")
+               local commt = fs.stat(compiledfile, "mtime")
                
                if not fs.mtime(cdir) then
-                       fs.mkdir(cdir, true)
-                       fs.chmod(fs.dirname(cdir), "a+rxw")
+                       fs.mkdirr(cdir)
+                       fs.chmod(fs.dirname(cdir), 777)
                end
                
                assert(tplmt or commt, "No such template: " .. name)
                                
                -- Build if there is no compiled file or if compiled file is outdated
-               if not commt or (commt  and tplmt and commt < tplmt) then
+               if not commt or (commt and tplmt and commt < tplmt) then
                        local source
                        source, err = fs.readfile(sourcefile) or fs.readfile(sourcefile .. ".htm")
                        
                        if source then
                                local compiled, err = compile(source)
                                
-                               fs.writefile(compiledfile, util.get_bytecode(compiled))
-                               fs.chmod(compiledfile, "a-rwx,u+rw")
+                               local f = nixio.open(compiledfile, "w", 600)
+                               f:writeall(util.get_bytecode(compiled))
+                               f:close()
                                self.template = compiled
                        end
                else
                        assert(
                                sys.process.info("uid") == fs.stat(compiledfile, "uid")
-                               and fs.stat(compiledfile, "mode") == "rw-------",
+                               and fs.stat(compiledfile, "modestr") == "rw-------",
                                "Fatal: Cachefile is not sane!"
                        )
                        self.template, err = loadfile(compiledfile)