diff options
Diffstat (limited to 'libs/sys/luasrc/sys.lua')
-rw-r--r-- | libs/sys/luasrc/sys.lua | 26 |
1 files changed, 23 insertions, 3 deletions
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. |