use absolute paths in include() shell function
[openwrt/openwrt.git] / openwrt / package / base-files / default / etc / functions.sh
1 #!/bin/sh
2 # Copyright (C) 2006 OpenWrt.org
3 # Copyright (C) 2006 Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
4
5 alias debug=${DEBUG:-:}
6
7 # newline
8 N="
9 "
10
11 _C=0
12
13 # valid interface?
14 if_valid () (
15 ifconfig "$1" >&- 2>&- ||
16 [ "${1%%[0-9]}" = "br" ] ||
17 { debug "# missing interface '$1' ignored"; false; }
18 )
19
20 hotplug_dev() {
21 env -i ACTION=$1 INTERFACE=$2 /sbin/hotplug net
22 }
23
24 append() {
25 local var="$1"
26 local value="$2"
27 local sep="${3:- }"
28 eval "export ${var}=\"\${${var}:+\${${var}}${value:+$sep}}$value\""
29 }
30
31 reset_cb() {
32 config_cb() {
33 return 0
34 }
35 option_cb() {
36 return 0
37 }
38 }
39 reset_cb
40
41 config () {
42 local cfgtype="$1"
43 local name="$2"
44 _C=$(($_C + 1))
45 name="${name:-cfg${_C}}"
46 config_cb "$cfgtype" "$name"
47 export CONFIG_SECTION="$name"
48 export CONFIG_${CONFIG_SECTION}_TYPE="$cfgtype"
49 }
50
51 option () {
52 local varname="$1"; shift
53 export CONFIG_${CONFIG_SECTION}_${varname}="$*"
54 option_cb "$varname" "$*"
55 }
56
57 config_clear() {
58 [ -z "$CONFIG_SECTION" ] && return
59 for oldsetting in `set | grep ^CONFIG_${CONFIG_SECTION}_ | \
60 sed -e 's/\(.*\)=.*$/\1/'` ; do
61 unset $oldsetting
62 done
63 unset CONFIG_SECTION
64 }
65
66 config_load() {
67 local DIR="./"
68 _C=0
69 [ \! -e "$1" -a -e "/etc/config/$1" ] && {
70 DIR="/etc/config/"
71 }
72 [ -e "$DIR$1" ] && {
73 CONFIG_FILENAME="$DIR$1"
74 . ${CONFIG_FILENAME}
75 } || return 1
76 ${CD:+cd -} >/dev/null
77 ${CONFIG_SECTION:+config_cb}
78 }
79
80 config_get() {
81 case "$3" in
82 "") eval "echo \${CONFIG_${1}_${2}}";;
83 *) eval "$1=\"\${CONFIG_${2}_${3}}\"";;
84 esac
85 }
86
87 config_set() {
88 export CONFIG_${1}_${2}="${3}"
89 }
90
91 load_modules() {
92 sed 's/^[^#]/insmod &/' $* | ash 2>&- || :
93 }
94
95 include() {
96 for file in $(ls $1/*.sh 2>/dev/null); do
97 . $file
98 done
99 }