wok-current rev 24177

syslinux: add apple partitions
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Dec 30 19:33:58 2021 +0000 (2021-12-30)
parents 62cc22bebaa9
children b093349fa789
files syslinux/stuff/iso2exe/bootiso.S syslinux/stuff/iso2exe/iso2exe.sh syslinux/stuff/iso2exe/taziso
line diff
     1.1 --- a/syslinux/stuff/iso2exe/bootiso.S	Thu Dec 30 18:02:41 2021 +0000
     1.2 +++ b/syslinux/stuff/iso2exe/bootiso.S	Thu Dec 30 19:33:58 2021 +0000
     1.3 @@ -600,4 +600,25 @@
     1.4  	.ascii	"This program cannot be run in DOS mode.$"
     1.5  	.org	0x0778,0xEE
     1.6  
     1.7 +	.macro	apple_partition	count=2, start=1, size=2, name, namesz, type, typesz, start_data, size_data, status
     1.8 +	.byte	0x50, 0x4D, 0, 0	/* PM */
     1.9 +#define BE(x) (((x)>>24)|((((x)>>16)&255)<<8)|((((x)>>8)&255)<<16)|(((x)&255)<<24))
    1.10 +	.long	BE(\count)
    1.11 +	.long	BE(\start)
    1.12 +	.long	BE(\size)
    1.13 +	.ascii	"\name"
    1.14 +	.ds.b	32-\namesz, 0
    1.15 +	.ascii	"\type"
    1.16 +	.ds.b	32-\typesz, 0
    1.17 +	.long	BE(\start_data)
    1.18 +	.long	BE(\size_data)
    1.19 +	.long	BE(\status)
    1.20 +	.ds.b	44,0			/* boot code & processor info */
    1.21 +	.endm
    1.22 +
    1.23 +	.org	0x800,0
    1.24 +	apple_partition 2, 1, 2, "Apple", 5, "Apple_partition_map", 19, 0, 2, 3 /* valid, allocated */
    1.25 +	.org	0x1000,0
    1.26 +	apple_partition 2, 1, 2, "EFI", 3, "Apple_HFS", 9, 0, 0, 0x40000013 /* valid, allocated, readable, automatically mount at startup */
    1.27 +
    1.28  	.end
     2.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh	Thu Dec 30 18:02:41 2021 +0000
     2.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh	Thu Dec 30 19:33:58 2021 +0000
     2.3 @@ -15,8 +15,8 @@
     2.4  	local i
     2.5  	local n
     2.6  	n=$2; for i in $(seq 8 8 ${4:-16}); do
     2.7 -		printf '\\\\x%02X' $(($n & 255))
     2.8 -		n=$(($n >> 8))
     2.9 +		printf '\\\\x%02X' $((n & 255))
    2.10 +		n=$((n >> 8))
    2.11  	done | xargs echo -en | ddn bs=1 of=$3 seek=$(($1))
    2.12  }
    2.13  
    2.14 @@ -47,7 +47,7 @@
    2.15  		$0 --get rootfs.gz > $TMP/rootfs.gz
    2.16  		SIZE=$(wc -c < $TMP/rootfs.gz)
    2.17  		store 24 $SIZE $1
    2.18 -		OFS=$(( 0x7FF0 - $SIZE ))
    2.19 +		OFS=$(( 0x7FF0 - SIZE ))
    2.20  		printf "Adding rootfs.gz file at %04X (%d bytes) ...\n" $OFS $SIZE
    2.21  		ddn if=$TMP/rootfs.gz of=$1 bs=1 seek=$OFS
    2.22  	fi
    2.23 @@ -63,7 +63,7 @@
    2.24  	n=$(stat -c %s /tmp/rezipped$$.gz)
    2.25  	printf "Moving tazlito data record at %04X ($n bytes) ...\n" $OFS
    2.26  	ddn if=/tmp/rezipped$$.gz bs=1 of=$1 seek=$OFS
    2.27 -	HOLE=$(($HOLE+$n))
    2.28 +	HOLE=$((HOLE+n))
    2.29  	rm -f /tmp/rezipped$$.gz
    2.30  	if [ -n "$gpt" ]; then
    2.31  		store $((0x25E)) $n $1
    2.32 @@ -73,51 +73,61 @@
    2.33  
    2.34  add_win32exe()
    2.35  {
    2.36 +	$0 --get bootiso.bin 2> /dev/null > /tmp/bin$$
    2.37  	SIZE=$($0 --get win32.exe 2> /dev/null | tee /tmp/exe$$ | wc -c)
    2.38  	n=1536
    2.39 -	SIZE=$(($SIZE+$n))
    2.40 +	cut=$((0x98+$(get 0x94 /tmp/exe$$)))	### end of header
    2.41 +	if [ $(get 2048 /tmp/bin$$) -eq 19792 ]; then		### Fix EFI Apple partition
    2.42 +		o=$(($(get 584 "$1")*512))
    2.43 +		f=$(($(get $((o+0x20)) "$1" 4)/4))
    2.44 +		l=$((($(get $((o+0x28)) "$1" 4)+1)/4-f))
    2.45 +		store $((0x1008)) $(printf "%08x" $f | sed 's|\(..\)\(..\)\(..\)\(..\)|0x\4\3\2\1|') /tmp/bin$$ 32
    2.46 +		store $((0x1054)) $(printf "%08x" $l | sed 's|\(..\)\(..\)\(..\)\(..\)|0x\4\3\2\1|') /tmp/bin$$ 32
    2.47 +		n=4608
    2.48 +	fi
    2.49 +	SIZE=$((SIZE+n))
    2.50  	printf "Adding WIN32 file at %04X (%d bytes) ...\n" 0 $SIZE
    2.51  	[ -n "$gpt" ] && printf "Adding GPT at %04X (1024 bytes) ...\n" 512
    2.52 -	for i in $(seq 396 40 $((356+$(get 0x86 /tmp/exe$$)*40))); do
    2.53 -		x=$(($n + $(get $i /tmp/exe$$)))
    2.54 -		store $(($i)) $x /tmp/exe$$	### section offset
    2.55 +	for i in $(seq 396 40 $((356+$(get 0x86 /tmp/exe$$)*40))); do	### 18C 1B4 1DC
    2.56 +		x=$((n + $(get $i /tmp/exe$$)))
    2.57 +		store $i $x /tmp/exe$$		### section offset
    2.58  	done
    2.59 -	cut=$((0x98+$(get 0x94 /tmp/exe$$)))	### end of header
    2.60 -	store $((0x94)) $(($n + $cut - 0x98)) /tmp/exe$$
    2.61 +	store $((0x94)) $((n + cut - 0x98)) /tmp/exe$$
    2.62  	ddn if=/tmp/exe$$ of=$1 bs=1 count=$cut
    2.63 -	ddn if=/tmp/exe$$ of=$1 bs=1 skip=$cut seek=$(($n+$cut))
    2.64 +	ddn if=/tmp/exe$$ of=$1 bs=1 skip=$cut seek=$((n+cut))
    2.65  	printf "Adding bootiso head at %04X...\n" 0
    2.66 -	$0 --get bootiso.bin 2> /dev/null > /tmp/exe$$
    2.67  	store 510 $((0xAA55)) $1
    2.68  	while read adrs sz; do
    2.69 -		ddn if=/tmp/exe$$ of=$1 bs=1 count=$((0x$sz)) seek=$((0x$adrs)) skip=$((0x$adrs))
    2.70 +		ddn if=/tmp/bin$$ of=$1 bs=1 count=$((0x$sz)) seek=$((0x$adrs)) skip=$((0x$adrs))
    2.71  	done <<EOT
    2.72 -0000 0080
    2.73 -0178 0040
    2.74 -0270 0190
    2.75 -0600 0178
    2.76 +0000 0080	### DOS stub + MBR
    2.77 +0178 0040	### partition boot code + MBR partitions (178..26F)
    2.78 +0270 0190	### DOS EXE code (400-5FF=head buf)
    2.79 +0600 0178	### iso hybrid boot code
    2.80 +0800 0088	### Apple partition 1
    2.81 +1000 0088	### Apple partition 1
    2.82  EOT
    2.83  	i=$((0x600))
    2.84  	OFS=$SIZE
    2.85 -	rm -f /tmp/exe$$ /tmp/coff$$
    2.86 +	rm -f /tmp/exe$$ /tmp/bin$$
    2.87  	if [ -z "$RECURSIVE_PARTITION" -a $(get 454 $1 4) -eq 0 ]; then
    2.88 -		store 448 $((1+$i/512)) $1 8			### 446+2 SECTOR
    2.89 -		store 454 $(($i/512)) $1 32			### 446+8 OFFSET
    2.90 +		store 448 $((1+i/512)) $1 8			### 446+2 SECTOR
    2.91 +		store 454 $((i/512)) $1 32			### 446+8 OFFSET
    2.92  		store 458 $(($(stat -c %s $1)/512)) $1 32	### 446+12 SIZE
    2.93  	fi
    2.94  	mkdir /tmp/mnt$$	
    2.95  	mount -o loop,ro $1 /tmp/mnt$$
    2.96  	if [ -s /tmp/mnt$$/boot/linld.com ]; then
    2.97  		i=$(($(get 20 $1)-0xC0))
    2.98 -		store $(($i-6)) $(($(busybox stat -m /tmp/mnt$$/boot/linld.com | sed q)*2048)) $1 32
    2.99 -		store $(($i-2)) $(stat -c %s /tmp/mnt$$/boot/linld.com) $1
   2.100 +		store $((i-6)) $(($(busybox stat -m /tmp/mnt$$/boot/linld.com | sed q)*2048)) $1 32
   2.101 +		store $((i-2)) $(stat -c %s /tmp/mnt$$/boot/linld.com) $1
   2.102  		r="$(sed '/rootfs[0-9]/!d;s|.* initrd=||;s|/boot/||g;s| .*||' \
   2.103  			/tmp/mnt$$/boot/isolinux/isolinux.cfg | tail -n1)"
   2.104  		if grep -qs rootfs /tmp/mnt$$/boot/isolinux/isolinux.cfg ; then
   2.105  			echo -n "image=/boot/bzImage initrd=${r:-rootfs.gz},! autologin rdinit=/init.exe"
   2.106  		else
   2.107  			echo -n "$(sed '/KERNEL/!d;s|.*KERNEL *|image=|;q' /tmp/mnt$$/boot/isolinux/isolinux.cfg)"
   2.108 -		fi | ddn bs=1 of=$1 conv=notrunc seek=$(($i-134))
   2.109 +		fi | ddn bs=1 of=$1 conv=notrunc seek=$((i-134))
   2.110  	fi
   2.111  	umount /tmp/mnt$$	
   2.112  	rmdir /tmp/mnt$$	
   2.113 @@ -127,14 +137,14 @@
   2.114  {
   2.115  	SIZE=$($0 --get bootfd.bin 2> /dev/null | wc -c)
   2.116  	if [ $SIZE -ne 0 ]; then
   2.117 -		SIZE=$(( $SIZE -  512 )) # sector 2 is data
   2.118 -		OFS=$(( $OFS - $SIZE ))
   2.119 +		SIZE=$(( SIZE -  512 ))				### sector 2 is data
   2.120 +		OFS=$(( OFS - SIZE ))
   2.121  		printf "Adding floppy bootstrap file at %04X (%d bytes) ...\n" $OFS $SIZE
   2.122  		$0 --get bootfd.bin | \
   2.123  		ddn of=$1 bs=1 count=512 seek=$OFS
   2.124  		$0 --get bootfd.bin | \
   2.125 -		ddn of=$1 bs=1 skip=1024 seek=$((512 + $OFS))
   2.126 -		store 26 $(($SIZE/512)) $1 8
   2.127 +		ddn of=$1 bs=1 skip=1024 seek=$((512 + OFS))
   2.128 +		store 26 $((SIZE/512)) $1 8
   2.129  	fi
   2.130  }
   2.131  
   2.132 @@ -163,33 +173,33 @@
   2.133  	case "$1" in
   2.134  	win32.exe)	[ $x -eq 2048 ] && x=10752
   2.135  			[ $x -eq 1024 ] || SIZE=$x;;
   2.136 -	syslinux.mbr)	[ $x -eq 1024 ] || OFFSET=$(($x - 512)); SIZE=336;;
   2.137 +	syslinux.mbr)	[ $x -eq 1024 ] || OFFSET=$((x - 512)); SIZE=336;;
   2.138  	flavor.info)	[ $(get 22528 "$ISO") -eq 35615 ] && OFFSET=22528
   2.139  			[ $x -eq 2048 ] && x=$(get 0x25C "$ISO") &&
   2.140  					   SIZE=$(get 0x25E "$ISO")
   2.141  			[ $(get $x "$ISO") -eq 35615 ] && OFFSET=$x
   2.142  			[ $OFFSET -ne 0 ] && [ $SIZE -eq 0 ] &&
   2.143 -			SIZE=$(ddq bs=512 skip=$(($OFFSET/512)) if="$ISO" | gzsize);;
   2.144 +			SIZE=$(ddq bs=512 skip=$((OFFSET/512)) if="$ISO" | gzsize);;
   2.145  	floppy.boot)	SIZE=$(($(get 26 "$ISO" 1)*512))
   2.146 -			OFFSET=$(($(get 64 "$ISO") - 0xC0 - $SIZE));;
   2.147 -	rootfs.gz)	SIZE=$(get 24 "$ISO"); OFFSET=$(($stub - $SIZE));;
   2.148 +			OFFSET=$(($(get 64 "$ISO") - 0xC0 - SIZE));;
   2.149 +	rootfs.gz)	SIZE=$(get 24 "$ISO"); OFFSET=$((stub - SIZE));;
   2.150  	isoboot.com)	OFFSET=$(($(get 64 "$ISO") - 0xC0))
   2.151 -			SIZE=$(($stub - $(get 24 "$ISO") - $OFFSET));;
   2.152 -	dosstub)	[ "$dosstub" ] && OFFSET=$stub && SIZE=$((0x7FF0 - $OFFSET));;
   2.153 +			SIZE=$((stub - $(get 24 "$ISO") - OFFSET));;
   2.154 +	dosstub)	[ "$dosstub" ] && OFFSET=$stub && SIZE=$((0x7FF0 - OFFSET));;
   2.155  	boot.md5)	[ $(get 0 "$ISO") -eq 23117 ] &&
   2.156  			[ $(get 18 "$ISO") -ne 0 ] &&
   2.157  			OFFSET=$((0x7FF0)) && SIZE=16;;
   2.158  	fs.iso)		OFFSET=$((0x8000))
   2.159 -			SIZE=$((2048*$c - $OFFSET));;
   2.160 +			SIZE=$((2048*c - OFFSET));;
   2.161  	custom.magic)	ddq bs=2k skip=$c if="$ISO" | ddq bs=1 count=6 | \
   2.162 -				grep -q '#!boot' && OFFSET=$((2048*$c)) &&
   2.163 +				grep -q '#!boot' && OFFSET=$((2048*c)) &&
   2.164  			SIZE=39 ;;
   2.165 -	custom.append)  OFFSET=$((2048*$c+47)) &&
   2.166 +	custom.append)  OFFSET=$((2048*c+47)) &&
   2.167  			SIZE=$(ddq bs=2k skip=$c if="$ISO" count=1 | \
   2.168  				sed '/^append=/!d;s/^[^=]*=.//' | wc -c);;
   2.169  	custom.initrd)  x=$(ddq bs=2k skip=$c if="$ISO" count=1 | \
   2.170  				sed '/^append=\|^initrd:/!d' | wc -c)
   2.171 -			OFFSET=$((2048*$c+$x+40))
   2.172 +			OFFSET=$((2048*c+x+40))
   2.173  			SIZE=$(($(ddq bs=2k skip=$c if="$ISO" count=1 | \
   2.174  				sed '/^initrd:/!d;s/.*://') + 0));;
   2.175  	esac
   2.176 @@ -199,7 +209,7 @@
   2.177  {
   2.178  	OFFSET=$(stat -c %s "$1")
   2.179  	[ $OFFSET -gt $HEAP ] &&
   2.180 -	printf "%d free bytes in %04X..%04X\n" $(($OFFSET - $HEAP)) $HEAP $OFFSET
   2.181 +	printf "%d free bytes in %04X..%04X\n" $((OFFSET - HEAP)) $HEAP $OFFSET
   2.182  	if [ $(get 510 "$1") -eq 43605 ]; then
   2.183  		echo "MBR partitions :"
   2.184  		for i in 0 1 2 3; do
   2.185 @@ -216,14 +226,14 @@
   2.186  			o=$(($(get 584 "$1")*512))
   2.187  			i=0
   2.188  			while [ $i -lt $n ]; do
   2.189 -				f=$(get $(($o+0x20)) "$1" 4)
   2.190 -				l=$(($(get $(($o+0x28)) "$1" 4)-$f))
   2.191 +				f=$(get $((o+0x20)) "$1" 4)
   2.192 +				l=$(($(get $((o+0x28)) "$1" 4)-f))
   2.193  				[ $l -eq 0 ] && break
   2.194 -				printf " $i:%08X  %08X  %s\n" $f $(($l+1)) \
   2.195 -				"$(od -An -N 72 -w72 -j $(($o+0x38)) -t a "$1" \
   2.196 +				printf " $i:%08X  %08X  %s\n" $f $((l+1)) \
   2.197 +				"$(od -An -N 72 -w72 -j $((o+0x38)) -t a "$1" \
   2.198  				 | sed 's/ nul//g;s/   //g;s/ sp//g')"
   2.199 -				o=$(($o+$s))
   2.200 -				i=$(($i+1))
   2.201 +				o=$((o+s))
   2.202 +				i=$((i+1))
   2.203  			done
   2.204  		fi
   2.205  	fi
   2.206 @@ -232,12 +242,12 @@
   2.207  		echo "Apple partitions :"
   2.208  		i=0
   2.209  		while [ $(get $o "$1") -eq 19792 ]; do
   2.210 -			f=$((0x$(od -An -N 4 -j $(($o+8)) -t x1 "$1" | sed 's/ //g')))
   2.211 -			l=$((0x$(od -An -N 4 -j $(($o+0x54)) -t x1 "$1" | sed 's/ //g')))
   2.212 +			f=$((0x$(od -An -N 4 -j $((o+8)) -t x1 "$1" | sed 's/ //g')))
   2.213 +			l=$((0x$(od -An -N 4 -j $((o+0x54)) -t x1 "$1" | sed 's/ //g')))
   2.214  			printf " $i:%08X  %08X  %s\n" $f $l \
   2.215 -			"$(ddq bs=1 skip=$(($o+16)) count=32 if="$1" | strings -n 1)"
   2.216 -			o=$(($o+2048))
   2.217 -			i=$(($i+1))
   2.218 +			"$(ddq bs=1 skip=$((o+16)) count=32 if="$1" | strings -n 1)"
   2.219 +			o=$((o+2048))
   2.220 +			i=$((i+1))
   2.221  		done
   2.222  	fi
   2.223  }
   2.224 @@ -253,9 +263,9 @@
   2.225  		[ "${OFFSET:8}" ] && continue
   2.226  		[ $OFFSET -lt 0 ] && continue
   2.227  		[ $(get $OFFSET "$ISO") -eq 0 ] && continue
   2.228 -		[ $OFFSET -gt $HEAP ] && [ $(($OFFSET - $HEAP)) -gt 16 ] &&
   2.229 -		printf "%d free bytes in %04X..%04X\n" $(($OFFSET - $HEAP)) $HEAP $OFFSET
   2.230 -		[ $OFFSET -ge $HEAP ] && HEAP=$(($OFFSET+$SIZE))
   2.231 +		[ $OFFSET -gt $HEAP ] && [ $((OFFSET - HEAP)) -gt 16 ] &&
   2.232 +		printf "%d free bytes in %04X..%04X\n" $((OFFSET - HEAP)) $HEAP $OFFSET
   2.233 +		[ $OFFSET -ge $HEAP ] && HEAP=$((OFFSET+SIZE))
   2.234  		printf "$f at %04X ($SIZE bytes).\n" $OFFSET
   2.235  	done
   2.236  	trailer $ISO
   2.237 @@ -273,7 +283,7 @@
   2.238  			[ $n -eq 0 -o $n -gt 64 ] && continue
   2.239  			store $((0x1C0+16*i)) 1 $1 8
   2.240  			store $((0x1C6+16*i)) 0 $1 32
   2.241 -			store $((0x1CA+16*i)) $(($(get $((0x1CA+16*i)) $1 4)+$n)) $1 32
   2.242 +			store $((0x1CA+16*i)) $(($(get $((0x1CA+16*i)) $1 4)+n)) $1 32
   2.243  		done
   2.244  	fi
   2.245  }
   2.246 @@ -296,7 +306,7 @@
   2.247  clear_custom_config()
   2.248  {
   2.249  	start=$(custom_config_sector $1)
   2.250 -	cnt=$((512 - ($start % 512)))
   2.251 +	cnt=$((512 - (start % 512)))
   2.252  	[ $cnt -ne 512 ] &&
   2.253  	ddq if=/dev/zero of=$1 bs=2k seek=$start count=$cnt
   2.254  }
   2.255 @@ -328,7 +338,7 @@
   2.256  $(tar cf - ${@/init/rootfs.gz} | compress | uuencode -m -)
   2.257  EOT
   2.258  EOM
   2.259 -	sed -i 's|[ \t]*###.*||;/^case/,/^esac/d' $0.$$
   2.260 +	sed -i '/^##/d;s|[ \t]*###.*||;/^case/,/^esac/d' $0.$$
   2.261  	mv -f $0.$$ $0; exit ;;
   2.262  --get)
   2.263  	cat $2
   2.264 @@ -341,7 +351,7 @@
   2.265  	add_rootfs $DATA --array > /dev/null
   2.266  	add_fdbootstrap $DATA > /dev/null
   2.267  	name=${3:-bootiso}
   2.268 -	BOOTISOSZ=$((0x8000 - $OFS + $HSZ))
   2.269 +	BOOTISOSZ=$((0x8000 - OFS + HSZ))
   2.270  	cat <<EOT
   2.271  
   2.272  #define $(echo $name | tr '[a-z]' '[A-Z]')SZ $BOOTISOSZ
   2.273 @@ -406,14 +416,14 @@
   2.274  };
   2.275  #endif
   2.276  
   2.277 -#define C_array (uint32_t *) ($name + $(($BOOTISOSZ)))
   2.278 -#define P_array (char *)     ($name + $(($BOOTISOSZ+(64*4))))
   2.279 -#define S_array (char *)     ($name + $(($BOOTISOSZ+(64*4)+64)))
   2.280 +#define C_array (uint32_t *) ($name + $((BOOTISOSZ)))
   2.281 +#define P_array (char *)     ($name + $((BOOTISOSZ+(64*4))))
   2.282 +#define S_array (char *)     ($name + $((BOOTISOSZ+(64*4)+64)))
   2.283  #define ELTORITOOFS	3
   2.284  EOT
   2.285  			fi
   2.286 -			echo "#define $tag	$(($BOOTISOSZ+(64*4)+64+16+$ofs))"
   2.287 -			ofs=$(($(echo -en "$str\0" | wc -c)+$ofs))
   2.288 +			echo "#define $tag	$((BOOTISOSZ+(64*4)+64+16+ofs))"
   2.289 +			ofs=$(($(echo -en "$str\0" | wc -c)+ofs))
   2.290  		fi
   2.291  	done <<EOT
   2.292  READSECTORERR	Read sector failure.
   2.293 @@ -449,7 +459,7 @@
   2.294  done
   2.295  	cat <<EOT
   2.296  #ifdef __MSDOS__
   2.297 -#define BOOTISOFULLSIZE	$(($BOOTISOSZ+(64*4)+64+16+$ofs))
   2.298 +#define BOOTISOFULLSIZE	$((BOOTISOSZ+(64*4)+64+16+ofs))
   2.299  static char bootiso[BOOTISOFULLSIZE];
   2.300  static data_fixup(void)
   2.301  {
   2.302 @@ -491,8 +501,8 @@
   2.303  	# --exe mvcom.bin x.com y.exe > xy.exe
   2.304  	cat $4 $3 > /tmp/exe$$
   2.305  	S=$(stat -c %s /tmp/exe$$)
   2.306 -	store 2 $(($S%512)) /tmp/exe$$
   2.307 -	store 4 $((($S+511)/512)) /tmp/exe$$
   2.308 +	store 2 $((S%512)) /tmp/exe$$
   2.309 +	store 4 $(((S+511)/512)) /tmp/exe$$
   2.310  	store 14 -16 /tmp/exe$$
   2.311  	store 16 -2 /tmp/exe$$
   2.312  	store 20 256 /tmp/exe$$
   2.313 @@ -535,7 +545,7 @@
   2.314  	    case "$(get 0 $1)" in
   2.315  	    23117)
   2.316  		b=$(get 417 $1 1)
   2.317 -		n=$(($(get 64 $1) + 0xC0 - ($(get 26 $1 1)*512) - ($b+1)*512))
   2.318 +		n=$(($(get 64 $1) + 0xC0 - ($(get 26 $1 1)*512) - (b+1)*512))
   2.319  		ddq if=$1 bs=512 count=1 skip=$b of=/tmp/hymbr$$
   2.320  		restore_hybrid_mbr /tmp/hymbr$$ $1
   2.321  		ddn if=/tmp/hymbr$$ of=$1
   2.322 @@ -547,8 +557,8 @@
   2.323  			ddn if=/dev/zero bs=512 seek=3 count=1 of=$1
   2.324  		else
   2.325  			ddn if=/dev/zero bs=512 seek=1 count=1 of=$1
   2.326 -			ddn if=$1 bs=512 seek=2 count=30 skip=$(($b+1)) of=$1
   2.327 -			ddn if=/dev/zero bs=1 seek=$n count=$((0x8000 - $n)) of=$1
   2.328 +			ddn if=$1 bs=512 seek=2 count=30 skip=$((b+1)) of=$1
   2.329 +			ddn if=/dev/zero bs=1 seek=$n count=$((0x8000 - n)) of=$1
   2.330  		fi ;;
   2.331  	    *)  ddn if=/dev/zero bs=1k count=32 of=$1 ;;
   2.332  	    esac
   2.333 @@ -563,29 +573,21 @@
   2.334  	esac
   2.335  	case "$(get 0 $1)" in
   2.336  	23117)	echo "The file $1 is already an EXE file." 1>&2 && exit 1;;
   2.337 -	0)	[ -x /usr/bin/isohybrid ] && isohybrid -entry 2 $1;;
   2.338 +	0)	[ -x /usr/bin/isohybrid ] && isohybrid -entry 2 $1;;	### Add gpt EFI
   2.339  	esac
   2.340  
   2.341  	gpt= ; [ $(get 450 $1) -eq 65262 ] && gpt=1
   2.342 -	mac= ; [ $(get 2048 $1) -eq 19792 ] && mac=1
   2.343 -	echo "Read hybrid & tazlito data..."
   2.344 -	if [ -n "$gpt" ]; then
   2.345 -		echo "GUID Partition Table..."
   2.346 -		n=3; [ -n "$mac" ] && n=9 && echo "Apple Partition Table..."
   2.347 -		ddq if=$1 bs=512 count=$n of=/tmp/hybrid$$
   2.348 -		ddq if=$1 bs=512 skip=44 count=20 of=/tmp/tazlito$$
   2.349 -	else
   2.350 -		ddq if=$1 bs=512 count=1 of=/tmp/hybrid$$
   2.351 -		ddq if=$1 bs=512 skip=2 count=20 of=/tmp/tazlito$$
   2.352 -	fi
   2.353 -	add_win32exe $1 /tmp/hybrid$$
   2.354 +	echo "Read tazlito data..."
   2.355 +	n=2; [ -n "$gpt" ] && n=44 && echo "GUID Partition Table..."
   2.356 +	ddq if=$1 bs=512 skip=$n count=20 of=/tmp/tazlito$$
   2.357 +	add_win32exe $1
   2.358  	add_tazlito_info $1 /tmp/tazlito$$
   2.359 -	rm -f /tmp/tazlito$$ /tmp/hybrid$$
   2.360 +	rm -f /tmp/tazlito$$
   2.361  	
   2.362  	# keep the largest room for the tazlito info file
   2.363  	add_rootfs $1
   2.364  	add_fdbootstrap $1
   2.365 -	printf "%d free bytes in %04X..%04X\n" $(($OFS-$HOLE)) $HOLE $OFS
   2.366 +	printf "%d free bytes in %04X..%04X\n" $((OFS-HOLE)) $HOLE $OFS
   2.367  	store 440 $(date +%s) $1 32
   2.368  	[ "$2" ] && echo "$2               " | \
   2.369  		ddn bs=1 seek=$((0x7FDE)) count=15 of=$1
   2.370 @@ -607,20 +609,20 @@
   2.371  		echo "#!boot $(md5sum $DATA | sed 's/ .*//')" | cat - $DATA | \
   2.372  		ddq bs=2k seek=$(custom_config_sector $1) of=$1
   2.373  		newsz=$(stat -c %s $1)
   2.374 -		mb=$(((($newsz -1)/1048576)+1))
   2.375 -		HEAP=$(($mb*1048576))
   2.376 +		mb=$((((newsz -1)/1048576)+1))
   2.377 +		HEAP=$((mb*1048576))
   2.378  		ddq bs=1048576 seek=$mb count=0 of=$1
   2.379  		h=$(get 417 "$1" 1)
   2.380  		[ -z "$RECURSIVE_PARTITION" ] || h=0
   2.381  		for i in 0 1 2 3 ; do
   2.382  			[ $(get $((0x1BE+16*i)) $1 2) = $((0x0080)) ] || continue
   2.383 -			store $((0x1CA+16*i)) $(($mb*2048-$h)) $1 32
   2.384 -			store $((0x1C5+16*i)) $(($mb-1)) $1 8
   2.385 +			store $((0x1CA+16*i)) $((mb*2048-h)) $1 32
   2.386 +			store $((0x1C5+16*i)) $((mb-1)) $1 8
   2.387  		done
   2.388  		if [ $newsz -gt $isosz ]; then
   2.389 -			echo "$(($newsz - $isosz)) extra bytes."
   2.390 +			echo "$((newsz - isosz)) extra bytes."
   2.391  		else
   2.392 -			echo "$(($isosz - 2048*$(get 32848 $1 4)
   2.393 +			echo "$((isosz - 2048*$(get 32848 $1 4)
   2.394  				 - $(stat -c %s $DATA) - 24)) bytes free."
   2.395  		fi
   2.396  		rm -f $DATA > /dev/null
   2.397 @@ -630,8 +632,8 @@
   2.398  		n=$(($(get 2 $1) - 1 + ($(get 4 $1) - 1)*512))
   2.399  		n=$(($(od -v -N $n -t u2 -w2 -An $1 | \
   2.400  		       awk '{ i+= $0 } END { print (i % 65536) }') \
   2.401 -		     + $(get $(($n+1)) $1 1)))
   2.402 -		store 18 $(( (-$n -1) % 65536 )) $1
   2.403 +		     + $(get $((n+1)) $1 1)))
   2.404 +		store 18 $(( (-n -1) % 65536 )) $1
   2.405  	fi
   2.406  	echo " done."
   2.407  	trailer $1
     3.1 --- a/syslinux/stuff/iso2exe/taziso	Thu Dec 30 18:02:41 2021 +0000
     3.2 +++ b/syslinux/stuff/iso2exe/taziso	Thu Dec 30 19:33:58 2021 +0000
     3.3 @@ -22,22 +22,22 @@
     3.4  bytes2bin()
     3.5  {
     3.6  	for i in $@ ; do
     3.7 -		printf '\\\\x%02X' $(($i&255))
     3.8 +		printf '\\\\x%02X' $((i&255))
     3.9  	done | xargs echo -en
    3.10  }
    3.11  
    3.12  words2bin()
    3.13  {
    3.14  	for i in $@ ; do
    3.15 -		printf '\\\\x%02X\\\\x%02X' $(($i&255)) $((($i>>8)&255))
    3.16 +		printf '\\\\x%02X\\\\x%02X' $((i&255)) $(((i>>8)&255))
    3.17  	done | xargs echo -en
    3.18  }
    3.19  
    3.20  quads2bin()
    3.21  {
    3.22  	for i in $@ ; do
    3.23 -		printf '\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X' $(($i&255)) \
    3.24 -			$((($i>>8)&255)) $((($i>>16)&255)) $((($i>>24)&255))
    3.25 +		printf '\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X' $((i&255)) \
    3.26 +			$(((i>>8)&255)) $(((i>>16)&255)) $(((i>>24)&255))
    3.27  	done | xargs echo -en
    3.28  }
    3.29  
    3.30 @@ -46,9 +46,9 @@
    3.31  	echo -e "\nCreating $(basename $1) ..."
    3.32  	gotcdfile linld.com
    3.33  	S=$(($(stat -c %s $file)+12))
    3.34 -	P=$((($S+511)/512))
    3.35 -	E=$((4096-(32*$P)))
    3.36 -	words2bin 0x5A4D $(($S%512)) $P 0 2 $E -1 -16 \
    3.37 +	P=$(((S+511)/512))
    3.38 +	E=$((4096-(32*P)))
    3.39 +	words2bin 0x5A4D $((S%512)) $P 0 2 $E -1 -16 \
    3.40  			-2 0 256 -16 28 0x6C53 0x5469 0x7A61 > $1
    3.41  	dd if=$file bs=1 count=$(($(stat -c %s $file)-1)) >> $1 2> /dev/null
    3.42  	echo -en '@tazboot.cmd\0' >> $1
    3.43 @@ -108,7 +108,7 @@
    3.44  tazusbinitfs()
    3.45  {
    3.46  	PAD=$(($(size $1) % 4))
    3.47 -	[ $PAD -ne 0 ] && ddq if=/dev/zero bs=1 count=$((4 - $PAD)) >> $1
    3.48 +	[ $PAD -ne 0 ] && ddq if=/dev/zero bs=1 count=$((4 - PAD)) >> $1
    3.49  	mkdir -p /tmp/fs$$/etc /tmp/fs$$/lib /tmp/fs$$/home
    3.50  	cp -a /etc/locale.conf /etc/locale.conf /tmp/fs$$/etc 2> /dev/null
    3.51  	cat > /tmp/fs$$/init1 <<EOT
    3.52 @@ -771,18 +771,18 @@
    3.53  	R=$((1 + $(get 497 $1 1) + 1 + ($(get 500 $1)-1)/32))
    3.54  	[ $R -lt 2500 ] || return
    3.55  	[ $((($(get 500 $1)-1) & 31)) -lt 30 ] &&
    3.56 -	ddq if=$file bs=32 count=1 seek=$(($R*16 - 1)) of=/dev/fd0
    3.57 +	ddq if=$file bs=32 count=1 seek=$((R*16 - 1)) of=/dev/fd0
    3.58  	G="18 0 2 0 0 0 0 0"
    3.59  	[ $J -gt 25 ] || G=""
    3.60  	F=0
    3.61  	for i in 1 2 3; do
    3.62 -		F=$((((2880-$R-$F-$F)*3+1023)/1024))
    3.63 +		F=$((((2880-R-F-F)*3+1023)/1024))
    3.64  	done
    3.65  	bytes2bin 0xEB $J 0x90 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 \
    3.66 -		0 2 2 $(($R%256)) $(($R/256)) 2 64 0 64 11 0xF0 $F 0 \
    3.67 +		0 2 2 $((R%256)) $((R/256)) 2 64 0 64 11 0xF0 $F 0 \
    3.68  		$G | ddq bs=1 of=/dev/fd0
    3.69 -	ddq if=/dev/zero bs=512 count=$((4+$F+$F)) seek=$R of=/dev/fd0
    3.70 -	for i in $R $(($R+$F)) ; do
    3.71 +	ddq if=/dev/zero bs=512 count=$((4+F+F)) seek=$R of=/dev/fd0
    3.72 +	for i in $R $((R+F)) ; do
    3.73  		bytes2bin 0xF0 0xFF 0xFF | ddq bs=512 seek=$i of=/dev/fd0
    3.74  	done
    3.75  	echo -n $(basename $1) | ddq bs=1 seek=3 count=8 of=/dev/fd0
    3.76 @@ -963,9 +963,9 @@
    3.77  	[ $(get 510 "$ISO") -eq 43605 ] || return
    3.78  	C=$((2048*$(get $(((17*2048) + 71)) "$ISO" 4)))
    3.79  	[ $(get $C "$ISO" 4) -eq 1 ] || return
    3.80 -	[ $(get $(($C+30)) "$ISO" 4) -eq $((0x88AA55)) ] || return
    3.81 -	C=$((2048*$(get $(($C+40)) "$ISO" 4)))
    3.82 -	[ $(get $(($C+64)) "$ISO" 4) -eq 1886961915 ] && menuitem "$@"
    3.83 +	[ $(get $((C+30)) "$ISO" 4) -eq $((0x88AA55)) ] || return
    3.84 +	C=$((2048*$(get $((C+40)) "$ISO" 4)))
    3.85 +	[ $(get $((C+64)) "$ISO" 4) -eq 1886961915 ] && menuitem "$@"
    3.86  }
    3.87  
    3.88  isiso()
    3.89 @@ -999,7 +999,7 @@
    3.90  customsector()
    3.91  {
    3.92  	local c=$(echo $(get 32848 "$ISO" 4))
    3.93 -	hascustomconf $(($c+16)) && echo $(($c+16)) || echo $c
    3.94 +	hascustomconf $((c+16)) && echo $((c+16)) || echo $c
    3.95  }
    3.96  
    3.97  xhascustomconf=hascustomconf
    3.98 @@ -1039,8 +1039,8 @@
    3.99  		\#!boot*) ;;
   3.100  		append=*) echo ${line#append=} > cmdline && ls -l $PWD/cmdline ;;
   3.101  		initrd:*) cnt=${line#initrd:}
   3.102 -			  { ddq bs=512 count=$(($cnt / 512));
   3.103 -			    ddq bs=1 count=$(($cnt % 512)); } > initrd &&
   3.104 +			  { ddq bs=512 count=$((cnt / 512));
   3.105 +			    ddq bs=1 count=$((cnt % 512)); } > initrd &&
   3.106  			  ls -l $PWD/initrd
   3.107  			  break ;;
   3.108  		*)	  break ;;
   3.109 @@ -1086,7 +1086,7 @@
   3.110  	n=$(($(get 2 "$ISO")-1+($(get 4 "$ISO")-1)*512))
   3.111  	if [ $n -lt 40000 -a $n -gt 32768 ]; then
   3.112  		s=$(get 0 "$ISO" 2 $n | awk '{ i+= $0 } END { print i }')
   3.113 -		[ $(((1+$s+$(get $(($n+1)) "$ISO" 1)) % 65536)) -eq 0 ] &&
   3.114 +		[ $(((1+s+$(get $((n+1)) "$ISO" 1)) % 65536)) -eq 0 ] &&
   3.115  		echo "OK" || echo "ERROR"
   3.116  	fi
   3.117  	if hascustomconf; then
   3.118 @@ -1215,11 +1215,11 @@
   3.119  	dd if=$device bs=1 skip=$(($1)) count=$(($2)) 2> /dev/null | \
   3.120  	od -v -w1 -t u1 -An | {
   3.121  		while read n; do
   3.122 -			local x=$((($crc ^ $n) & 255))
   3.123 +			local x=$(((crc ^ n) & 255))
   3.124  			eval x=0x\$t$x
   3.125 -			crc=$(((($crc >> 8) & 0x00FFFFFF) ^ $x))
   3.126 +			crc=$((((crc >> 8) & 0x00FFFFFF) ^ x))
   3.127  		done
   3.128 -		echo $(($crc ^ 0xFFFFFFFF))
   3.129 +		echo $((crc ^ 0xFFFFFFFF))
   3.130  	}
   3.131  }
   3.132  
   3.133 @@ -1245,8 +1245,8 @@
   3.134  	max=$(($(sectcnt "$ISO")/2048))
   3.135  	i=0; while [ $i -le $max ]; do
   3.136  		ddq if="$ISO" bs=1024k count=1 skip=$i seek=$i of=$device
   3.137 -		echo $((($i*100)/$max))
   3.138 -		i=$(($i+1))
   3.139 +		echo $(((i*100)/max))
   3.140 +		i=$((i+1))
   3.141  	done | { [ "$1" ] || dialog --gauge \
   3.142  		" The ISO image transfer can be long. Please wait..." \
   3.143  		6 70 0 > /dev/tty 2>&1; }
   3.144 @@ -1255,7 +1255,7 @@
   3.145  	sectors=$(($(sectcnt $device)-1))
   3.146  	quads2bin $sectors | ddq bs=1 seek=458 of=$device	# pmbr
   3.147  	quads2bin 0 | ddq bs=1 seek=$((512+16)) of=$device
   3.148 -	quads2bin $(($sectors-2)) 0 | ddq bs=1 seek=$((512+48)) of=$device
   3.149 +	quads2bin $((sectors-2)) 0 | ddq bs=1 seek=$((512+48)) of=$device
   3.150  	uudecode - <<EOT | gunzip | ddn bs=128 seek=9 of=$device	# partiton fat32
   3.151  begin-base64 644 -
   3.152  H4sIAAAAAAACA1u04MLrpzuNXdoPZGzbrjbz+C/fHwyfEro9Z7E93Fi5/8sH
   3.153 @@ -1264,19 +1264,19 @@
   3.154  EOT
   3.155  	last=$(sectcnt "$ISO")
   3.156  	custom=$((4*$(get 32848 $device 4)))
   3.157 -	[ $custom -gt $(($last-4)) ] && last=$(($custom+4))		# room for cmdline
   3.158 +	[ $custom -gt $((last-4)) ] && last=$((custom+4))		# room for cmdline
   3.159  	quads2bin $last 0 | ddq bs=1 seek=$((1024+128+32)) of=$device	# vfat first address
   3.160 -	quads2bin $(($sectors-2)) 0 | ddq bs=1 seek=$((1024+128+40)) of=$device	# vfat last address
   3.161 +	quads2bin $((sectors-2)) 0 | ddq bs=1 seek=$((1024+128+40)) of=$device	# vfat last address
   3.162  	quads2bin $(gpt_crc32 1024 $(($(get 596 $device 4)*$(get 592 $device 4)))) | \
   3.163  		ddq bs=1 seek=$((512+88)) of=$device			# CRC32 partitions
   3.164  	ddn of=$device if=$device bs=512 skip=1 seek=$sectors count=1
   3.165 -	ddn of=$device if=$device bs=512 skip=2 seek=$(($sectors-1)) count=1
   3.166 -	quads2bin $sectors 0 1 0 | ddq bs=1 seek=$(($sectors*512+24)) of=$device	# my gpt, alt gpt
   3.167 +	ddn of=$device if=$device bs=512 skip=2 seek=$((sectors-1)) count=1
   3.168 +	quads2bin $sectors 0 1 0 | ddq bs=1 seek=$((sectors*512+24)) of=$device	# my gpt, alt gpt
   3.169  	quads2bin 1 0 $sectors 0 | ddq bs=1 seek=$((512+24)) of=$device	# my gpt, alt gpt
   3.170 -	quads2bin $(($sectors-1)) 0 | ddq bs=1 seek=$(($sectors*512+72)) of=$device
   3.171 +	quads2bin $((sectors-1)) 0 | ddq bs=1 seek=$((sectors*512+72)) of=$device
   3.172  	i=$(get 524 $device 4)
   3.173 -	quads2bin $(gpt_crc32 $(($sectors*512)) $i) | \
   3.174 -		ddq bs=1 seek=$(($sectors*512+16)) of=$device	# CRC32 header
   3.175 +	quads2bin $(gpt_crc32 $((sectors*512)) $i) | \
   3.176 +		ddq bs=1 seek=$((sectors*512+16)) of=$device	# CRC32 header
   3.177  	quads2bin $(gpt_crc32 512 $i) | ddq bs=1 seek=$((512+16)) of=$device	# CRC32 header
   3.178  	partprobe $device
   3.179  	homedev=/dev/$(basename /sys/block/${device#/dev/}/${device#/dev/}*2)
   3.180 @@ -1287,8 +1287,8 @@
   3.181  	i=$(($(get 2 $device) - 1 + ($(get 4 $device) - 1)*512))
   3.182  	i=$(($(od -v -N $i -t u2 -w2 -An $device | \
   3.183  		awk '{ i+= $0 } END { print (i % 65536) }') \
   3.184 -		+ $(get $(($i+1)) $device 1)))
   3.185 -	words2bin $(( (-$i -1) % 65536 )) | ddq bs=1 seek=18 of=$device
   3.186 +		+ $(get $((i+1)) $device 1)))
   3.187 +	words2bin $(( (-i -1) % 65536 )) | ddq bs=1 seek=18 of=$device
   3.188  
   3.189  	[ "$1" ] || $DIALOG --clear --title " Set /home persistent " \
   3.190  			--yes-label "Continue" --yesno \
   3.191 @@ -1343,7 +1343,7 @@
   3.192  {
   3.193  	[ $(get 1024 "$ISO") -eq 35615 ] && n=2 || n=$((1+$(get 417 "$ISO" 1)))
   3.194  	[ $n -eq 4 ] && n=20
   3.195 -	[ $(get $(($n*512)) "$ISO") -eq 35615 ] || n=13
   3.196 +	[ $(get $((n*512)) "$ISO") -eq 35615 ] || n=13
   3.197  	ddq if="$ISO" bs=512 skip=$n count=20 | zcat 2>/dev/null
   3.198  }
   3.199  
   3.200 @@ -1466,7 +1466,7 @@
   3.201  	uudecode <<EOT | ddn of=/tmp/fd$$
   3.202  bootloader
   3.203  EOT
   3.204 -	pos=$(($n*512))
   3.205 +	pos=$((n*512))
   3.206  	if [ -n "$CMDLINE" ]; then
   3.207  		echo -n "$CMDLINE" | ddq bs=512 count=1 conv=sync >> /tmp/fd$$
   3.208  		bytes2bin $n | ddn bs=1 seek=497 of=/tmp/fd$$
   3.209 @@ -1476,7 +1476,7 @@
   3.210  	fi
   3.211  	syssize=$(echo $(get 500 /tmp/fd$$ 4))
   3.212  	ddq bs=512 skip=$n if=$KERNEL | cat - /dev/zero | \
   3.213 -	ddq bs=512 count=$((($syssize+31)/32)) conv=sync >> /tmp/fd$$
   3.214 +	ddq bs=512 count=$(((syssize+31)/32)) conv=sync >> /tmp/fd$$
   3.215  	base=$(size /tmp/fd$$)
   3.216  	len=
   3.217  	if [ "$INITRD" ]; then
   3.218 @@ -1488,54 +1488,54 @@
   3.219  				[ -n "$j" ] && i=$j && break
   3.220  			done
   3.221  			ddq if=$i >> /tmp/fd$$
   3.222 -			l=$(($l+$(size $i)))
   3.223 -			r=$((4 - ($l % 4)))
   3.224 +			l=$((l+$(size $i)))
   3.225 +			r=$((4 - (l % 4)))
   3.226  			if [ $r -ne 4 ]; then
   3.227  				ddq if=/dev/zero bs=1 count=$r >> /tmp/fd$$
   3.228 -				l=$(($l + $r))
   3.229 +				l=$((l + r))
   3.230  			fi
   3.231  			case "$i:$INITRD" in
   3.232  				*rootfs.gz:*rootfs.gz,*) continue	# loram
   3.233  			esac
   3.234  			len="$len $l"; l=0
   3.235  		done
   3.236 -		rdadrs=${RDADRS:-$(((($syssize*16)+0x1F0000) & -4096))}
   3.237 +		rdadrs=${RDADRS:-$((((syssize*16)+0x1F0000) & -4096))}
   3.238  		quads2bin $rdadrs | ddn bs=1 seek=536 of=/tmp/fd$$
   3.239  	fi
   3.240  	n=$(echo $len | wc -w)
   3.241 -	if [ $((494 - $(get 494 /tmp/fd$$))) -ge $(($n * 4)) ]; then
   3.242 +	if [ $((494 - $(get 494 /tmp/fd$$))) -ge $((n * 4)) ]; then
   3.243  		i=$(($(get 494 /tmp/fd$$)))
   3.244 -		bytes2bin $(($i + ($n*4) - 256)) | ddn bs=1 \
   3.245 +		bytes2bin $((i + (n*4) - 256)) | ddn bs=1 \
   3.246  			seek=496 of=/tmp/fd$$
   3.247  	else
   3.248 -		i=$(($pos + 0x1FC - ($n*4)))
   3.249 -		bytes2bin $(($i % 256)) $((i / 256)) 252 | ddn bs=1 \
   3.250 +		i=$((pos + 0x1FC - (n*4)))
   3.251 +		bytes2bin $((i % 256)) $((i / 256)) 252 | ddn bs=1 \
   3.252  			seek=494 of=/tmp/fd$$
   3.253 -		s=$(($i - 2*$(echo "$SIZES" | wc -w)))
   3.254 -		p=$(($s - $(ifmemcode | wc -c)))
   3.255 +		s=$((i - 2*$(echo "$SIZES" | wc -w)))
   3.256 +		p=$((s - $(ifmemcode | wc -c)))
   3.257  		ifmemcode | ddn bs=1 seek=$p of=/tmp/fd$$
   3.258  		words2bin $SIZES | ddn bs=1 seek=$s of=/tmp/fd$$
   3.259 -		bytes2bin 154 $(($p%256)) $(($p/256)) 0 144 | \
   3.260 +		bytes2bin 154 $((p%256)) $((p/256)) 0 144 | \
   3.261  		ddn bs=1 seek=60 of=/tmp/fd$$
   3.262  	fi
   3.263  	for r in $len ; do
   3.264  		quads2bin $r | ddn bs=1 seek=$i of=/tmp/fd$$
   3.265 -		i=$(($i + 4))
   3.266 +		i=$((i + 4))
   3.267  	done
   3.268  	split -b 1440k /tmp/fd$$ fd$$
   3.269  	rm -f /tmp/fd$$
   3.270  	n=1; i=0; r=0
   3.271  	set -- $len
   3.272  	ls fd$$* | while read file ; do
   3.273 -		if [ $i -ge $(($1+$base)) ]; then
   3.274 -			base=$(($1+$base-$i))
   3.275 +		if [ $i -ge $(($1+base)) ]; then
   3.276 +			base=$(($1+base-i))
   3.277  			shift
   3.278 -			r=$(($r+100)); n=0; i=0
   3.279 +			r=$((r+100)); n=0; i=0
   3.280  		fi
   3.281  		ddq of=$file bs=18k seek=80 count=0
   3.282 -		i=$(($i+1474560))
   3.283 -		printf "mv %s fd%03d.img\n" $file $(($r+$n))
   3.284 -		n=$(($n+1))
   3.285 +		i=$((i+1474560))
   3.286 +		printf "mv %s fd%03d.img\n" $file $((r+n))
   3.287 +		n=$((n+1))
   3.288  	done | sh
   3.289  	du -ch $PWD/fd???.img
   3.290  }