37 lines
929 B
Bash
Executable File
37 lines
929 B
Bash
Executable File
#!/bin/sh
|
|
|
|
# We're called with the real Kodi executable as
|
|
# first argument, followed by any Kodi extra args
|
|
KODI="${1}"
|
|
shift
|
|
|
|
# In case someone asked we terminate, just kill
|
|
# the Kodi process
|
|
trap_kill() {
|
|
LOOP=0
|
|
killall "${KODI##*/}"
|
|
}
|
|
trap trap_kill INT QUIT TERM
|
|
|
|
LOOP=1
|
|
while [ ${LOOP} -eq 1 ]; do
|
|
# Hack: BusyBox ash does not catch signals while a non-builtin
|
|
# is running, and only catches the signal when the non-builtin
|
|
# command ends. So, we just background the Kodi binary, and wait
|
|
# for it. But BusyBox' ash's wait builtin does not return the
|
|
# exit code even if there was only one job (which is correct
|
|
# for POSIX). So we explicitly wait for the Kodi job
|
|
"${KODI}" "${@}" &
|
|
wait %1
|
|
ret=$?
|
|
case "${ret}" in
|
|
0) ;;
|
|
64) poweroff; LOOP=0;;
|
|
66) reboot; LOOP=0;;
|
|
*) # Crash
|
|
sleep 1
|
|
;;
|
|
esac
|
|
done
|
|
exit ${ret}
|