chkdvdimg: Add a new program for checking DVD images.
[dvdrip] / dvdrip-retry-botched-vobs
index f0a1563..32fd988 100755 (executable)
@@ -2,7 +2,7 @@
 
 dev=${DVDRIP_DEVICE-/dev/dvd}
 
-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,7 +13,11 @@ 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
@@ -23,10 +27,11 @@ find "$@" -type f -name "*.retry" -print | while IFS= read -r r; do
 
     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