wok rev 13974

syslinux/iso2exe: fix checksum
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Feb 06 12:05:22 2013 +0100 (2013-02-06)
parents 3dd8f0cfd04b
children 04f1f2b56a0f
files syslinux/stuff/iso2exe/bootiso.S syslinux/stuff/iso2exe/iso2exe.sh syslinux/stuff/iso2exe/win32.c
line diff
     1.1 --- a/syslinux/stuff/iso2exe/bootiso.S	Wed Feb 06 02:13:32 2013 +0000
     1.2 +++ b/syslinux/stuff/iso2exe/bootiso.S	Wed Feb 06 12:05:22 2013 +0100
     1.3 @@ -171,7 +171,7 @@
     1.4  	movw	(%si), %cx
     1.5  	jcxz	is386
     1.6  #endif
     1.7 -	movw	$0x7FE0/2, %cx
     1.8 +	movw	$(EXESTR(0x8000))/2, %cx
     1.9  chklp:
    1.10  	lodsw
    1.11  	addw	%ax, %dx
     2.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh	Wed Feb 06 02:13:32 2013 +0000
     2.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh	Wed Feb 06 12:05:22 2013 +0100
     2.3 @@ -44,8 +44,6 @@
     2.4  	*5a4d)	echo "The file $1 is already an EXE file." 1>&2 && exit 1;;
     2.5  	*0000)	[ -x /usr/bin/isohybrid ] && isohybrid $1
     2.6  	esac
     2.7 -	[ ! -x /usr/sbin/mount.posixovl ] && 
     2.8 -	echo "No file mount.posixovl. Aborting." 1>&2 && exit 1
     2.9  		
    2.10  	echo "Moving syslinux hybrid boot record..."
    2.11  	ddq if=$1 bs=512 count=1 | ddq of=$1 bs=512 count=1 seek=1 conv=notrunc 
    2.12 @@ -56,10 +54,11 @@
    2.13  	# keep the largest room for the tazlito info file
    2.14  	TMP=/tmp/iso2exe$$
    2.15  	mkdir -p $TMP/bin $TMP/dev
    2.16 -	cp /usr/sbin/mount.posixovl $TMP/bin/mount.posixovl.iso2exe
    2.17  	cp -a /dev/?d?* $TMP/dev
    2.18  	$0 --get init > $TMP/init.exe
    2.19 -	chmod +x $TMP/init.exe $TMP/bin/mount.posixov*
    2.20 +	grep -q mount.posixovl.iso2exe $TMP/init.exe &&
    2.21 +	cp /usr/sbin/mount.posixovl $TMP/bin/mount.posixovl.iso2exe
    2.22 +	find $TMP -type f | xargs chmod +x
    2.23  	( cd $TMP ; find * | cpio -o -H newc ) | \
    2.24  		lzma e $TMP/rootfs.gz -si 2> /dev/null
    2.25  	SIZE=$(wc -c < $TMP/rootfs.gz)
    2.26 @@ -73,19 +72,21 @@
    2.27  	printf "Adding DOS boot file at %04X...\n" $OFS
    2.28  	$0 --get boot.com | ddq of=$1 bs=1 seek=$OFS conv=notrunc
    2.29  	store 66 $(($OFS+0xC0)) $1
    2.30 -	SIZE=$($0 --get win32.exe | tee /tmp/exe$$ | wc -c)
    2.31 -	OFS=$(( 128 + ( ($OFS - $SIZE + 128) & 0xFE00 ) ))
    2.32 -	printf "Adding WIN32 file at %04X...\n" $OFS
    2.33 -	LOC=$((0xAC+$(get 0x94 /tmp/exe$$)))
    2.34 -	for i in $(seq 1 $(get 0x86 /tmp/exe$$)); do
    2.35 -		store $LOC $(($(get $LOC /tmp/exe$$)+$OFS-128)) /tmp/exe$$
    2.36 -		LOC=$(($LOC+40))
    2.37 -	done
    2.38 -	ddq if=/tmp/exe$$ of=$1 bs=1 skip=128 seek=$OFS conv=notrunc
    2.39 +	SIZE=$($0 --get win32.exe 2> /dev/null | tee /tmp/exe$$ | wc -c)
    2.40 +	if [ $SIZE -ne 0 ]; then
    2.41 +		OFS=$(( 128 + ( ($OFS - $SIZE + 128) & 0xFE00 ) ))
    2.42 +		printf "Adding WIN32 file at %04X...\n" $OFS
    2.43 +		LOC=$((0xAC+$(get 0x94 /tmp/exe$$)))
    2.44 +		for i in $(seq 1 $(get 0x86 /tmp/exe$$)); do
    2.45 +			store $LOC $(($(get $LOC /tmp/exe$$)+$OFS-128)) /tmp/exe$$
    2.46 +			LOC=$(($LOC+40))
    2.47 +		done
    2.48 +		ddq if=/tmp/exe$$ of=$1 bs=1 skip=128 seek=$OFS conv=notrunc
    2.49 +	fi
    2.50  	rm -f /tmp/exe$$ 
    2.51  	store 60 $OFS $1
    2.52  	store 26 ${RANDOM:-0} $1
    2.53 -	i=34
    2.54 +	i=66
    2.55  	n=0
    2.56  	echo -n "Adding checksum..."
    2.57  	while [ $i -lt 32768 ]; do
     3.1 --- a/syslinux/stuff/iso2exe/win32.c	Wed Feb 06 02:13:32 2013 +0000
     3.2 +++ b/syslinux/stuff/iso2exe/win32.c	Wed Feb 06 12:05:22 2013 +0100
     3.3 @@ -1,6 +1,6 @@
     3.4 -#include <stdio.h>
     3.5 +#include <windows.h>
     3.6  
     3.7  int main()
     3.8  {
     3.9 -	printf("No support for Windows yet.\n");
    3.10 +	MessageBox(NULL,"No support for Windows yet.","Sorry",MB_OK);
    3.11  }