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 1a6c4f4a138136c1649c007226918ff7ef55151d..1850c667ec391f543550bc2955e4bbbbdc806145 100644 (file)
@@ -1,47 +1,50 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/p910nd
-RUN_D=/var/run
-
-_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
- exit 0
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2007 OpenWrt.org
+START=50
+
+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() {
- [ -f $DEFAULT ] && (
-  while read port options; do
-   case "$port" in
-    ""|\#*)
-     continue;
-   esac
-   PID_F=$RUN_D/p910${port}d.pid
-   [ -f $PID_F ] && kill $(cat $PID_F)
-  done
- ) < $DEFAULT
+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)
 }
 
-case $1 in
- start)
-  _start
-  ;;
- stop)
-  _stop
-  ;;
- *)
-  echo "usage: $0 (start|stop)"
-  exit 1
-esac
-exit $?
+start() {
+       config_load "p910nd"
+       config_foreach start_service p910nd
+}
+
+stop() {
+       config_load "p910nd"
+       config_foreach stop_service p910nd
+}