archive=${DVDRIP_ARCHIVE-jem.distorted.org.uk:/mnt/dvd/archive}
: ${DVD_SECTOR_COPY=dvd-sector-copy}
: ${DVDRIP_UPLOAD=dvdrip-upload}
-backup=nil eject=nil force=nil verbose=nil bogus=nil; unset dir sub n label
+backup=nil eject=nil force=nil retry=nil verbose=nil bogus=nil
+unset dir sub n label
usage () {
cat <<EOF
-usage: $prog [-befv] [-D DEV] [-a ARCH] [-d DIR]
+usage: $prog [-befrv] [-D DEV] [-a ARCH] [-d DIR]
[-l LABEL] [-n N] [-s SUB] [-t TMP] TITLE
EOF
}
-while getopts "hD:a:bd:efl:n:s:t:v" opt; do
+while getopts "hD:a:bd:efl:n:rs:t:v" opt; do
case $opt in
h) usage; exit 0 ;;
D) dev=$OPTARG ;;
f) force=t ;;
l) label=$OPTARG ;;
n) n=$OPTARG ;;
+ r) retry=t ;;
s) sub=$OPTARG ;;
t) tmp=$OPTARG ;;
v) verbose=t ;;
fi
}
+set --
mkdir -p "$tmp/$tag"
any=nil
for i in "$tmp/$tag/dest.new" "$tmp/$tag/dest" "$tmp/$tag/dest.seen"; do
fi
;;
nil)
+ accumulate_badblocks
+ case $retry in
+ t)
+ if [ -f "$tmp/$tag/badblocks.retry" ]; then
+ :
+ elif [ -f "$tmp/$tag/badblocks" ]; then
+ run mv "$tmp/$tag/badblocks" "$tmp/$tag/badblocks.retry"
+ else
+ fail "no blocks to retry"
+ fi
+ set -- "$@" -R"$tmp/$tag/badblocks.retry"
+ if [ -f "$tmp/$tag/iso" ]; then
+ mv "$tmp/$tag/iso" "$tmp/$tag/iso.new"
+ fi
+ ;;
+ esac
if [ ! -f "$tmp/$tag/iso" ]; then
- accumulate_badblocks
- run "$DVD_SECTOR_COPY" -c -b"$tmp/$tag/badblocks.new" \
+ run "$DVD_SECTOR_COPY" -c -b"$tmp/$tag/badblocks.new" "$@" \
"$dev" "$tmp/$tag/iso.new"
run mv "$tmp/$tag/iso.new" "$tmp/$tag/iso"
accumulate_badblocks
+ case $retry in t) rm -f "$tmp/$tag/badblocks.retry" ;; esac
if [ -f "$tmp/$tag/badblocks" ]; then
fail "bad sectors found: check \`$tmp/$tag/iso', run again if ok"
fi
fi
;;
esac
-mv "$tmp/$tag/dest.new" "$tmp/$tag/dest"
+run mv "$tmp/$tag/dest.new" "$tmp/$tag/dest"
run "$DVDRIP_UPLOAD"
case $eject in t) run eject "$dev" ;; esac
printf "\a"