chiark
/
gitweb
/
~mdw
/
dvdrip
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cd5f633
)
dvdrip: Add `-r' option to retry the failed blocks.
author
Mark Wooding
<mdw@distorted.org.uk>
Thu, 24 Feb 2022 17:02:51 +0000
(17:02 +0000)
committer
Mark Wooding
<mdw@distorted.org.uk>
Thu, 24 Feb 2022 17:02:51 +0000
(17:02 +0000)
dvdrip
patch
|
blob
|
blame
|
history
diff --git
a/dvdrip
b/dvdrip
index ad7a280577b334b4f9ebeffab93529b7b992a5ff..c64487f626da31758d7be06b9966aff5de82056f 100755
(executable)
--- a/
dvdrip
+++ b/
dvdrip
@@
-6,14
+6,15
@@
tmp=${DVDRIP_TMPDIR-${HOME?}/tmp/dvdrip}
archive=${DVDRIP_ARCHIVE-jem.distorted.org.uk:/mnt/dvd/archive}
: ${DVD_SECTOR_COPY=dvd-sector-copy}
: ${DVDRIP_UPLOAD=dvdrip-upload}
archive=${DVDRIP_ARCHIVE-jem.distorted.org.uk:/mnt/dvd/archive}
: ${DVD_SECTOR_COPY=dvd-sector-copy}
: ${DVDRIP_UPLOAD=dvdrip-upload}
-backup=nil eject=nil force=nil verbose=nil bogus=nil; unset dir sub n label
+backup=nil eject=nil force=nil retry=nil verbose=nil bogus=nil
+unset dir sub n label
usage () {
cat <<EOF
usage () {
cat <<EOF
-usage: $prog [-befv] [-D DEV] [-a ARCH] [-d DIR]
+usage: $prog [-bef
r
v] [-D DEV] [-a ARCH] [-d DIR]
[-l LABEL] [-n N] [-s SUB] [-t TMP] TITLE
EOF
}
[-l LABEL] [-n N] [-s SUB] [-t TMP] TITLE
EOF
}
-while getopts "hD:a:bd:efl:n:s:t:v" opt; do
+while getopts "hD:a:bd:efl:n:
r
s:t:v" opt; do
case $opt in
h) usage; exit 0 ;;
D) dev=$OPTARG ;;
case $opt in
h) usage; exit 0 ;;
D) dev=$OPTARG ;;
@@
-24,6
+25,7
@@
while getopts "hD:a:bd:efl:n:s:t:v" opt; do
f) force=t ;;
l) label=$OPTARG ;;
n) n=$OPTARG ;;
f) force=t ;;
l) label=$OPTARG ;;
n) n=$OPTARG ;;
+ r) retry=t ;;
s) sub=$OPTARG ;;
t) tmp=$OPTARG ;;
v) verbose=t ;;
s) sub=$OPTARG ;;
t) tmp=$OPTARG ;;
v) verbose=t ;;
@@
-127,6
+129,7
@@
accumulate_badblocks () {
fi
}
fi
}
+set --
mkdir -p "$tmp/$tag"
any=nil
for i in "$tmp/$tag/dest.new" "$tmp/$tag/dest" "$tmp/$tag/dest.seen"; do
mkdir -p "$tmp/$tag"
any=nil
for i in "$tmp/$tag/dest.new" "$tmp/$tag/dest" "$tmp/$tag/dest.seen"; do
@@
-149,19
+152,35
@@
case $backup in
fi
;;
nil)
fi
;;
nil)
+ accumulate_badblocks
+ case $retry in
+ t)
+ if [ -f "$tmp/$tag/badblocks.retry" ]; then
+ :
+ elif [ -f "$tmp/$tag/badblocks" ]; then
+ run mv "$tmp/$tag/badblocks" "$tmp/$tag/badblocks.retry"
+ else
+ fail "no blocks to retry"
+ fi
+ set -- "$@" -R"$tmp/$tag/badblocks.retry"
+ if [ -f "$tmp/$tag/iso" ]; then
+ mv "$tmp/$tag/iso" "$tmp/$tag/iso.new"
+ fi
+ ;;
+ esac
if [ ! -f "$tmp/$tag/iso" ]; then
if [ ! -f "$tmp/$tag/iso" ]; then
- accumulate_badblocks
- run "$DVD_SECTOR_COPY" -c -b"$tmp/$tag/badblocks.new" \
+ run "$DVD_SECTOR_COPY" -c -b"$tmp/$tag/badblocks.new" "$@" \
"$dev" "$tmp/$tag/iso.new"
run mv "$tmp/$tag/iso.new" "$tmp/$tag/iso"
accumulate_badblocks
"$dev" "$tmp/$tag/iso.new"
run mv "$tmp/$tag/iso.new" "$tmp/$tag/iso"
accumulate_badblocks
+ 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
fi
;;
esac
if [ -f "$tmp/$tag/badblocks" ]; then
fail "bad sectors found: check \`$tmp/$tag/iso', run again if ok"
fi
fi
;;
esac
-mv "$tmp/$tag/dest.new" "$tmp/$tag/dest"
+
run
mv "$tmp/$tag/dest.new" "$tmp/$tag/dest"
run "$DVDRIP_UPLOAD"
case $eject in t) run eject "$dev" ;; esac
printf "\a"
run "$DVDRIP_UPLOAD"
case $eject in t) run eject "$dev" ;; esac
printf "\a"