Moved luci.sys.libpath to luci.util
[project/luci.git] / libs / core / luasrc / util.lua
index 22f295d..cd3534f 100644 (file)
@@ -320,7 +320,7 @@ end
 --- Combines two or more numerically indexed tables into one.
 -- @param tbl1 Table value to combine
 -- @param tbl2 Table value to combine
--- @param tblN More values to combine
+-- @param ...  More tables to combine
 -- @return             Table value containing all values of given tables
 function combine(...)
        local result = {}
@@ -378,11 +378,11 @@ end
 
 --- Create a dynamic table which automatically creates subtables.
 -- @return     Dynamic Table
-function create_dtable()
+function dtable()
         return setmetatable({}, { __index =
                 function(tbl, key)
                         return rawget(tbl, key)
-                         or rawget(rawset(tbl, key, create_dtable()), key)
+                         or rawget(rawset(tbl, key, dtable()), key)
                 end
         })
 end
@@ -574,6 +574,52 @@ end
 
 
 --
+-- System utility functions
+--
+
+--- Test whether the current system is operating in big endian mode.
+-- @return     Boolean value indicating whether system is big endian
+function bigendian()
+       return string.byte(string.dump(function() end), 7) == 0
+end
+
+--- Execute given commandline and gather stdout.
+-- @param command      String containing command to execute
+-- @return                     String containing the command's stdout
+function exec(command)
+       local pp   = io.popen(command)
+       local data = pp:read("*a")
+       pp:close()
+
+       return data
+end
+
+--- Execute given commandline and gather stdout.
+-- @param command      String containing the command to execute
+-- @return                     Table containing the command's stdout splitted up in lines
+function execl(command)
+       local pp   = io.popen(command)
+       local line = ""
+       local data = {}
+
+       while true do
+               line = pp:read()
+               if (line == nil) then break end
+               table.insert(data, line)
+       end
+       pp:close()
+
+       return data
+end
+
+--- Returns the absolute path to LuCI base directory.
+-- @return             String containing the directory path
+function libpath()
+       return luci.fs.dirname(require("luci.debug").__file__)
+end
+
+
+--
 -- Coroutine safe xpcall and pcall versions modified for Luci
 -- original version:
 -- coxpcall 1.13 - Copyright 2005 - Kepler Project (www.keplerproject.org)