Replace some makes-you-want-to-slash-your-wrists-Code with something less harmful
[project/luci.git] / libs / sys / luasrc / sys.lua
index b4d3d2f..2332ceb 100644 (file)
@@ -132,7 +132,7 @@ getenv = posix.getenv
 --- Determine the current hostname.
 -- @return             String containing the system hostname
 function hostname()
-       return io.lines("/proc/sys/kernel/hostname")()
+       return posix.uname("%n")
 end
 
 --- Returns the contents of a documented referred by an URL.
@@ -142,7 +142,7 @@ end
 -- @return             String containing the contents of given the URL
 function httpget(url, stream, target)
        if not target then
-               local source = stream and io.open or luci.util.exec
+               local source = stream and io.popen or luci.util.exec
                return source("wget -qO- '"..url:gsub("'", "").."'")
        else
                return os.execute("wget -qO '%s' '%s'" %
@@ -175,27 +175,21 @@ end
 -- @return     String containing the memory used for buffering in kB
 -- @return     String containing the free memory amount in kB
 function sysinfo()
-       local c1 = "cat /proc/cpuinfo|grep system\\ typ|cut -d: -f2 2>/dev/null"
-       local c2 = "uname -m 2>/dev/null"
-       local c3 = "cat /proc/cpuinfo|grep model\\ name|cut -d: -f2 2>/dev/null"
-       local c4 = "cat /proc/cpuinfo|grep cpu\\ model|cut -d: -f2 2>/dev/null"
-       local c5 = "cat /proc/meminfo|grep MemTotal|awk {' print $2 '} 2>/dev/null"
-       local c6 = "cat /proc/meminfo|grep ^Cached|awk {' print $2 '} 2>/dev/null"
-       local c7 = "cat /proc/meminfo|grep MemFree|awk {' print $2 '} 2>/dev/null"
-       local c8 = "cat /proc/meminfo|grep Buffers|awk {' print $2 '} 2>/dev/null"
-
-       local system = luci.util.trim(luci.util.exec(c1))
+       local cpuinfo = luci.fs.readfile("/proc/cpuinfo")
+       local meminfo = luci.fs.readfile("/proc/meminfo")
+
+       local system = cpuinfo:match("system typ.-:%s*([^\n]+)")
        local model = ""
-       local memtotal = tonumber(luci.util.trim(luci.util.exec(c5)))
-       local memcached = tonumber(luci.util.trim(luci.util.exec(c6)))
-       local memfree = tonumber(luci.util.trim(luci.util.exec(c7)))
-       local membuffers = tonumber(luci.util.trim(luci.util.exec(c8)))
-
-       if system == "" then
-               system = luci.util.trim(luci.util.exec(c2))
-               model = luci.util.trim(luci.util.exec(c3))
+       local memtotal = tonumber(meminfo:match("MemTotal:%s*(%d+)"))
+       local memcached = tonumber(meminfo:match("\nCached:%s*(%d+)"))
+       local memfree = tonumber(meminfo:match("MemFree:%s*(%d+)"))
+       local membuffers = tonumber(meminfo:match("Buffers:%s*(%d+)"))
+
+       if not system then
+               system = posix.uname("%m")
+               model = cpuinfo:match("model name.-:%s*([^\n]+)")
        else
-               model = luci.util.trim(luci.util.exec(c4))
+               model = cpuinfo:match("cpu model.-:%s*([^\n]+)")
        end
 
        return system, model, memtotal, memcached, membuffers, memfree
@@ -591,7 +585,8 @@ function init.names()
 end
 
 --- Test whether the given init script is enabled
--- @return     Boolean indicating whether init is enabled
+-- @param name Name of the init script
+-- @return             Boolean indicating whether init is enabled
 function init.enabled(name)
        if luci.fs.access(init.dir..name) then
                return ( call(init.dir..name.." enabled") == 0 )
@@ -600,7 +595,8 @@ function init.enabled(name)
 end
 
 --- Get the index of he given init script
--- @return     Numeric index value
+-- @param name Name of the init script
+-- @return             Numeric index value
 function init.index(name)
        if luci.fs.access(init.dir..name) then
                return call("source "..init.dir..name.."; exit $START")
@@ -608,7 +604,8 @@ function init.index(name)
 end
 
 --- Enable the given init script
--- @return     Boolean indicating success
+-- @param name Name of the init script
+-- @return             Boolean indicating success
 function init.enable(name)
        if luci.fs.access(init.dir..name) then
                return ( call(init.dir..name.." enable") == 1 )
@@ -616,7 +613,8 @@ function init.enable(name)
 end
 
 --- Disable the given init script
--- @return     Boolean indicating success
+-- @param name Name of the init script
+-- @return             Boolean indicating success
 function init.disable(name)
        if luci.fs.access(init.dir..name) then
                return ( call(init.dir..name.." disable") == 0 )