#! /bin/sh -e
dev=${DVDRIP_DEVICE-/dev/dvd}
+: ${DVD_SECTOR_COPY=dvd-sector-copy}
+: ${DVD_CHECK_KEYS=dvd-check-keys}
-find "$@" -type f -name "*.retry" -print | while IFS= read -r r; do
+find "$@" -type f -name "*.retry" -print | sort | while IFS= read -r r; do
iso=${r%.retry}.iso
want_id=$(dvd-id "$iso")
case $id in
"$want_id") break ;;
"$last_wrong") ;;
- *) echo "No, that's $id -- wanted $want_id..."; last_wrong=$id ;;
+ *)
+ echo "No, that's $id -- wanted $want_id..."
+ last_wrong=$id
+ eject "$dev"
+ ;;
esac
sleep 2
done
for try in 3 2 1 0; do
- dvd-sector-copy -R"$r" "$dev" "$iso"
+ "$DVD_SECTOR_COPY" -R"$r" "$dev" "$iso"
- set +e; DVDCSS_CACHE=off dvd-check-keys -b"$r.new" "$dev"; rc=$?; set -e
+ set +e; DVDCSS_CACHE=off "$DVD_CHECK_KEYS" -b"$r.new" "$dev"; rc=$?; set -e
case $rc,$try in
- 0,*) rm -f "$retry"; break ;;
+ 0,*) rm -f "$r"; break ;;
1,0) echo "Giving up :-("; mv "$r.new" "$r"; break ;;
- 1,*) echo "Still broken! Let's try again..." ;;
+ 1,*) echo "Still broken! Let's try again..."; mv "$r.new" "$r"; ;;
*) echo "Failed! :-("; exit 2 ;;
esac
done
+ eject "$dev"
done