]]--
-module( "luci.uvl.datatypes", package.seeall )
+local fs = require "nixio.fs"
+local ip = require "luci.ip"
+local math = require "math"
+local util = require "luci.util"
-require("luci.fs")
-require("luci.ip")
-require("luci.util")
+local tonumber = tonumber
+
+module "luci.uvl.datatypes"
function boolean( val )
return true
elseif val == "0" or val == "no" or val == "off" or val == "false" then
return true
+ elseif val == "" or val == nil then
+ return true
end
return false
function ip4addr( val )
if val then
- return luci.ip.IPv4(val) and true or false
+ return ip.IPv4(val) and true or false
end
return false
function ip6addr( val )
if val then
- return luci.ip.IPv6(val) and true or false
+ return ip.IPv6(val) and true or false
end
return false
"^[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+:" ..
"[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+$"
) then
- local parts = luci.util.split( val, ":" )
+ local parts = util.split( val, ":" )
for i = 1,6 do
parts[i] = tonumber( parts[i], 16 )
end
function directory( val, seen )
- local s = luci.fs.stat( val )
+ local s = fs.stat( val )
seen = seen or { }
if s and not seen[s.ino] then
seen[s.ino] = true
- if s.type == "directory" then
+ if s.type == "dir" then
return true
- elseif s.type == "link" then
- return directory( luci.fs.readlink(val), seen )
+ elseif s.type == "lnk" then
+ return directory( fs.readlink(val), seen )
end
end
end
function file( val, seen )
- local s = luci.fs.stat( val )
+ local s = fs.stat( val )
+ seen = seen or { }
+
+ if s and not seen[s.ino] then
+ seen[s.ino] = true
+ if s.type == "reg" then
+ return true
+ elseif s.type == "lnk" then
+ return file( fs.readlink(val), seen )
+ end
+ end
+
+ return false
+end
+
+function device( val, seen )
+ local s = fs.stat( val )
seen = seen or { }
if s and not seen[s.ino] then
seen[s.ino] = true
- if s.type == "regular" then
+ if s.type == "chr" or s.type == "blk" then
return true
- elseif s.type == "link" then
- return file( luci.fs.readlink(val), seen )
+ elseif s.type == "lnk" then
+ return device( fs.readlink(val), seen )
end
end