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 "ha:klv" opt
; do
17 l
) listen
=t
; opts
=${opts}l
;;
18 v
) verbose
=t
; opts
=${opts}v
;;
22 shift $
(( $OPTIND - 1 ))
27 case $bogus in t
) usage
>&2; exit 2 ;; esac
28 case $verbose in t
) set -x
;; esac
31 t
) echo quit
>"$tmp/upload.wakeup"; exit 0 ;;
34 case ${DVDRIP_UPLOAD_LOCKEDP+t} in
36 *) lockedp
=nil
; DVDRIP_UPLOAD_LOCKEDP
=t
; export DVDRIP_UPLOAD_LOCKEDP
;;
38 case $lockedp,$listen in
41 if [ -p
"$tmp/upload.wakeup" ]; then
42 echo check
>"$tmp/upload.wakeup"
45 exec locking
"$tmp/upload.lock" "$0" ${opts:+"-$opts"}
50 exec locking
-f
"$tmp/upload.lock" "$0" ${opts:+"-$opts"}
57 echo "$(tput bold; tput setaf $colour)$message$(tput sgr0; tput op)"
59 fail
() { notify
1 "!!! $*"; exit 2; }
60 warn
() { notify
5 "??? $*"; }
61 info
() { notify
6 "--- $*"; }
64 set +e
; nice
"$@"; rc
=$?
; set -e
66 run
() { run_setrc
"$@"; case $rc in 0) ;; *) fail
"$1: exit $rc" ;; esac; }
69 *:*) archhost
=${archive%%:*} archpath
=${archive#*:} ;;
70 *) unset archhost
; archpath
=$archive ;;
79 qq
="${qq:+$qq }'${a//\'/"'\\''"}'" #" # emacs is confused
81 "$op" ssh "$archhost" "$qq"
88 archrun
() { archdo run
"$@"; }
94 if [ -f
"$i/dest" ]; then
95 read dest
<"$i/dest"; any
=t
96 mv "$i/dest" "$i/dest.seen"
97 (info
"copy $i/iso -> $dest"
99 */*) dir
=${dest%/*} ;;
102 archrun mkdir
-p
"$archpath${dir:+/$dir}"
103 run rsync
-svPSW
"$i/iso" "$archive/$dest"
104 run
rm -rf
"$i") ||
:
107 case $any in nil
) break ;; esac
116 rm -f
"$tmp/upload.newpipe"
117 mkfifo "$tmp/upload.newpipe"
118 mv "$tmp/upload.newpipe" "$tmp/upload.wakeup"
119 while read line
<&3; do
122 quit
) info
"quitting on user request"; break ;;
123 *) warn
"unknown command \`$line'" ;;
125 done 3<>"$tmp/upload.wakeup"
126 rm -f
"$tmp/upload.wakeup" "$tmp/upload.lock"