wok diff memtest64/stuff/pack @ rev 25514
Add memtest64
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Thu Feb 16 14:18:05 2023 +0000 (16 months ago) |
parents | |
children | cb71c3a76f5a |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/memtest64/stuff/pack Thu Feb 16 14:18:05 2023 +0000 1.3 @@ -0,0 +1,101 @@ 1.4 +#!/bin/sh 1.5 +if [ "$1" == "--build" ]; then 1.6 + set -- ${2:-bootloader.bin} ${3:-unpack.bin} 1.7 + x=$(grep -s packed_syssize$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.8 + [ -n "$x" ] && sed -i "s/XXXP/$((513+0x$x))/" $0 || sed -i "/XXXP$/d" $0 1.9 + x=$(grep -s setup_byte$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.10 + [ -n "$x" ] && sed -i "s/XXXSB/$((513+0x$x))/" $0 || sed -i "/XXXSB/d" $0 1.11 + x=$(grep -s setup_word$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.12 + [ -n "$x" ] && sed -i "s/XXXSW/$((514+0x$x))/" $0 || sed -i "/XXXSW/d" $0 1.13 + x=$(grep -s setup_para$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.14 + [ -n "$x" ] && sed -i "s/XXXSP/$((514+0x$x))/" $0 || sed -i "/XXXSP/d" $0 1.15 + x=$(grep -s setup_seg$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.16 + [ -n "$x" ] && sed -i "s/XXXSS/$((513+0x$x))/" $0 || sed -i "/XXXSS/d" $0 1.17 + x=$(grep -s setup_keep$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.18 + if [ -n "$x" ]; then 1.19 + sed -i "s/XXXK2 //" $0 1.20 + else 1.21 + x=$(grep -s setup_syssize$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.22 + if [ -n "$x" ]; then 1.23 + sed -i "s/XXXK2/bs=500 skip=1/" $0 1.24 + else 1.25 + sed -i "s/XXXK2/bs=512 skip=1/" $0 1.26 + fi 1.27 + fi 1.28 + x=$(grep -s double_packed$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.29 + [ -n "$x" ] && sed -i "s/| compress /&& 2 /" $0 1.30 + x=$(grep -s update_code32_start$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.31 + [ -n "$x" ] && sed -i '/XXXU2/d; s| XXXU1||' $0 || sed -i '/XXXU1/d; s| XXXU2||' $0 1.32 + x=$(grep -s lzsa.block$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.33 + [ -n "$x" ] && sed -i 's| XXXR||' $0 || sed -i 's| XXXR| -r|;s|tail -c +4|cat|' $0 1.34 + helpmsg=$(grep -s helpmsg$ ${1/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.35 + helpend=$(grep -s helpend$ ${1/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/') 1.36 + if [ -n "$helpmsg" ]; then 1.37 + sed -i "s/YYY/$((0x$helpmsg))/" $0 1.38 + sed -i "s/ZZZ/$((0x$helpend-0x$helpmsg))/" $0 1.39 + else 1.40 + sed -i '/YYY/d' $0 1.41 + fi 1.42 + cat >> $0 <<EOM 1.43 +$(dd if=$1 bs=512 count=1 conv=sync 2> /dev/null | cat - $2 | gzip -9 | uuencode -m -) 1.44 +EOT 1.45 +EOM 1.46 + sed -i '/--build/,/^fi/d' $0 1.47 + exit 1.48 +fi 1.49 + 1.50 +store() 1.51 +{ 1.52 + n=$1 1.53 + for i in $(seq 1 ${4:-2}); do 1.54 + printf '\\\\x%02X' $(($n & 255)) 1.55 + n=$(($n >> 8)) 1.56 + done | xargs echo -en | dd conv=notrunc bs=1 of=$2 seek=$3 1.57 +} 1.58 + 1.59 +bits() 1.60 +{ 1.61 + sed "/^#define PROP_$1/!d;s|.*PROP_...||" unlzma.S 1.62 +} 1.63 + 1.64 +compress() 1.65 +{ 1.66 + case "$PACKER" in 1.67 + lz4) lz4 -l --best | tail -c +5 ;; 1.68 + lzsa1) cat > /tmp/in$$$1 ; lzsa XXXR -f1 /tmp/in$$$1 /tmp/out$$$1 ; tail -c +4 /tmp/out$$$1 ; rm -f /tmp/in$$$1 /tmp/out$$$1 ;; 1.69 + lzsa2) cat > /tmp/in$$$1 ; lzsa XXXR -f2 /tmp/in$$$1 /tmp/out$$$1 ; tail -c +4 /tmp/out$$$1 ; rm -f /tmp/in$$$1 /tmp/out$$$1 ;; 1.70 + *) xz -z -e --format=raw --lzma1=lc=$(bits LC),lp=$(bits LP),pb=$(bits PB) --stdout 1.71 + esac 1.72 +} 1.73 + 1.74 +main() 1.75 +{ 1.76 + uudecode | gunzip >$2 1.77 + dd if=$1 bs=1 skip=497 seek=497 count=15 of=$2 conv=notrunc 1.78 + setup="$(echo $(od -j 497 -N 1 -dAn $1))" 1.79 + [ $setup -eq 0 ] && setup=4 1.80 + store $setup $2 497 1 1.81 + setup=$((setup+1)) 1.82 + store $setup $2 XXXSB 1 1.83 + store $setup $2 XXXSW 1 1.84 + store $((32*setup+0xF000)) $2 XXXSP 1.85 + store $((0x1000 - 32*setup)) $2 XXXSS 1.86 + cp $1 /tmp/un$$ XXXU1 1.87 + store 1 /tmp/un$$ 534 1 XXXU1 1.88 + dd if=/tmp/un$$ XXXK2 | compress >>$2 XXXU1 1.89 + rm -f /tmp/un$$ XXXU1 1.90 + dd if=$1 XXXK2 | compress >>$2 XXXU2 1.91 + size=$(stat -c %s $2) 1.92 + syssize=$(((size-512*setup+15)/16)) 1.93 + store $((syssize + 0x1000 + 0x1000)) $2 XXXP 1.94 + store $syssize $2 500 1.95 + store $(((size+511)/512)) $2 4 1.96 + store $(((size+15)/16)) $2 14 1.97 + echo -e "$3" | dd conv=notrunc bs=1 seek=YYY of=$2 count=ZZZ 1.98 +} 1.99 + 1.100 +HELP="$(unix2dos <<EOT 1.101 +Memtest86+ VERSION GPLv2 1.102 +EOT 1.103 +)" 1.104 +main $1 ${2:-$1.packed} "${3:-$HELP}" 2>/dev/null <<EOT