projects
/
project
/
luci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
662186e
)
* luci/libs/sys: add workaround for wrapped lines in df output
author
Jo-Philipp Wich
<jow@openwrt.org>
Tue, 16 Sep 2008 02:22:13 +0000
(
02:22
+0000)
committer
Jo-Philipp Wich
<jow@openwrt.org>
Tue, 16 Sep 2008 02:22:13 +0000
(
02:22
+0000)
libs/sys/luasrc/sys.lua
patch
|
blob
|
history
diff --git
a/libs/sys/luasrc/sys.lua
b/libs/sys/luasrc/sys.lua
index e27e1c4e8ae6a0a1f180d695682fd86e1bc0d9bf..b3155c8c8542c8fbda06b8acf4049c3d616ccf18 100644
(file)
--- a/
libs/sys/luasrc/sys.lua
+++ b/
libs/sys/luasrc/sys.lua
@@
-77,27
+77,44
@@
function mounts()
local data = {}
local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"}
local ps = luci.util.execi("df")
local data = {}
local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"}
local ps = luci.util.execi("df")
-
+
if not ps then
return
else
ps()
end
if not ps then
return
else
ps()
end
-
+
for line in ps do
local row = {}
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
local j = 1
for value in line:gmatch("[^%s]+") do
row[k[j]] = value
j = j + 1
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)
end
end
table.insert(data, row)
end
end
-
+
return data
end
return data
end
@@
-335,37
+352,37
@@
function process.list()
local data = {}
local k
local ps = luci.util.execi("top -bn1")
local data = {}
local k
local ps = luci.util.execi("top -bn1")
-
+
if not ps then
return
end
if not ps then
return
end
-
+
while true do
local line = ps()
if not line 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
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 = {}
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
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
local pid = tonumber(row[k[1]])
if pid then
data[pid] = row
end
end
-
+
return data
end
return data
end