wok annotate memtest/stuff/pack @ rev 15188

Add memtest-serial
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Aug 25 18:09:21 2013 +0000 (2013-08-25)
parents 8d9ce0de31e0
children 20fd4e3d8970
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@13269 4 cat >> $0 <<EOM
pascal@15188 5 $(dd if=$1 bs=512 count=1 conv=sync | cat - $2 | gzip -9 | uuencode -m -)
pascal@13269 6 EOT
pascal@13269 7 EOM
pascal@15188 8 getip=$(grep -s getip ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
pascal@13290 9 sed -i "s/XXX/$((515+0x${getip:-5}))/" $0
pascal@15188 10 helpmsg=$(sed '/helpmsg:/!d{n;s/ [0-9]* \([^ ]*\).*/\1/}' ${1/.bin/.lst} | sed '$!d')
pascal@15188 11 sed -i "s/YYY/$((0x$helpmsg))/" $0
pascal@15188 12 sed -i "s/ZZZ/$((496-0x$helpmsg))/" $0
pascal@13269 13 sed -i '/--build/,/^fi/d' $0
pascal@13269 14 exit
pascal@13269 15 fi
pascal@13269 16
pascal@13269 17 store()
pascal@13269 18 {
pascal@13269 19 n=$1
pascal@15188 20 for i in $(seq 1 ${4:-2}); do
pascal@13269 21 printf '\\\\x%02X' $(($n & 255))
pascal@13269 22 n=$(($n >> 8))
pascal@13269 23 done | xargs echo -en | dd conv=notrunc bs=1 of=$2 seek=$3
pascal@13269 24 }
pascal@13269 25
pascal@13269 26 compress()
pascal@13269 27 {
pascal@14798 28 xz -z -e --format=lzma --lzma1=mode=normal --stdout
pascal@13269 29 }
pascal@13269 30
pascal@13269 31 main()
pascal@13269 32 {
pascal@15188 33 uudecode | gunzip >$2
pascal@15188 34 dd if=$1 bs=1 skip=497 seek=497 count=15 of=$2 conv=notrunc
pascal@13289 35 setup="$(echo $(od -j 497 -N 1 -dAn $1))"
pascal@13287 36 syssize="$(echo $(od -j 500 -N 2 -dAn $1))"
pascal@13269 37 dd if=$1 bs=512 count=$setup skip=1 | compress >>$2
pascal@13269 38 dd if=$1 bs=16 count=$syssize skip=$((32*(1+$setup))) | compress >>$2
pascal@13269 39 size=$(stat -c %s $2)
pascal@15188 40 store $((($size-512)/16)) $2 XXX
pascal@15188 41 store $((($size-2560)/16)) $2 500
pascal@13269 42 store 4 $2 497 1
pascal@15188 43 store $((($size+511)/512)) $2 4
pascal@15188 44 store $((($size+15)/16)) $2 14
pascal@15188 45 echo -en "$3" | dd conv=notrunc bs=1 seek=YYY of=$2 count=ZZZ
pascal@13269 46 }
pascal@13269 47
pascal@15188 48 HELP="$(unix2dos <<EOT
pascal@15188 49 Memtest86+ is an endless advanced memory diagnostic tool released under the
pascal@15188 50 terms of the Gnu Public License (GPL).
pascal@15188 51
pascal@15188 52 EOT
pascal@15188 53 )"
pascal@15188 54 main $1 ${2:-$1.packed} "${3:-$HELP}" 2>/dev/null <<EOT