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 42e6fc38e1563ff3d6735fe6647c47225da2264d..1850c667ec391f543550bc2955e4bbbbdc806145 100644 (file)
@@ -2,37 +2,49 @@
 # Copyright (C) 2007 OpenWrt.org
 START=50
 
-BIN=p910nd
+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"
-        config_get      port          "$section" port
-        config_get      device        "$section" device
-        config_get_bool bidirectional "$section" bidirectional
-
-        options=""
-        [ $bidirectional -eq 1 ] && {
-                options="$options -b"
-        }
-        options="$options -f $device $port"
-
-        $BIN $options
+       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
+       local section="$1"
+       config_get port "$section" port
 
-        PID_F=/var/run/p910${port}d.pid
-        [ -f $PID_F ] && kill $(cat $PID_F)
+       PID_F=/var/run/p910${port}d.pid
+       [ -f $PID_F ] && kill $(cat $PID_F)
 }
 
 start() {
-        config_load "p910nd"
-        config_foreach start_service p910nd
+       config_load "p910nd"
+       config_foreach start_service p910nd
 }
 
 stop() {
-        config_load "p910nd"
-        config_foreach stop_service p910nd
+       config_load "p910nd"
+       config_foreach stop_service p910nd
 }