blob: 2c492c02c9cdd5d3490f48c9af2a52685571b956 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#!/bin/sh
SOCKET="/var/run/gpsd.sock"
trap_with_arg() {
func="$1" ; shift
for sig; do
# shellcheck disable=SC2064
trap "$func $sig" "$sig"
done
}
func_trap() {
logger -t "gpsd-wrapper[$$]" "Sending signal ${1}..."
kill "-${1}" "$CHILD" 2>/dev/null
}
wait_for_socket_and_hotplug() {
local count=0
while [ $count -lt 15 ]; do
[ -S "$SOCKET" ] && break
sleep 1
count=$((count + 1))
done
if [ -S "$SOCKET" ]; then
logger -t "gpsd-wrapper[$$]" "Socket ready, sending hotplug call"
env -i ACTION="STARTED" /sbin/hotplug-call gpsd
else
logger -t "gpsd-wrapper[$$]" \
"Socket $SOCKET not ready after ${count}s, hotplug skipped"
fi
}
main() {
trap_with_arg func_trap INT TERM KILL
/usr/sbin/gpsd "$@" &
CHILD="$!"
wait_for_socket_and_hotplug
wait "$CHILD"
}
main "$@"
|