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"