Merge pull request #840 from cjkoenig/update_liburcu
[feed/packages.git] / sound / shairport-sync / files / shairport-sync.init
1 #!/bin/sh /etc/rc.common
2
3 NAME='shairport-sync'
4 START=99
5
6 USE_PROCD=1
7
8 append_arg() {
9 local cfg="$1"
10 local var="$2"
11 local opt="$3"
12 local def="$4"
13 local val
14
15 config_get val "$cfg" "$var"
16 [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
17 }
18
19 append_bool() {
20 local cfg="$1"
21 local var="$2"
22 local opt="$3"
23 local def="$4"
24 local val
25
26 config_get_bool val "$cfg" "$var" "$def"
27 [ "$val" = 1 ] && procd_append_param command "$opt"
28 }
29
30 start_shairport_service() {
31 local cfg=$1
32 local stuffing
33 local device
34
35 procd_open_instance
36
37 procd_set_param command /usr/bin/$NAME
38
39 append_arg "$cfg" name "-a"
40 append_arg "$cfg" port "-p"
41 append_arg "$cfg" airplaylatency "-A"
42 append_arg "$cfg" ituneslatency "-i"
43
44 config_get stuffing "$cfg" stuffing ""
45
46 if [ -n "$stuffing" ] ; then
47 case "x$stuffing" in
48 ( "xbasic" ) procd_append_param command -S basic ;;
49 ( "xsoxr" ) procd_append_param command -S soxr ;;
50 ( * ) logger "bad argument for -S option -- should be \"basic\" or \"soxr\"" ;;
51 esac
52 fi
53
54 append_arg "$cfg" beforeaction "-B"
55 append_arg "$cfg" afteraction "-E"
56 append_bool "$cfg" awaitactioncompletion "-w"
57
58 config_get device "$cfg" device ""
59 if [ -n "$device" ] ; then
60 procd_append_param command "--"
61 append_arg "$cfg" device "-d"
62 append_arg "$cfg" devicetype "-t"
63 append_arg "$cfg" volumecontrolname "-c"
64 fi
65
66 procd_close_instance
67 }
68
69 service_triggers() {
70 procd_add_reload_trigger $NAME
71 }
72
73 start_service() {
74 config_load $NAME
75 # Just a single instance
76 start_shairport_service "main"
77 }