dvd-sector-copy.c: Truncate the event list before processing a lost `stop'.
[dvdrip] / dvdrip-retry-botched-vobs
index c281b60..0a171f3 100755 (executable)
@@ -1,8 +1,10 @@
 #! /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")
@@ -13,20 +15,25 @@ find "$@" -type f -name "*.retry" -print | while IFS= read -r r; do
     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 "$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