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)))