diff options
author | Steven Barth <steven@midlink.org> | 2008-11-12 19:05:03 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-11-12 19:05:03 +0000 |
commit | 34283b2733494f2a3eab890cff79a57a073dc38d (patch) | |
tree | 2217d61f36d6eb56cf397d4f6d1228776ea726e7 /libs/ipkg | |
parent | 3a0eb02f30fa567bdfd705939e2ee6f58de5461a (diff) |
IPKG würgaround
Diffstat (limited to 'libs/ipkg')
-rw-r--r-- | libs/ipkg/luasrc/model/ipkg.lua | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libs/ipkg/luasrc/model/ipkg.lua b/libs/ipkg/luasrc/model/ipkg.lua index b06834510a..3df4bf9451 100644 --- a/libs/ipkg/luasrc/model/ipkg.lua +++ b/libs/ipkg/luasrc/model/ipkg.lua @@ -14,6 +14,7 @@ $Id$ ]]-- local os = require "os" +local io = require "io" local util = require "luci.util" local type = type @@ -83,7 +84,15 @@ local function _lookup(act, pkg) cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'" end - return _parselist(util.execi(cmd .. " 2>/dev/null")) + -- IPKG sometimes kills the whole machine because it sucks + -- Therefore we have to use a sucky approach too and use + -- tmpfiles instead of directly reading the output + local tmpfile = os.tmpname() + os.execute(cmd .. (" >%s 2>/dev/null" % tmpfile)) + + local data = _parselist(io.lines(tmpfile)) + os.remove(tmpfile) + return data end |