* luci/libs/sys: add workaround for wrapped lines in df output
This commit is contained in:
parent
662186e815
commit
ccf1355343
1 changed files with 29 additions and 12 deletions
|
@ -77,27 +77,44 @@ function mounts()
|
||||||
local data = {}
|
local data = {}
|
||||||
local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"}
|
local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"}
|
||||||
local ps = luci.util.execi("df")
|
local ps = luci.util.execi("df")
|
||||||
|
|
||||||
if not ps then
|
if not ps then
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
ps()
|
ps()
|
||||||
end
|
end
|
||||||
|
|
||||||
for line in ps do
|
for line in ps do
|
||||||
local row = {}
|
local row = {}
|
||||||
|
|
||||||
local j = 1
|
local j = 1
|
||||||
for value in line:gmatch("[^%s]+") do
|
for value in line:gmatch("[^%s]+") do
|
||||||
row[k[j]] = value
|
row[k[j]] = value
|
||||||
j = j + 1
|
j = j + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if row[k[1]] then
|
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)
|
table.insert(data, row)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -335,37 +352,37 @@ function process.list()
|
||||||
local data = {}
|
local data = {}
|
||||||
local k
|
local k
|
||||||
local ps = luci.util.execi("top -bn1")
|
local ps = luci.util.execi("top -bn1")
|
||||||
|
|
||||||
if not ps then
|
if not ps then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
local line = ps()
|
local line = ps()
|
||||||
if not line then
|
if not line then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
k = luci.util.split(luci.util.trim(line), "%s+", nil, true)
|
k = luci.util.split(luci.util.trim(line), "%s+", nil, true)
|
||||||
if k[1] == "PID" then
|
if k[1] == "PID" then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for line in ps do
|
for line in ps do
|
||||||
local row = {}
|
local row = {}
|
||||||
|
|
||||||
line = luci.util.trim(line)
|
line = luci.util.trim(line)
|
||||||
for i, value in ipairs(luci.util.split(line, "%s+", #k-1, true)) do
|
for i, value in ipairs(luci.util.split(line, "%s+", #k-1, true)) do
|
||||||
row[k[i]] = value
|
row[k[i]] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
local pid = tonumber(row[k[1]])
|
local pid = tonumber(row[k[1]])
|
||||||
if pid then
|
if pid then
|
||||||
data[pid] = row
|
data[pid] = row
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue