utils/gpsd: switch to procd
authorp-wassi <redacted>
Wed, 7 Dec 2016 22:05:00 +0000 (23:05 +0100)
committerp-wassi <redacted>
Sat, 21 Jan 2017 09:07:16 +0000 (10:07 +0100)
Rewrite init script for procd support

Signed-off-by: Paul Wassi <redacted>
utils/gpsd/files/gpsd.init

index 96cee782d4aaadbb218a664811bf07a524f3f471..b7d9ec3e85c13b75e3fb0a5415c74cff0296d514 100644 (file)
@@ -2,31 +2,43 @@
 # Copyright (C) 2009-2011 OpenWrt.org
 START=50
 
+USE_PROCD=1
+PROG=/usr/sbin/gpsd
 NAME=gpsd
-PIDF=/var/run/$NAME.pid
-PROG=/usr/sbin/$NAME
-
-start() {
-    config_load gpsd
-    config_get device core device
-    config_get port core port
-    config_get_bool listen_globally core listen_globally
-    config_get_bool enabled core enabled
-    [ "$enabled" != "1" ] && exit
-    logger -t "$NAME" "Starting..."
-    [ ! -c "$device" ] && {
-        logger -t "$NAME" "Unable to find device $device. Exiting."
-        exit 1
-    }
-    [ "$listen_globally" != "0" ] && append args "-G"
-    $PROG -n -P $PIDF -S $port $args $device
+
+validate_section_gpsd()
+{
+       uci_validate_section gpsd gpsd "${1}" \
+               'enable:bool:1' \
+               'device:string' \
+               'listen_globally:bool:0' \
+               'port:port:2947'
+}
+
+gpsd_instance()
+{
+       local device enable listen_globally port
+
+       validate_section_gpsd "${1}" || {
+               echo "validation failed"
+               return 1
+       }
+
+       [ "${enable}" = "0" ] && return 1
+
+       procd_open_instance
+       procd_set_param command "$PROG" -N -n
+
+       [ "${listen_globally}" -ne 0 ] && procd_append_param command -G
+       procd_append_param command -S "${port}"
+       procd_append_param command "${device}"
+       procd_set_param respawn
+
+       procd_close_instance
 }
 
-stop() {
-    logger -t "$NAME" "Stopping..."
-    [ -f "$PIDF" ] && {
-        read PID < "$PIDF"
-        kill -9 $PID
-        rm $PIDF
-    }
+start_service()
+{
+       config_load "${NAME}"
+       config_foreach gpsd_instance gpsd
 }
git clone https://git.99rst.org/PROJECT