summaryrefslogtreecommitdiffhomepage
path: root/libs/ipkg/luasrc/model
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-11-12 19:05:03 +0000
committerSteven Barth <steven@midlink.org>2008-11-12 19:05:03 +0000
commit34283b2733494f2a3eab890cff79a57a073dc38d (patch)
tree2217d61f36d6eb56cf397d4f6d1228776ea726e7 /libs/ipkg/luasrc/model
parent3a0eb02f30fa567bdfd705939e2ee6f58de5461a (diff)
IPKG würgaround
Diffstat (limited to 'libs/ipkg/luasrc/model')
-rw-r--r--libs/ipkg/luasrc/model/ipkg.lua11
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