From 18b960e4e4420c05277d77891953e058e4a3a239 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 16 Nov 2007 10:40:44 +0000 Subject: use posix.dir() rather than popen("find ...") git-svn-id: svn://svn.alpinelinux.org/acf/alpine-baselayout/trunk@318 ab2d0c66-481e-0410-8bed-d214d4d58bed --- logfiles-model.lua | 55 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/logfiles-model.lua b/logfiles-model.lua index 0cf58f5..03b92ba 100644 --- a/logfiles-model.lua +++ b/logfiles-model.lua @@ -20,28 +20,43 @@ local function file_info ( path ) return lastmod,size,fileinuseresult end -local function list_files ( path ) - local listed_files = {} - local open_files = {} - split = require("split") - local files = io.popen("find " .. path .. " -type f | sort") +-- function to recursively inserts all filenames in a dir into an array +function recursedir(path, filearray) + local k,v + for k,v in pairs(posix.dir(path) or {}) do + -- we ignore files that begins with a '.' + if not string.match(v, "^%.") then + local f = path .. "/" .. v + if (posix.stat(f).type == "directory") then + recursedir(f, filearray) + else + table.insert(filearray, f) + end + end + end +end - table.insert ( listed_files , cfe{inuse="Delete", save="Save", view="View", size="Size", lastmod="Last Modified", name="File"} ) +local function list_files ( ... ) + local listed_files = { cfe{inuse="Delete", save="Save", view="View", + size="Size", lastmod="Last Modified", name="File"} } + local open_files = {} +-- split = require("split") + local files = {} + local k,v - if ( files ) then - local f = files:read("*a") or "unknown" - for k,v in pairs(split("%s", f)) do - if v ~= "" then - local lastmod,size,fileinuseresult = file_info(v) - if ( fileinuseresult == "Delete" ) then - del="/delete?name=" .. v - else - del=nil - end - table.insert ( listed_files , cfe{inuse=fileinuseresult, del=del, save="/download?name=" .. v, view="/view?name=" .. v, size=size, lastmod=lastmod, name=v, type="", id=k} ) - end + -- generate a singe table with all the files + for k,v in pairs{...} do + recursedir(v, files) + end + + for k,v in pairs(files) do + local lastmod,size,fileinuseresult = file_info(v) + if ( fileinuseresult == "Delete" ) then + del="/delete?name=" .. v + else + del=nil end - files:close() + table.insert ( listed_files , cfe{inuse=fileinuseresult, del=del, save="/download?name=" .. v, view="/view?name=" .. v, size=size, lastmod=lastmod, name=v, type="", id=k} ) end return listed_files end @@ -86,7 +101,7 @@ local function checkfileforview ( path ) end get = function (self) - return list_files( "/var/log /tmp/squid/log" ) + return list_files( "/var/log", "/tmp/squid/log" ) end delete = function (self,filetodelete) -- cgit v1.2.3