--- LuCI Linux and POSIX system utilities.
module "luci.sys"
+--- Execute a given shell command and return the error code
+-- @class function
+-- @name call
+-- @param ... Command to call
+-- @return Error code of the command
+function call(...)
+ return os.execute(...) / 256
+end
+
+--- Execute a given shell command and capture its standard output
+-- @class function
+-- @name exec
+-- @param command Command to call
+-- @return String containg the return the output of the command
+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.
group = {}
--- Returns information about a POSIX user group.
+-- @class function
+-- @name getgroup
-- @param group Group ID or name of a system user group
-- @return Table with information about the requested group
group.getgroup = posix.getgroup
process = {}
--- Get the current process id.
+-- @class function
+-- @name process.info
-- @return Number containing the current pid
process.info = posix.getpid
end
--- Send a signal to a process identified by given pid.
+-- @class function
+-- @name process.signal
-- @param pid Number containing the process id
-- @param sig Signal to send (default: 15 [SIGTERM])
-- @return Boolean indicating successful operation