diff options
author | Steven Barth <steven@midlink.org> | 2008-09-18 21:26:34 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-09-18 21:26:34 +0000 |
commit | 8f5d0d6ff5a1cbb40eccce5eeb99d5249bab5159 (patch) | |
tree | 51d8e1650322090f60ba37ff4cf2baa19b5c5a0e /modules/admin-full/luasrc/controller/admin | |
parent | 5067e2d185bbd1fdf029a8da2a84895bbccfad02 (diff) |
new sysupgrade fixes part 2
Diffstat (limited to 'modules/admin-full/luasrc/controller/admin')
-rw-r--r-- | modules/admin-full/luasrc/controller/admin/system.lua | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua index 35eca2a4f..b99ca441b 100644 --- a/modules/admin-full/luasrc/controller/admin/system.lua +++ b/modules/admin-full/luasrc/controller/admin/system.lua @@ -187,6 +187,8 @@ function action_upgrade() local ltn12 = require "luci.ltn12" local uploads = {} local flash = {} + + writer.COPY[#writer.COPY + 1] = "/sbin/reboot" local ret local filepat = "/tmp/mtdblock.%s" @@ -195,8 +197,7 @@ function action_upgrade() local keep_avail = false if blocks then for k, block in pairs(blocks) do - if block.write == mtdow.WRITE_COMBINED - or block.write == mtdow.WRITE_EMULATED then + if block.write ~= mtdow.WRITE_IMAGE then keep_avail = true end end @@ -242,10 +243,18 @@ function action_upgrade() end for name, file in pairs(uploads) do - flash[name] = function() + local e = {name=name, func=function() local imgstream = ltn12.source.file(io.open(file)) + local kf = blocks[name].write ~= mtdow.WRITE_IMAGE + and keepcfg and _kfile() return pcall(writer.write_block, writer, - name, imgstream, keepcfg and _kfile()) + name, imgstream, kf) + end} + + if blocks[name].system then + flash[#flash+1] = e + else + table.insert(flash, 1, e) end end @@ -256,8 +265,8 @@ function action_upgrade() if reboot.exec then local pid = posix.fork() if pid == 0 then - os.execute("sleep 1") - posix.execp("reboot") + posix.sleep(1) + posix.exec("/tmp/reboot") end end end |