(pat and (" '%s'" % pat:gsub("'", "")) or ""))
if fd then
- local name, version, desc
+ local name, version, sz, desc
while true do
local line = fd:read("*l")
if not line then break end
- name, version, desc = line:match("^(.-) %- (.-) %- (.+)")
+ name, version, sz, desc = line:match("^(.-) %- (.-) %- (.-) %- (.+)")
if not name then
- name, version = line:match("^(.-) %- (.+)")
+ name, version, sz = line:match("^(.-) %- (.-) %- (.+)")
desc = ""
end
- cb(name, version, desc)
+ if name and version then
+ if #version > 26 then
+ version = version:sub(1,21) .. ".." .. version:sub(-3,-1)
+ end
+
+ cb(name, version, sz, desc)
+ end
name = nil
version = nil
+ sz = nil
desc = nil
end
end
function list_all(pat, cb)
- _list("list", pat, cb)
+ _list("list --size", pat, cb)
end
function list_installed(pat, cb)
- _list("list_installed", pat, cb)
+ _list("list_installed --size", pat, cb)
end
function find(pat, cb)
- _list("find", pat, cb)
+ _list("find --size", pat, cb)
end
local av1 = util.split(ver1, "[%.%-]", nil, true)
local av2 = util.split(ver2, "[%.%-]", nil, true)
- for i = 1, math.max(table.getn(av1),table.getn(av2)), 1 do
+ local max = table.getn(av1)
+ if (table.getn(av1) < table.getn(av2)) then
+ max = table.getn(av2)
+ end
+
+ for i = 1, max, 1 do
local s1 = av1[i] or ""
local s2 = av2[i] or ""
-- all equal and not compare greater or lower then true
return not (comp == "<" or comp == ">")
end
-