X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=libs%2Fsys%2Fluasrc%2Fsys.lua;h=b3155c8c8542c8fbda06b8acf4049c3d616ccf18;hb=5067e2d185bbd1fdf029a8da2a84895bbccfad02;hp=cf7fbc05f895c81a63e3e4288c08ecab6f71da4b;hpb=df723f9d9e858d56cdf4cd2fee15e1549a353ad0;p=project%2Fluci.git diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index cf7fbc05f..b3155c8c8 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -60,27 +60,15 @@ exec = luci.util.exec --- Invoke the luci-flash executable to write an image to the flash memory. -- @param image Local path or URL to image file -- @param kpattern Pattern of files to keep over flash process --- @return boolean indicating status --- @return error message if any +-- @return Return value of os.execute() function flash(image, kpattern) local cmd = "luci-flash " if kpattern then cmd = cmd .. "-k '" .. kpattern:gsub("'", "") .. "' " end - cmd = cmd .. "'" .. image:gsub("'", "") .. "' 2>/dev/null &" - - local fp = io.popen(cmd) - fp:setvbuf("no") - - local line = fp:read() - - if line == "Invalid image type" then - fp:close() - return false, line - else - fp:close() - return true - end + cmd = cmd .. "'" .. image:gsub("'", "") .. "' >/dev/null 2>&1" + + return os.execute(cmd) end --- Retrieve information about currently mounted file systems. @@ -89,27 +77,44 @@ function mounts() local data = {} local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"} local ps = luci.util.execi("df") - + if not ps then return else ps() end - + for line in ps do local row = {} - + local j = 1 for value in line:gmatch("[^%s]+") do row[k[j]] = value j = j + 1 end - + if row[k[1]] then + + -- this is a rather ugly workaround to cope with wrapped lines in + -- the df output: + -- + -- /dev/scsi/host0/bus0/target0/lun0/part3 + -- 114382024 93566472 15005244 86% /mnt/usb + -- + + if not row[k[2]] then + j = 2 + line = ps() + for value in line:gmatch("[^%s]+") do + row[k[j]] = value + j = j + 1 + end + end + table.insert(data, row) end end - + return data end @@ -347,37 +352,37 @@ function process.list() local data = {} local k local ps = luci.util.execi("top -bn1") - + if not ps then return end - + while true do local line = ps() if not line then return end - + k = luci.util.split(luci.util.trim(line), "%s+", nil, true) if k[1] == "PID" then break end end - + for line in ps do local row = {} - + line = luci.util.trim(line) for i, value in ipairs(luci.util.split(line, "%s+", #k-1, true)) do row[k[i]] = value end - + local pid = tonumber(row[k[1]]) if pid then data[pid] = row end end - + return data end