#!/bin/sh # Shell script for interacting with config files # # Copyright (C) 2006 by Fokus Fraunhofer # Copyright (C) 2006 by 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 # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # 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 do_get() { local PACKAGE="${1%%.*}"; set "${1#*.}"; local CONFIG="${1%%.*}"; set "${1#*.}"; local OPTION="$1"; uci_load "$PACKAGE" config_get "$CONFIG" "$OPTION" } do_set() { local PACKAGE="${1%%.*}"; set "${1#*.}"; local CONFIG="${1%%.*}"; set "${1#*.}"; local OPTION="${1%%=*}"; set "${1#*=}"; local VALUE="$1"; uci_set "$PACKAGE" "$CONFIG" "$OPTION" "$VALUE" } do_add() { [ $# -ne 3 ] && { uci_usage add exit 1 } uci_add "$@" } do_rename() { [ $# -ne 3 ] && { uci_usage rename exit 1 } uci_rename "$@" } do_remove() { [ $# -ne 3 -a $# -ne 2 ] && { uci_usage rename exit 1 } uci_remove "$@" } do_commit() { [ $# -ne 1 ] && { uci_usage commit exit 1 } uci_commit "$1" } do_show() { set "$1." local PACKAGE="${1%%.*}"; set "${1#*.}" local CONFIG="${1%%.*}"; set "${1#*.}" [ ! -z "$1" ] && { uci_usage show exit 1 } PACKAGE=${PACKAGE:-$(cd /etc/config; ls)} for package in $PACKAGE; do SECTION="" config_cb() { if [ -z "$CONFIG" -o "$CONFIG" = "$2" ]; then append SECTION "$2" option_cb() { append "${CONFIG_SECTION}_VARS" "$1" } else option_cb() { return 0 } fi } uci_load "$package" for section in $SECTION; do config_get type "$section" TYPE [ -z "$type" ] && continue echo "$package.@$section=$type" eval "VARS=\"\${${section}_VARS}\"" for var in $VARS; do config_get val "$section" "$var" [ -n "$val" ] && { echo "$package.$section.$var=$val" config_set "$section" "$var" "" } done config_set "$section" TYPE "" done done } uci_usage() { case "$1" in show) echo "$0 show ";; get) echo "$0 get ";; set) echo "$0 set =";; add) echo "$0 add ";; del) echo "$0 del [