4 tmp=${DVDRIP_TMPDIR-${HOME?}/tmp/dvdrip}
5 archive=${DVDRIP_ARCHIVE-jem.distorted.org.uk:/mnt/dvd/archive}
6 kill=nil listen=nil verbose=nil bogus=nil opts=; unset dir sub n label
12 while getopts "hklv" opt; do
16 l) listen=t; opts=${opts}l ;;
17 v) verbose=t; opts=${opts}v ;;
21 shift $(( $OPTIND - 1 ))
26 case $bogus in t) usage >&2; exit 2 ;; esac
27 case $verbose in t) set -x ;; esac
30 t) echo quit >"$tmp/upload.wakeup"; exit 0 ;;
33 case ${DVDRIP_UPLOAD_LOCKEDP+t} in
35 *) lockedp=nil; DVDRIP_UPLOAD_LOCKEDP=t; export DVDRIP_UPLOAD_LOCKEDP ;;
37 case $lockedp,$listen in
40 if [ -p "$tmp/upload.wakeup" ]; then
41 echo check >"$tmp/upload.wakeup"
44 exec locking "$tmp/upload.lock" "$0" "${opts+-$opts}"
49 exec locking -f "$tmp/upload.lock" "$0" "${opts+-$opts}"
56 echo "$(tput bold; tput setaf $colour)$message$(tput sgr0; tput op)"
58 fail () { notify 1 "!!! $*"; exit 2; }
59 warn () { notify 5 "??? $*"; }
60 info () { notify 6 "--- $*"; }
63 set +e; nice "$@"; rc=$?; set -e
65 run () { run_setrc "$@"; case $rc in 0) ;; *) fail "$1: exit $rc" ;; esac; }
68 *:*) archhost=${archive%%:*} archpath=${archive#*:} ;;
69 *) unset archhost; archpath=$archive ;;
78 qq="${qq:+$qq }'${a//\'/"'\\''"}'" #" # emacs is confused
80 "$op" ssh "$archhost" "$qq"
87 archrun () { archdo run "$@"; }
93 if [ -f "$i/dest" ]; then
94 read dest <"$i/dest"; any=t
95 mv "$i/dest" "$i/dest.seen"
96 (info "copy $i/iso -> $dest"
98 */*) dir=${dest%/*} ;;
101 archrun mkdir -p "$archpath${dir:+/$dir}"
102 run rsync -svPSW "$i/iso" "$archive/$dest"
103 run rm -rf "$i") || :
106 case $any in nil) break ;; esac
115 rm -f "$tmp/upload.newpipe"
116 mkfifo "$tmp/upload.newpipe"
117 mv "$tmp/upload.newpipe" "$tmp/upload.wakeup"
118 while read line <&3; do
121 quit) info "quitting on user request"; break ;;
122 *) warn "unknown command \`$line'" ;;
124 done 3<>"$tmp/upload.wakeup"
125 rm -f "$tmp/upload.wakeup" "$tmp/upload.lock"