1#!/bin/sh 2# Shell script compatibility wrappers for /sbin/uci 3# 4# Copyright (c) 2013 The Linux Foundation. All rights reserved. 5# Copyright (C) 2008-2010 OpenWrt.org 6# Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org> 7# 8# This program is free software; you can redistribute it and/or modify 9# it under the terms of the GNU General Public License as published by 10# the Free Software Foundation; either version 2 of the License, or 11# (at your option) any later version. 12# 13# This program is distributed in the hope that it will be useful, 14# but WITHOUT ANY WARRANTY; without even the implied warranty of 15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16# General Public License for more details. 17# 18# You should have received a copy of the GNU General Public License 19# along with this program; if not, write to the Free Software 20# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 22CONFIG_APPEND= 23uci_load() { 24 local PACKAGE="$1" 25 local DATA 26 local RET 27 local VAR 28 29 _C=0 30 if [ -z "$CONFIG_APPEND" ]; then 31 for VAR in $CONFIG_LIST_STATE; do 32 export ${NO_EXPORT:+-n} CONFIG_${VAR}= 33 export ${NO_EXPORT:+-n} CONFIG_${VAR}_LENGTH= 34 done 35 export ${NO_EXPORT:+-n} CONFIG_LIST_STATE= 36 export ${NO_EXPORT:+-n} CONFIG_SECTIONS= 37 export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0 38 export ${NO_EXPORT:+-n} CONFIG_SECTION= 39 fi 40 41 DATA="$(/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} ${LOAD_STATE:+-P /var/state} -S -n export "$PACKAGE" 2>/dev/null)" 42 RET="$?" 43 [ "$RET" != 0 -o -z "$DATA" ] || eval "$DATA" 44 unset DATA 45 46 ${CONFIG_SECTION:+config_cb} 47 return "$RET" 48} 49 50uci_set_default() { 51 local PACKAGE="$1" 52 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q show "$PACKAGE" > /dev/null && return 0 53 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} import "$PACKAGE" 54 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit "$PACKAGE" 55} 56 57uci_revert_state() { 58 local PACKAGE="$1" 59 local CONFIG="$2" 60 local OPTION="$3" 61 62 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -P /var/state revert "$PACKAGE${CONFIG:+.$CONFIG}${OPTION:+.$OPTION}" 63} 64 65uci_set_state() { 66 local PACKAGE="$1" 67 local CONFIG="$2" 68 local OPTION="$3" 69 local VALUE="$4" 70 71 [ "$#" = 4 ] || return 0 72 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -P /var/state set "$PACKAGE.$CONFIG${OPTION:+.$OPTION}=$VALUE" 73} 74 75uci_toggle_state() { 76 uci_revert_state "$1" "$2" "$3" 77 uci_set_state "$1" "$2" "$3" "$4" 78} 79 80uci_set() { 81 local PACKAGE="$1" 82 local CONFIG="$2" 83 local OPTION="$3" 84 local VALUE="$4" 85 86 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} set "$PACKAGE.$CONFIG.$OPTION=$VALUE" 87} 88 89uci_add_list() { 90 local PACKAGE="$1" 91 local CONFIG="$2" 92 local OPTION="$3" 93 local VALUE="$4" 94 95 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} add_list "$PACKAGE.$CONFIG.$OPTION=$VALUE" 96} 97 98uci_get_state() { 99 uci_get "$1" "$2" "$3" "$4" "/var/state" 100} 101 102uci_get() { 103 local PACKAGE="$1" 104 local CONFIG="$2" 105 local OPTION="$3" 106 local DEFAULT="$4" 107 local STATE="$5" 108 109 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} ${STATE:+-P $STATE} -q get "$PACKAGE${CONFIG:+.$CONFIG}${OPTION:+.$OPTION}" 110 RET="$?" 111 [ "$RET" -ne 0 ] && [ -n "$DEFAULT" ] && echo "$DEFAULT" 112 return "$RET" 113} 114 115uci_add() { 116 local PACKAGE="$1" 117 local TYPE="$2" 118 local CONFIG="$3" 119 120 if [ -z "$CONFIG" ]; then 121 export ${NO_EXPORT:+-n} CONFIG_SECTION="$(/sbin/uci add "$PACKAGE" "$TYPE")" 122 else 123 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} set "$PACKAGE.$CONFIG=$TYPE" 124 export ${NO_EXPORT:+-n} CONFIG_SECTION="$CONFIG" 125 fi 126} 127 128uci_rename() { 129 local PACKAGE="$1" 130 local CONFIG="$2" 131 local VALUE="$3" 132 133 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} rename "$PACKAGE.$CONFIG=$VALUE" 134} 135 136uci_remove() { 137 local PACKAGE="$1" 138 local CONFIG="$2" 139 local OPTION="$3" 140 141 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} del "$PACKAGE.$CONFIG${OPTION:+.$OPTION}" 142} 143 144uci_commit() { 145 local PACKAGE="$1" 146 /sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit $PACKAGE 147} 148