wok rev 23870

syslinux: update iso2exe.sh
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Jun 23 08:04:01 2020 +0000 (2020-06-23)
parents 7880bcb5c1e0
children 53914b720f76
files linld/stuff/src/CRTL.ASM linld/stuff/src/ISO9660.CPP linld/stuff/src/pipehole.awk syslinux/stuff/iso2exe/iso2exe.sh
line diff
     1.1 --- a/linld/stuff/src/CRTL.ASM	Sun Jun 21 19:06:48 2020 +0000
     1.2 +++ b/linld/stuff/src/CRTL.ASM	Tue Jun 23 08:04:01 2020 +0000
     1.3 @@ -1123,10 +1123,11 @@
     1.4  @@digitok:
     1.5  		cmp	al,cl
     1.6  		jae	@@endstrtol
     1.7 +		cbw
     1.8 +		cwde
     1.9  		xchg	eax,ebx
    1.10  		mul	ecx
    1.11 -		add	eax,ebx
    1.12 -		xchg	eax,ebx
    1.13 +		add	ebx,eax
    1.14  		jmp	@@strtollp
    1.15  @@endstrtol:
    1.16  		mov	cl,10
    1.17 @@ -1154,23 +1155,14 @@
    1.18  		endif
    1.19  		else
    1.20  		ifndef	USE_ARGSTR
    1.21 -		push	si di
    1.22 -		xor	ax,ax
    1.23 -		cwd
    1.24 -		or	bx,bx
    1.25 -		else
    1.26 -		push	di
    1.27 -		xor	ax,ax
    1.28 -		cwd
    1.29 -		or	si,si
    1.30 -		endif
    1.31 -		jz	@@goend
    1.32 -		xchg	ax,di
    1.33 -		ifndef	USE_ARGSTR
    1.34 +		push	si
    1.35  		mov	si,bx
    1.36  		endif
    1.37 +		or	si,si
    1.38 +		jz	@@goend
    1.39  		xor	bx,bx
    1.40  		xor	cx,cx
    1.41 +		xor	dx,dx
    1.42  		lodsb
    1.43  		or	al,20h
    1.44  		cmp	al,'a'
    1.45 @@ -1214,20 +1206,15 @@
    1.46  @@digitok:
    1.47  		cmp	al,cl
    1.48  		jae	@@endstrtol
    1.49 +		cbw
    1.50  
    1.51  		push	ax
    1.52 -		push	dx
    1.53 +		xchg	ax,dx
    1.54 +		mul	cx
    1.55  		xchg	ax,bx
    1.56  		mul	cx
    1.57 -		xchg	ax,bx
    1.58 -		xchg	ax,dx
    1.59 -		xchg	ax,di
    1.60 -		pop	ax
    1.61 -		mul	cx
    1.62 -		add	ax,di
    1.63 -		xchg	ax,dx
    1.64 -		pop	ax
    1.65 -		mov	ah,0
    1.66 +		add	dx,bx
    1.67 +		pop	bx
    1.68  		add	bx,ax
    1.69  		adc	dx,0
    1.70  
    1.71 @@ -1257,9 +1244,7 @@
    1.72  		xchg	ax,bx
    1.73  @@popdisiret:
    1.74  		ifndef	USE_ARGSTR
    1.75 -		pop	di si
    1.76 -		else
    1.77 -		pop	di
    1.78 +		pop	si
    1.79  		endif
    1.80  		endif
    1.81  strtol_ret:
     2.1 --- a/linld/stuff/src/ISO9660.CPP	Sun Jun 21 19:06:48 2020 +0000
     2.2 +++ b/linld/stuff/src/ISO9660.CPP	Tue Jun 23 08:04:01 2020 +0000
     2.3 @@ -36,9 +36,7 @@
     2.4  int isoreaddir(void)
     2.5  {
     2.6  	char *p;
     2.7 -#ifdef __ROCKRIDGE
     2.8 -	char *endname;
     2.9 -#endif
    2.10 +
    2.11  	struct isostate *x=&isostate;
    2.12  
    2.13  	if (x->curdirsize == 0xFFFF) {
    2.14 @@ -65,31 +63,20 @@
    2.15  	//x->filemod = (p[25] & 2) ? 0040755 : 0100755;
    2.16  	//x->filemod = 0100755 - ((p[25] & (char)2) << 13);
    2.17  #ifdef __ROCKRIDGE
    2.18 -	endname = NULL;
    2.19  	// p += 34 + (p[32] & -2); ?
    2.20  	p = x->buffer + 34 + ((p[32] + x->curpos) & -2);
    2.21  	do {
    2.22 -		int len = p[2];
    2.23 -# if 0
    2.24 -		switch (* (short *) p) {
    2.25 -		case 0x5850: // PX
    2.26 -			x->filemod = * (short *) (p + 4);
    2.27 -			break;
    2.28 -		case 0x4D4E: // NM
    2.29 -# else
    2.30 +		register len = p[2];
    2.31  		if (* (short *) p == 0x4D4E) {
    2.32 -# endif
    2.33  			x->filename = p + 5;
    2.34 -			endname = p + len;
    2.35 +			p[len] = 0;
    2.36 +			goto found;
    2.37  		}
    2.38  		p += len;
    2.39 +#ifndef ISOHOOK
    2.40  	} while (x->buffer + x->curpos + x->entrysize - 2 > p);
    2.41 -#ifdef ISOHOOK
    2.42 -	*endname = 0;
    2.43  #else
    2.44 -	if (endname)
    2.45 -		*endname = 0;
    2.46 -	else
    2.47 +	} while (1);
    2.48  #endif
    2.49  #endif
    2.50  #ifndef ISOHOOK
    2.51 @@ -111,6 +98,7 @@
    2.52  		}
    2.53  	}
    2.54  #endif
    2.55 +found:
    2.56  	x->curpos += x->entrysize;
    2.57  	return 0;
    2.58  }
     3.1 --- a/linld/stuff/src/pipehole.awk	Sun Jun 21 19:06:48 2020 +0000
     3.2 +++ b/linld/stuff/src/pipehole.awk	Tue Jun 23 08:04:01 2020 +0000
     3.3 @@ -203,6 +203,13 @@
     3.4  	}
     3.5  	 } # file == "load.cpp"
     3.6  	 if (file == "iso9660.cpp") {
     3.7 +	if (/register len/) isiso=12
     3.8 +	if (isiso == 12) { # ISO9660.LST
     3.9 +		sub(/mov	dx,ax/,"xchg	ax,bx")
    3.10 +		if (/bx,dx/) next
    3.11 +		sub(/i,dx/,"i,bx")
    3.12 +		if (/while/) isiso=0
    3.13 +	}
    3.14  	if (/while \(\*\+\+s/) isiso=11
    3.15  	if (isiso == 11) { # ISO9660.LST
    3.16  		if (/cmp/ || /filename2open/) isiso=0
     4.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh	Sun Jun 21 19:06:48 2020 +0000
     4.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh	Tue Jun 23 08:04:01 2020 +0000
     4.3 @@ -252,19 +252,18 @@
     4.4  
     4.5  restore_hybrid_mbr()
     4.6  {
     4.7 -	if [ $(get 0 "$1") -eq 60905 ]; then
     4.8 +	[ $(get 0 "$1") -eq 60905 ] &&
     4.9  		ddn bs=1 if="$1" of="$1" skip=$((0x1BE)) seek=0 count=3
    4.10 -		ddn bs=1 skip=$((0x1BE)) count=66 if="$2" | \
    4.11 -			ddq bs=1 seek=$((0x1BE)) count=66 of="$1"
    4.12 -		if [ -n "$RECURSIVE_PARTITION" ]; then
    4.13 -			for i in 0 1 2 3 ; do
    4.14 -				n=$(get $((0x1C6+16*i)) $1 4)
    4.15 -				[ $n -eq 0 -o $n -gt 64 ] && continue
    4.16 -				store $((0x1C0+16*i)) 1 $1 8
    4.17 -				store $((0x1C6+16*i)) 0 $1 32
    4.18 -				store $((0x1CA+16*i)) $(($(get $((0x1CA+16*i)) $1 4)+$n)) $1 32
    4.19 -			done
    4.20 -		fi
    4.21 +	ddn bs=1 skip=$((0x1BE)) count=66 if="$2" | \
    4.22 +		ddq bs=1 seek=$((0x1BE)) count=66 of="$1"
    4.23 +	if [ -n "$RECURSIVE_PARTITION" ]; then
    4.24 +		for i in 0 1 2 3 ; do
    4.25 +			n=$(get $((0x1C6+16*i)) $1 4)
    4.26 +			[ $n -eq 0 -o $n -gt 64 ] && continue
    4.27 +			store $((0x1C0+16*i)) 1 $1 8
    4.28 +			store $((0x1C6+16*i)) 0 $1 32
    4.29 +			store $((0x1CA+16*i)) $(($(get $((0x1CA+16*i)) $1 4)+$n)) $1 32
    4.30 +		done
    4.31  	fi
    4.32  }
    4.33