X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fluci-base%2Fluasrc%2Fmodel%2Fipkg.lua;h=e653b0346558d81322e9c9c5fcdf05f2c3301188;hp=976081b84dd7e0c9a31b891adb8857f0663ded65;hb=1cb3adb619bdd876867f4c4da615ea850464e711;hpb=305528b3ccc5972e159385014f61fcea01b6ac9f diff --git a/modules/luci-base/luasrc/model/ipkg.lua b/modules/luci-base/luasrc/model/ipkg.lua index 976081b84..e653b0346 100644 --- a/modules/luci-base/luasrc/model/ipkg.lua +++ b/modules/luci-base/luasrc/model/ipkg.lua @@ -127,22 +127,29 @@ local function _list(action, pat, cb) (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 @@ -151,15 +158,15 @@ local function _list(action, pat, cb) 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 @@ -211,7 +218,12 @@ function compare_versions(ver1, comp, ver2) 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 "" @@ -228,4 +240,3 @@ function compare_versions(ver1, comp, ver2) -- all equal and not compare greater or lower then true return not (comp == "<" or comp == ">") end -