|
|
- #!/bin/sh /etc/rc.common
-
- NAME='shairport-sync'
- START=99
-
- USE_PROCD=1
-
- append_arg() {
- local cfg="$1"
- local var="$2"
- local opt="$3"
- local def="$4"
- local val
-
- config_get val "$cfg" "$var"
- [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
- }
-
- append_bool() {
- local cfg="$1"
- local var="$2"
- local opt="$3"
- local def="$4"
- local val
-
- config_get_bool val "$cfg" "$var" "$def"
- [ "$val" = 1 ] && procd_append_param command "$opt"
- }
-
- start_shairport_service() {
- local cfg=$1
- local stuffing
- local device
-
- procd_open_instance
-
- procd_set_param command /usr/bin/$NAME
-
- append_arg "$cfg" name "-a"
- append_arg "$cfg" port "-p"
- append_arg "$cfg" airplaylatency "-A"
- append_arg "$cfg" ituneslatency "-i"
-
- config_get stuffing "$cfg" stuffing ""
-
- if [ -n "$stuffing" ] ; then
- case "x$stuffing" in
- ( "xbasic" ) procd_append_param command -S basic ;;
- ( "xsoxr" ) procd_append_param command -S soxr ;;
- ( * ) logger "bad argument for -S option -- should be \"basic\" or \"soxr\"" ;;
- esac
- fi
-
- append_arg "$cfg" beforeaction "-B"
- append_arg "$cfg" afteraction "-E"
- append_bool "$cfg" awaitactioncompletion "-w"
-
- config_get device "$cfg" device ""
- if [ -n "$device" ] ; then
- procd_append_param command "--"
- append_arg "$cfg" device "-d"
- append_arg "$cfg" devicetype "-t"
- append_arg "$cfg" volumecontrolname "-c"
- fi
-
- procd_close_instance
- }
-
- service_triggers() {
- procd_add_reload_trigger $NAME
- }
-
- start_service() {
- config_load $NAME
- # Just a single instance
- start_shairport_service "main"
- }
|