X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fsys%2Fluasrc%2Fsys.lua;h=9b68a25e6f7232ee4a5705b31e313dd6becfe593;hp=e27e1c4e8ae6a0a1f180d695682fd86e1bc0d9bf;hb=fade8edd2dfe39ae579256d04220aba9da2ff074;hpb=e0cfb49235b5890b24dbfcafeb5c7805327d6403 diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index e27e1c4e8..9b68a25e6 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -60,15 +60,35 @@ exec = luci.util.exec --- Invoke the luci-flash executable to write an image to the flash memory. -- @param image Local path or URL to image file -- @param kpattern Pattern of files to keep over flash process --- @return Return value of os.execute() +-- @return boolean indicating status +-- @return error message if any function flash(image, kpattern) local cmd = "luci-flash " if kpattern then cmd = cmd .. "-k '" .. kpattern:gsub("'", "") .. "' " end - cmd = cmd .. "'" .. image:gsub("'", "") .. "' >/dev/null 2>&1" + cmd = cmd .. "'" .. image:gsub("'", "") .. "' 2>/dev/null" - return os.execute(cmd) + local fp = io.popen(cmd) + local line = fp:read() + + if line == "Invalid image type" then + fp:close() + return false, line + else + line = fp:read() + if line == "Performing system upgrade" then + return true + end + + line = fp:read() + if line == "Performing system upgrade" then + return true + end + + fp:close() + return false, line + end end --- Retrieve information about currently mounted file systems.