wok diff syslinux/stuff/iso2exe/init @ rev 17496
syslinux/iso2exe: check ISO md5 (again)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Mon Jan 05 12:38:18 2015 +0100 (2015-01-05) |
parents | aa46cf9cc35a |
children | 00bb1e4137c6 |
line diff
1.1 --- a/syslinux/stuff/iso2exe/init Sat Jan 03 21:41:48 2015 +0100 1.2 +++ b/syslinux/stuff/iso2exe/init Mon Jan 05 12:38:18 2015 +0100 1.3 @@ -1,7 +1,6 @@ 1.4 #!/bin/sh 1.5 1.6 DIALOG=dialog 1.7 -ISOMD5= 1.8 1.9 ddq() 1.10 { 1.11 @@ -10,8 +9,8 @@ 1.12 1.13 get() 1.14 { 1.15 - od -j $1 -N ${4:-${3:-2}} -t u${3:-2} -An $2 2> /dev/null || 1.16 - hexdump -v -s $1 -n ${4:-${3:-2}} -e "\"\" 1/${3:-2} \" %d\"" $2 1.17 + od -v -j $1 -N ${4:-${3:-2}} -t u${3:-2} -w${3:-2} -An $2 2>/dev/null || 1.18 + hexdump -v -s $1 -n ${4:-${3:-2}} -e "\"\" 1/${3:-2} \" %d\n\"" $2 1.19 } 1.20 1.21 getarg() 1.22 @@ -638,17 +637,23 @@ 1.23 1.24 gotisomd5() 1.25 { 1.26 - [ "$(which md5sum 2> /dev/null)" ] && [ "$ISOMD5" ] && 1.27 - echo -en "\"$1\" \"$2\"" 1.28 + [ $(get 18 /dev/loop0) -ne 0 ] && echo -en "\"$1\" \"$2\"" 1.29 } 1.30 1.31 isomd5() 1.32 { 1.33 dotwait "Checking iso image" 1.34 - [ "$(ddq if=/dev/loop0 bs=32k skip=1 | md5sum)" == "$ISOMD5 -" ] && 1.35 + [ "$(ddq if=/dev/loop0 bs=32k skip=1 | md5sum)" == \ 1.36 + "$(ddq if=/dev/loop0 bs=16 count=1 skip=2047 | od -N 16 -t x1 -An | \ 1.37 + sed 's/ //g') -" ] && echo "OK" || echo "ERROR" 1.38 + echo -n "Checking iso hybrid boot" 1.39 + n=$(($(get 2 /dev/loop0)-1+($(get 4 /dev/loop0)-1)*512)) 1.40 + s=$(get 0 /dev/loop0 2 $n | awk '{ i+= $0 } END { print i }') 1.41 + [ $(((1+$s+$(get $(($n+1)) /dev/loop0 1)) % 65536)) -eq 0 ] && 1.42 echo "OK" || echo "ERROR" 1.43 rm -f /tmp/wait 1.44 - sleep 5 1.45 + echo "Press RETURN to continue." 1.46 + read n 1.47 } 1.48 1.49 fdbootstrap() 1.50 @@ -729,7 +734,7 @@ 1.51 done ) > $device 1.52 1.53 # partition + fat32 format for the remining space 1.54 - get 446 $device 2 12 | { read dx cx ol oh ll lh 1.55 + get 446 $device 2 12 | xargs echo | { read dx cx ol oh ll lh 1.56 if [ $dx -eq $((0x3F17)) ]; then 1.57 cx=$(($cx & 0xFF00)) 1.58 ofs=$(($ll+($lh<<16)))