fix uci commit
[openwrt/svn-archive/archive.git] / package / base-files / files / bin / uci
index 9b50380df2f831e00ecba44cef00f1c373cef7ae..90098f014fa782c88745f2cd0fcaac2f5ab61ead 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 # Shell script for interacting with config files
 #
-# Copyright (C) 2006 by Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
-# Copyright (C) 2006 by Felix Fietkau <nbd@openwrt.org>
+# Copyright (C) 2006        Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
+# Copyright (C) 2006,2007      Felix Fietkau <nbd@openwrt.org>
 #
 # 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_]"
 
@@ -47,7 +47,7 @@ do_set() {
        local VALUE
 
        strtok "$1" PACKAGE . CONFIG = VALUE
-       [ $? -ne 3 ] && {
+       [ $? -ne 3 -a $? -ne 2 ] && {
                uci_usage set
                exit 1
        }
@@ -86,6 +86,7 @@ do_remove() {
 do_commit() {
        local PACKAGE="$1"
        for package in ${PACKAGE:-$(cd /tmp/.uci; ls)}; do 
+               [ lock = "${package##*.}" ] && continue # ignore .lock files
                uci_commit "$package"
        done
 }
@@ -101,7 +102,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 +137,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 [<package>[.<config>]]";;
@@ -144,6 +153,7 @@ uci_usage() {
                del) echo "$0 del <package>.<config>[.<option>]";;
                rename) echo "$0 rename <package> <config> <name>";;
                commit) echo "$0 commit [<package> ... ]";;
+               validate) echo "$0 validate <package>";;
                *) 
                        echo "Syntax: $0 <command> <arguments...>"
                        echo
@@ -153,6 +163,7 @@ uci_usage() {
                        uci_usage del
                        uci_usage rename
                        uci_usage commit
+                       uci_usage validate 
                        echo
                        exit 1
                ;;
@@ -164,7 +175,7 @@ if [ $# -eq 0 ] ; then
        exit 0
 fi
 
-local CMD="$1"
+CMD="$1"
 shift
 case "$CMD" in
        set) do_set "$@";;
@@ -173,6 +184,7 @@ case "$CMD" in
        get) do_get "$@";;
        show) do_show "$@";;
        commit) do_commit "$@";;
+       validate) do_validate "$@";;
        *) uci_usage;;
 esac
 exit 0