2
0

functions.sh 2.1 KB

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