X-Git-Url: https://git.distorted.org.uk/~mdw/dvdrip/blobdiff_plain/dc53ebfaa3fb887f962b574c6bafa45b160fc765..568d66463019842bac5b2fb840570f4e445e05f3:/dvdrip diff --git a/dvdrip b/dvdrip index a4b5900..9634fe0 100755 --- 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,12 @@ 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" + accumulate_badblocks () { if [ -f "$tmp/$tag/badblocks.new" ]; then if [ ! -f "$tmp/$tag/badblocks" ]; then @@ -143,12 +150,24 @@ if [ ! -f "$tmp/$tag/iso" ]; then -b"$tmp/$tag/badblocks.new" "$@" "$dev" "$tmp/$tag/iso.new" run mv "$tmp/$tag/iso.new" "$tmp/$tag/iso" accumulate_badblocks + rm -f "$tmp/$tag/device" case $retry in t) rm -f "$tmp/$tag/badblocks.retry" ;; esac 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" run mv "$tmp/$tag/dest.new" "$tmp/$tag/dest" if [ -f "$tmp/$tag/eject" ]; then eject=t; else eject=nil; fi if [ -f "$tmp/$tag/ding" ]; then ding=t; else ding=nil; fi