wok annotate memtest/stuff/pack @ rev 19404

Up openssh (7.3p1)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Sep 09 12:06:28 2016 +0200 (2016-09-09)
parents fd3dadf90ba9
children e4d1fb5556df
rev   line source
pascal@13269 1 #!/bin/sh
pascal@13269 2 if [ "$1" == "--build" ]; then
pascal@15188 3 set -- ${2:-bootloader.bin} ${3:-unpack.bin}
pascal@19391 4 x=$(grep -s packed_syssize$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@19391 5 [ -n "$x" ] && sed -i "s/XXXP/$((513+0x$x))/" $0 || sed -i "/XXXP$/d" $0
pascal@19404 6 x=$(grep -s setup_byte$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@19404 7 [ -n "$x" ] && sed -i "s/XXXSB/$((513+0x$x))/" $0 || sed -i "/XXXSB/d" $0
pascal@19404 8 x=$(grep -s setup_word$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@19404 9 [ -n "$x" ] && sed -i "s/XXXSW/$((514+0x$x))/" $0 || sed -i "/XXXSW/d" $0
pascal@19404 10 x=$(grep -s setup_para$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@19404 11 [ -n "$x" ] && sed -i "s/XXXSP/$((514+0x$x))/" $0 || sed -i "/XXXSP/d" $0
pascal@19404 12 x=$(grep -s setup_seg$ ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@19404 13 [ -n "$x" ] && sed -i "s/XXXSS/$((513+0x$x))/" $0 || sed -i "/XXXSS/d" $0
pascal@19404 14 grep -q BFF401 ${2/.bin/.lst} && sed -i 's/512 skip/500 skip/;s/1000 -/&32 - /' $0
pascal@19404 15 grep -q 83C60D ${2/.bin/.lst} && sed -i 's/ | dd bs=1 skip=13//' $0
pascal@15188 16 helpmsg=$(sed '/helpmsg:/!d{n;s/ [0-9]* \([^ ]*\).*/\1/}' ${1/.bin/.lst} | sed '$!d')
pascal@17223 17 helpend=$(sed '/helpend:/!d{n;s/ [0-9]* \([^ ]*\).*/\1/}' ${1/.bin/.lst} | sed '$!d')
pascal@15188 18 sed -i "s/YYY/$((0x$helpmsg))/" $0
pascal@19196 19 sed -i "s/ZZZ/$((0x$helpend-0x$helpmsg-1))/" $0
pascal@17223 20 cat >> $0 <<EOM
pascal@19404 21 $(dd if=$1 bs=512 count=1 conv=sync 2> /dev/null | cat - $2 | gzip -9 | uuencode -m -)
pascal@17223 22 EOT
pascal@17223 23 EOM
pascal@13269 24 sed -i '/--build/,/^fi/d' $0
pascal@13269 25 exit
pascal@13269 26 fi
pascal@13269 27
pascal@13269 28 store()
pascal@13269 29 {
pascal@13269 30 n=$1
pascal@15188 31 for i in $(seq 1 ${4:-2}); do
pascal@13269 32 printf '\\\\x%02X' $(($n & 255))
pascal@13269 33 n=$(($n >> 8))
pascal@13269 34 done | xargs echo -en | dd conv=notrunc bs=1 of=$2 seek=$3
pascal@13269 35 }
pascal@13269 36
pascal@13269 37 compress()
pascal@13269 38 {
pascal@19403 39 xz -z -e --format=lzma --lzma1=mf=bt2 --stdout | dd bs=1 skip=13
pascal@13269 40 }
pascal@13269 41
pascal@13269 42 main()
pascal@13269 43 {
pascal@15188 44 uudecode | gunzip >$2
pascal@15188 45 dd if=$1 bs=1 skip=497 seek=497 count=15 of=$2 conv=notrunc
pascal@13289 46 setup="$(echo $(od -j 497 -N 1 -dAn $1))"
pascal@15480 47 [ $setup -eq 0 ] && setup=4
pascal@13287 48 syssize="$(echo $(od -j 500 -N 2 -dAn $1))"
pascal@15480 49 [ $syssize -eq 0 ] && syssize=$((($(stat -c %s $1) + 15 - 512*($setup + 1))/16))
pascal@19404 50 store $setup $2 XXXSB 1
pascal@19404 51 store $setup $2 XXXSW 1
pascal@19404 52 store $((32 * $setup)) $2 XXXSP
pascal@19404 53 store $((0x1000 - 32*$setup)) $2 XXXSS
pascal@19404 54 dd if=$1 bs=512 skip=1 | compress >>$2
pascal@13269 55 size=$(stat -c %s $2)
pascal@19404 56 store $((($size-2560+15)/16 + 0x1000)) $2 XXXP
pascal@15189 57 store $((($size-2560+15)/16)) $2 500
pascal@13269 58 store 4 $2 497 1
pascal@15188 59 store $((($size+511)/512)) $2 4
pascal@15188 60 store $((($size+15)/16)) $2 14
pascal@15480 61 echo -e "$3" | dd conv=notrunc bs=1 seek=YYY of=$2 count=ZZZ
pascal@13269 62 }
pascal@13269 63
pascal@15188 64 HELP="$(unix2dos <<EOT
pascal@19399 65 Memtest86+ VERSION is an endless advanced memory diagnostic tool (GPL).
pascal@15188 66 EOT
pascal@15188 67 )"
pascal@15188 68 main $1 ${2:-$1.packed} "${3:-$HELP}" 2>/dev/null <<EOT