p910nd: Fix init script and make use use append_bool() and appand_string() functions
[openwrt/svn-archive/archive.git] / net / p910nd / files / p910nd.init
index 05c675a52334a2fcb0f0b50e41996e733e504389..1850c667ec391f543550bc2955e4bbbbdc806145 100644 (file)
@@ -1,33 +1,50 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2007 OpenWrt.org
+START=50
 
-DEFAULT=/etc/default/p910nd
-RUN_D=/var/run
+append_bool() {
+       local section="$1"
+       local option="$2"
+       local value="$3"
+       local _val
+       config_get_bool _val "$section" "$option" '0'
+       [ "$_val" -gt 0 ] && append args "$3"
+}
+
+append_string() {
+       local section="$1"
+       local option="$2"
+       local value="$3"
+       local _val
+       config_get _val "$section" "$option"
+       [ -n "$_val" ] && append args "$3$_val"
+}
+
+start_service() {
+       local section="$1"
+       args=""
+
+       append_bool "$section" bidirectional "-b"
+       append_string "$section" device "-f "
+       append_string "$section" port ""
+       config_get_bool "enabled" "$section" "enabled" '1'
+       [ "$enabled" -gt 0 ] && /usr/sbin/p910nd $args
+}
+
+stop_service() {
+       local section="$1"
+       config_get port "$section" port
+
+       PID_F=/var/run/p910${port}d.pid
+       [ -f $PID_F ] && kill $(cat $PID_F)
+}
 
 start() {
-       mkdir -p $RUN_D
-       [ -f $DEFAULT ] && (
-               while read port options; do
-                       case "$port" in
-                               ""|\#*) continue;;
-                       esac
-                       p910nd $options $port
-                       if [ $? -ne 0 ]; then
-                               exit 1
-                       fi
-               done
-       ) < $DEFAULT
+       config_load "p910nd"
+       config_foreach start_service p910nd
 }
 
 stop() {
-       [ -f $DEFAULT ] && (
-               while read port options; do
-                       case "$port" in
-                               ""|\#*) continue;l
-                       esac
-                       PID_F=$RUN_D/p910${port}d.pid
-                       [ -f $PID_F ] && kill $(cat $PID_F)
-               done
-       ) < $DEFAULT
+       config_load "p910nd"
+       config_foreach stop_service p910nd
 }
-