-#!/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
+}