wok diff syslinux/stuff/iso2exe/iso2exe.sh @ 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/iso2exe.sh	Sat Jan 03 21:41:48 2015 +0100
     1.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh	Mon Jan 05 12:38:18 2015 +0100
     1.3 @@ -37,11 +37,6 @@
     1.4  	mkdir -p $TMP/bin $TMP/dev
     1.5  	cp -a /dev/?d?* /dev/tty /dev/tty0 $TMP/dev
     1.6  	$0 --get init > $TMP/init.exe
     1.7 -	if [ $(stat -c %s $1) -gt 32768 ]; then
     1.8 -		echo "Compute ISO image md5 ..."
     1.9 -		sed -i "s/^ISOMD5.*/ISOMD5=$(ddq if=$1 bs=32k skip=1 | \
    1.10 -			md5sum | cut -c-32)/" $TMP/init.exe
    1.11 -	fi
    1.12  #	mount -o loop,ro $1 $TMP
    1.13  #	oldslitaz="$(ls $TMP/boot/isolinux/splash.lss 2> /dev/null)"
    1.14  #	umount -d $TMP
    1.15 @@ -242,9 +237,21 @@
    1.16  	add_fdbootstrap $1
    1.17  	printf "%d free bytes in %04X..%04X\n" $(($OFS-$HOLE)) $HOLE $OFS
    1.18  	store 26 ${RANDOM:-0} $1
    1.19 -	echo -n "Adding checksum..."
    1.20 +	if [ $(stat -c %s $1) -gt 32768 ]; then
    1.21 +		echo "Adding ISO image md5 ..."
    1.22 +		echo -en "$(ddq if=$1 bs=32k skip=1 | md5sum | cut -c-32 | sed \
    1.23 +		  's/\(..\)/\\x\1/g')" | ddq bs=16 seek=2047 conv=notrunc of=$1
    1.24 +	fi
    1.25 +	echo -n "Adding boot checksum..."
    1.26  	store 64 $(od -v -j 66 -N 32702 -t u2 -w2 -An $1 | \
    1.27  		   awk '{ i+= $0 } END { print -(i % 65536) }') $1
    1.28 +	if [ $(stat -c %s $1) -gt 32768 ]; then
    1.29 +		n=$(($(get 2 $1) - 1 + ($(get 4 $1) - 1)*512))
    1.30 +		n=$(($(od -v -N $n -t u2 -w2 -An $1 | \
    1.31 +		       awk '{ i+= $0 } END { print (i % 65536) }') \
    1.32 +		     + $(get $(($n+1)) $1 1)))
    1.33 +		store 18 $(( (-$n -1) % 65536 )) $1
    1.34 +	fi
    1.35  	echo " done."
    1.36  }
    1.37