123456789101112131415161718192021222324252627282930313233343536 |
- #!/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}
|