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