From 9405a2a6be701ee92ad0ffbe15d069bdae2cf850 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 26 Feb 2007 20:04:04 +0000 Subject: Integrate basic UCI config file validation support Needs more testing and validation is not enforced yet Code contributed by Fraunhofer Fokus SVN-Revision: 6391 --- package/base-files/files/bin/uci | 23 +- package/base-files/files/etc/functions.sh | 37 +-- package/base-files/files/lib/config/parse_spec.awk | 255 +++++++++++++++++++++ .../base-files/files/lib/config/specs/network.spec | 7 + package/base-files/files/lib/config/uci.sh | 15 +- package/base-files/files/lib/config/validate.sh | 74 ++++++ .../files/lib/config/validate_config.awk | 105 +++++++++ .../base-files/files/lib/config/validate_spec.awk | 171 ++++++++++++++ 8 files changed, 656 insertions(+), 31 deletions(-) create mode 100644 package/base-files/files/lib/config/parse_spec.awk create mode 100644 package/base-files/files/lib/config/specs/network.spec mode change 100755 => 100644 package/base-files/files/lib/config/uci.sh create mode 100644 package/base-files/files/lib/config/validate.sh create mode 100644 package/base-files/files/lib/config/validate_config.awk create mode 100644 package/base-files/files/lib/config/validate_spec.awk diff --git a/package/base-files/files/bin/uci b/package/base-files/files/bin/uci index 9b50380df2..f8e08f8747 100755 --- a/package/base-files/files/bin/uci +++ b/package/base-files/files/bin/uci @@ -1,8 +1,8 @@ #!/bin/sh # Shell script for interacting with config files # -# Copyright (C) 2006 by Fokus Fraunhofer -# Copyright (C) 2006 by Felix Fietkau +# Copyright (C) 2006 Fokus Fraunhofer +# Copyright (C) 2006,2007 Felix Fietkau # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -. /etc/functions.sh -include /lib/config +. $UCI_ROOT/etc/functions.sh +include $UCI_ROOT/lib/config SEP="[^0-9A-Za-z_]" @@ -101,7 +101,7 @@ do_show() { exit 1 } - for package in ${PACKAGE:-$(cd /etc/config; ls)}; do + for package in ${PACKAGE:-$(cd $UCI_ROOT/etc/config; ls)}; do SECTION="" config_cb() { @@ -136,6 +136,14 @@ do_show() { done } +do_validate() { + [ "$#" -ne 1 ] && { + uci_usage validate + exit 1 + } + uci_validate "$1" || exit "$?" +} + uci_usage() { case "$1" in show) echo "$0 show [[.]]";; @@ -144,6 +152,7 @@ uci_usage() { del) echo "$0 del .[.