| 1 | #! /bin/sh -e |
| 2 | |
| 3 | dev=${DVDRIP_DEVICE-/dev/dvd} |
| 4 | : ${DVD_SECTOR_COPY=dvd-sector-copy} |
| 5 | : ${DVD_CHECK_KEYS=dvd-check-keys} |
| 6 | |
| 7 | find "$@" -type f -name "*.retry" -print | sort | while IFS= read -r r; do |
| 8 | iso=${r%.retry}.iso |
| 9 | |
| 10 | want_id=$(dvd-id "$iso") |
| 11 | last_wrong=nil |
| 12 | echo "Insert $iso..." |
| 13 | while :; do |
| 14 | id=$(dvd-id "$dev") |
| 15 | case $id in |
| 16 | "$want_id") break ;; |
| 17 | "$last_wrong") ;; |
| 18 | *) |
| 19 | echo "No, that's $id -- wanted $want_id..." |
| 20 | last_wrong=$id |
| 21 | eject "$dev" |
| 22 | ;; |
| 23 | esac |
| 24 | sleep 2 |
| 25 | done |
| 26 | |
| 27 | for try in 3 2 1 0; do |
| 28 | "$DVD_SECTOR_COPY" -R"$r" "$dev" "$iso" |
| 29 | |
| 30 | set +e; DVDCSS_CACHE=off "$DVD_CHECK_KEYS" -b"$r.new" "$dev"; rc=$?; set -e |
| 31 | case $rc,$try in |
| 32 | 0,*) rm -f "$r"; break ;; |
| 33 | 1,0) echo "Giving up :-("; mv "$r.new" "$r"; break ;; |
| 34 | 1,*) echo "Still broken! Let's try again..."; mv "$r.new" "$r"; ;; |
| 35 | *) echo "Failed! :-("; exit 2 ;; |
| 36 | esac |
| 37 | done |
| 38 | eject "$dev" |
| 39 | done |