wok annotate plop/stuff/pack @ rev 25037

Up glza (0.11.4)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat May 21 21:38:29 2022 +0000 (2022-05-21)
parents c4968381aed9
children 7f7bd3c9775e
rev   line source
pascal@23919 1 #!/bin/sh
pascal@23919 2 if [ "$1" == "--build" ]; then
pascal@23919 3 set -- ${2:-bootloader.bin} ${3:-unpack.bin}
pascal@23919 4 x=$(grep -s packed_syssize$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 5 [ -n "$x" ] && sed -i "s/XXXP/$((513+0x$x))/" $0 || sed -i "/XXXP$/d" $0
pascal@23919 6 x=$(grep -s setup_byte$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 7 [ -n "$x" ] && sed -i "s/XXXSB/$((513+0x$x))/" $0 || sed -i "/XXXSB/d" $0
pascal@23919 8 x=$(grep -s setup_word$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 9 [ -n "$x" ] && sed -i "s/XXXSW/$((514+0x$x))/" $0 || sed -i "/XXXSW/d" $0
pascal@23919 10 x=$(grep -s setup_para$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 11 [ -n "$x" ] && sed -i "s/XXXSP/$((514+0x$x))/" $0 || sed -i "/XXXSP/d" $0
pascal@23919 12 x=$(grep -s setup_seg$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 13 [ -n "$x" ] && sed -i "s/XXXSS/$((513+0x$x))/" $0 || sed -i "/XXXSS/d" $0
pascal@23919 14 x=$(grep -s setup_keep$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 15 [ -n "$x" ] && sed -i "s/XXXK1/1/" $0 || sed -i "/XXXK1/d" $0
pascal@23919 16 [ -n "$x" ] && sed -i "s/skip=XXXK2 //" $0 || sed -i "s/XXXK2/1/" $0
pascal@23919 17 [ -n "$x" ] && sed -i "s/+XXXK3//" $0 || sed -i "s/XXXK3/1/" $0
pascal@23919 18 grep -q BFF401 ${2/.bin/.lst} && sed -i 's/512 skip/500 skip/;s/1000 -/&32 - /' $0
pascal@23919 19 grep -q 83C60D ${2/.bin/.lst} && sed -i 's/ | dd bs=1 skip=13//' $0
pascal@23919 20 helpmsg=$(grep -s helpmsg$ ${1/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 21 helpend=$(grep -s helpend$ ${1/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@23919 22 if [ -n "$helpmsg" ]; then
pascal@23919 23 sed -i "s/YYY/$((0x$helpmsg))/" $0
pascal@23919 24 sed -i "s/ZZZ/$((0x$helpend-0x$helpmsg))/" $0
pascal@23919 25 else
pascal@23919 26 sed -i '/YYY/d' $0
pascal@23919 27 fi
pascal@23919 28 cat >> $0 <<EOM
pascal@23919 29 $(dd if=$1 bs=512 count=1 conv=sync 2> /dev/null | cat - $2 | gzip -9 | uuencode -m -)
pascal@23919 30 EOT
pascal@23919 31 EOM
pascal@23919 32 sed -i '/--build/,/^fi/d' $0
pascal@23919 33 exit
pascal@23919 34 fi
pascal@23919 35
pascal@23919 36 store()
pascal@23919 37 {
pascal@23919 38 n=$1
pascal@23919 39 for i in $(seq 1 ${4:-2}); do
pascal@23919 40 printf '\\\\x%02X' $(($n & 255))
pascal@23919 41 n=$(($n >> 8))
pascal@23919 42 done | xargs echo -en | dd conv=notrunc bs=1 of=$2 seek=$3
pascal@23919 43 }
pascal@23919 44
pascal@24045 45 bits()
pascal@24045 46 {
pascal@24045 47 sed "/^#define PROP_$1/!d;s|.*PROP_...||" unlzma.S
pascal@24045 48 }
pascal@24045 49
pascal@23919 50 compress()
pascal@23919 51 {
pascal@24046 52 xz -z -e --format=raw --lzma1=lc=$(bits LC),lp=$(bits LP),pb=$(bits PB) --stdout
pascal@23919 53 }
pascal@23919 54
pascal@23919 55 main()
pascal@23919 56 {
pascal@23919 57 uudecode | gunzip >$2
pascal@23919 58 dd if=$1 bs=1 skip=497 seek=497 count=15 of=$2 conv=notrunc
pascal@23919 59 setup="$(echo $(od -j 497 -N 1 -dAn $1))"
pascal@23919 60 [ $setup -eq 0 ] && setup=4
pascal@23919 61 setup=$(($setup+XXXK1))
pascal@23919 62 store $setup $2 XXXSB 1
pascal@23919 63 store $setup $2 XXXSW 1
pascal@23919 64 store $((32 * $setup)) $2 XXXSP
pascal@23919 65 store $((0x1000 - 32*$setup)) $2 XXXSS
pascal@23919 66 dd if=$1 bs=512 skip=XXXK2 | compress >>$2
pascal@23919 67 size=$(stat -c %s $2)
pascal@23919 68 syssize=$((($size-512*($setup+XXXK3)+15)/16))
pascal@23919 69 store $(($syssize + 0x1000)) $2 XXXP
pascal@23919 70 store $syssize $2 500
pascal@23919 71 store 4 $2 497 1
pascal@23919 72 store $((($size+511)/512)) $2 4
pascal@23919 73 store $((($size+15)/16)) $2 14
pascal@23919 74 echo -e "$3" | dd conv=notrunc bs=1 seek=YYY of=$2 count=ZZZ
pascal@23919 75 }
pascal@23919 76
pascal@23919 77 HELP="$(unix2dos <<EOT
pascal@23919 78 Plop Boot Manager VERSION
pascal@23919 79 EOT
pascal@23919 80 )"
pascal@23919 81 main $1 ${2:-$1.packed} "${3:-$HELP}" 2>/dev/null <<EOT