dvdrip: Collect together bad-blocks lists from repeated runs.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 19 Feb 2022 01:55:28 +0000 (01:55 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 19 Feb 2022 01:55:28 +0000 (01:55 +0000)
dvdrip

diff --git a/dvdrip b/dvdrip
index 73400b6..5c1e72b 100755 (executable)
--- a/dvdrip
+++ b/dvdrip
@@ -117,6 +117,16 @@ case $rc,$force in
   0,t) warn "output file already exists; will overwrite" ;;
 esac
 
+accumulate_badblocks () {
+  if [ -f "$tmp/$tag/badblocks.new" ]; then
+    if [ ! -f "$tmp/$tag/badblocks" ]; then
+      { echo "## bad-blocks region map"; echo; } >"$tmp/$tag/badblocks"
+    fi
+    sed -n "/^[^#]/p" "$tmp/$tag/badblocks.new" >>"$tmp/$tag/badblocks"
+    rm "$tmp/$tag/badblocks.new"
+  fi
+}
+
 mkdir -p "$tmp/$tag"
 case $backup in
   t)
@@ -133,8 +143,10 @@ case $backup in
     ;;
   nil)
     if [ ! -f "$tmp/$tag/iso" ]; then
-      run_setrc "$DVD_SECTOR_COPY" -c -b"$tmp/$tag/badblocks" \
+      accumulate_badblocks
+      run_setrc "$DVD_SECTOR_COPY" -c -b"$tmp/$tag/badblocks.new" \
                "$dev" "$tmp/$tag/iso.new"
+      accumulate_badblocks
       case $rc in
        0)
          run mv "$tmp/$tag/iso.new" "$tmp/$tag/iso"