Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/dvdrip
[dvdrip] / dvdrip
diff --git a/dvdrip b/dvdrip
index 734b00f..9634fe0 100755 (executable)
--- a/dvdrip
+++ b/dvdrip
@@ -5,6 +5,7 @@ dev=${DVDRIP_DEVICE-/dev/dvd}
 tmp=${DVDRIP_TMPDIR-${HOME?}/tmp/dvdrip}
 archive=${DVDRIP_ARCHIVE-jem.distorted.org.uk:/mnt/dvd/archive}
 : ${DVD_SECTOR_COPY=dvd-sector-copy}
+: ${DVD_ID=dvd-id}
 : ${DVDRIP_UPLOAD=dvdrip-upload}
 backup=nil ding=nil eject=nil force=nil retry=nil verbose=nil bogus=nil
 unset params
@@ -77,7 +78,7 @@ esac
 
 mkdir -p "$tmp/$tag"
 
-discid=$(dvd-id "$dev")
+discid=$("$DVD_ID" -I "$dev")
 if [ -f "$tmp/$tag/discid" ]; then
   read oldid <"$tmp/$tag/discid"
   case $force,$oldid in
@@ -95,6 +96,9 @@ info "copying \`$discid'"
 echo "$discid" >"$tmp/$tag/discid.new"
 mv "$tmp/$tag/discid.new" "$tmp/$tag/discid"
 
+if [ -b "$dev" ]; then msz=$(blockdev --getsize64 "$dev")
+else msz=nil; fi
+
 echo "$dev" >"$tmp/$tag/device.new"
 mv "$tmp/$tag/device.new" "$tmp/$tag/device"
 
@@ -151,6 +155,16 @@ if [ ! -f "$tmp/$tag/iso" ]; then
   if [ -f "$tmp/$tag/badblocks" ]; then
     fail "bad sectors found: check \`$tmp/$tag/iso', run again if ok"
   fi
+  case $msz in
+    nil) ;;
+    *)
+      newmsz=$(blockdev --getsize64 "$dev")
+      case $newmsz in
+       $msz) ;;
+       *) fail "medium size changed ($msz -> $newmsz): try again" ;;
+      esac
+      ;;
+  esac
 fi
 
 rm -f "$tmp/$tag/device"