- t)
- rm -f "$tmp/upload.newpipe"
- mkfifo "$tmp/upload.newpipe"
- mv "$tmp/upload.newpipe" "$tmp/upload.wakeup"
- while read line <&3; do
- case $line in
- check) check ;;
- quit) info "quitting on user request"; break ;;
- *) warn "unknown command \`$line'" ;;
- esac
- done 3<>"$tmp/upload.wakeup"
- rm -f "$tmp/upload.wakeup" "$tmp/upload.lock"
+ t,nil)
+ if ! try_kick_daemon TERM; then fail "failed to kill listener"; fi
+ ;;
+ nil,t)
+ if try_kick_daemon 0; then fail "daemon already running (pid $daemon)"; fi
+ trap 'try_kill $sleepy; rm -f "$tmp/upload.pid"' EXIT
+ trap 'info "quitting on user request"; exit 0' INT TERM
+ trap 'try_kill $sleepy' HUP
+ echo $$ >"$tmp/upload.pid.new"
+ mv "$tmp/upload.pid.new" "$tmp/upload.pid"
+ while :; do
+ sleep 3600& sleepy=$!
+ check
+ wait $sleepy || :; sleepy=nil
+ done
+ ;;
+ nil,nil)
+ if ! try_kick_daemon HUP; then check; fi