validate: range and base arguments for numeric types, new types hexstring, regexp...
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 21 Feb 2014 15:29:11 +0000 (16:29 +0100)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 23 Feb 2014 18:38:10 +0000 (18:38 +0000)
commit9ff5685a99dca3036f2ea4c14bdf14f7a2053d9f
tree7a0772deb97ac15041a050964d664cdb7d84d0a0
parentf309065fe99839f8e07ec9a2cc1d53ba62af8236
validate: range and base arguments for numeric types, new types hexstring, regexp and uci

- make uinteger and integer types more strict, they will not accept
  leading spaces or plus signs anymore
- add optional base argument to uinteger and integer data types, e.g.
  integer(16) will accept -af or 0xaf, a base of 0 (the default) will
  use the underlying heuristics of strtol() / strtoul()
- add optional min and max options to string() datatype, e.g.
  string(3) only accepts strings longer than 3 chars, string(8, 63)
  will accept strings between 8 and 63 characters in length
- add hexstring([minlen [, maxlen]]) type which will accept
  long hex encoded strings whose length must be a multiple of 2
- add regexp(pattern) type which applies an extended POSIX regular
  expression on the value to test. The given pattern is implicitely
  anchored, e.g. regexp("[a-z]+") will match /^[a-z]+$/
- add uci(package, {@type|name}[, option]) type which tests the input
  against selected uci values, e.g.
* uci("network", "@interface") would allow values that match
  the name of any section of type "interface" in /e/c/network
* uci("network", "@interface", "ifname") would allow any value
  that matches one of the ifnames in any section of type
  interface in /e/c/network
* uci("system", "ntp", "server") would allow any value that
  matches on of the servers in the "server" option of the "ntp"
  section in /e/c/system

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
validate/validate.c