modules/admin-full, modules/admin-mini: set appropriate mime type for luci-flash...
[project/luci.git] / modules / admin-mini / luasrc / controller / mini / system.lua
index ad15b07..c7bacb2 100644 (file)
@@ -106,6 +106,14 @@ function action_upgrade()
                                        break
                                end
                        end
+               elseif luci.fs.access("/proc/partitions") then
+                       for l in io.lines("/proc/partitions") do
+                               local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)')
+                               if b and n and not n:match('[0-9]') then
+                                       size = tonumber(b) * 1024
+                                       break
+                               end
+                       end
                end
                return size
        end
@@ -141,15 +149,24 @@ function action_upgrade()
        -- previous pages should arrange the stuff as required.
        if step == 4 then
                if has_platform and has_image and has_support then
-                       -- Next line is to bypass luci.http layer
-                       luci.http.context.eoh = true
+                       -- Mimetype text/plain
+                       luci.http.prepare_content("text/plain")
 
                        -- Now invoke sysupgrade
                        local keepcfg = keep_avail and luci.http.formvalue("keepcfg") == "1"
-                       os.execute("/sbin/luci-flash %s %q" %{
+                       local fd = io.popen("/sbin/luci-flash %s %q" %{
                                keepcfg and "-k %q" % _keep_pattern() or "", tmpfile
                        })
 
+                       if fd then
+                               while true do
+                                       local ln = fd:read("*l")
+                                       if not ln then break end
+                                       luci.http.write(ln)
+                               end
+                               fd:close()
+                       end
+
                        -- Make sure the device is rebooted
                        luci.sys.reboot()
                end