wok annotate memtest/stuff/pack @ rev 13269

memtest: compression (-76K)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Aug 19 08:06:36 2012 +0200 (2012-08-19)
parents
children 3fd2f1836a8c
rev   line source
pascal@13269 1 #!/bin/sh
pascal@13269 2 if [ "$1" == "--build" ]; then
pascal@13269 3 cat >> $0 <<EOM
pascal@13269 4 $(gzip -9 < ${2:-unpack.bin} | uuencode -m -)
pascal@13269 5 EOT
pascal@13269 6 EOM
pascal@13269 7 sed -i '/--build/,/^fi/d' $0
pascal@13269 8 exit
pascal@13269 9 fi
pascal@13269 10
pascal@13269 11 store()
pascal@13269 12 {
pascal@13269 13 n=$1
pascal@13269 14 for i in $(seq 1 $4); do
pascal@13269 15 printf '\\\\x%02X' $(($n & 255))
pascal@13269 16 n=$(($n >> 8))
pascal@13269 17 done | xargs echo -en | dd conv=notrunc bs=1 of=$2 seek=$3
pascal@13269 18 }
pascal@13269 19
pascal@13269 20 setup="$(dd bs=1 count=1 if=$1 skip=497 | hexdump -e '"" 1/1 "%d" "\n"')"
pascal@13269 21 syssize="$(dd bs=1 count=2 if=$1 skip=500 | hexdump -e '"" 1/2 "%d" "\n"')"
pascal@13269 22
pascal@13269 23 compress()
pascal@13269 24 {
pascal@13269 25 lz4demo -c1 stdin stdout
pascal@13269 26 echo -en "\x00\x00\x00\x00"
pascal@13269 27 }
pascal@13269 28
pascal@13269 29 main()
pascal@13269 30 {
pascal@13269 31 dd if=$1 bs=512 count=1 >$2
pascal@13269 32 uudecode | gunzip >>$2
pascal@13269 33 dd if=$1 bs=512 count=$setup skip=1 | compress >>$2
pascal@13269 34 dd if=$1 bs=16 count=$syssize skip=$((32*(1+$setup))) | compress >>$2
pascal@13269 35 size=$(stat -c %s $2)
pascal@13269 36 store $((($size-512)/16)) $2 520 2
pascal@13269 37 store $((($size-2560)/16)) $2 500 2
pascal@13269 38 store 4 $2 497 1
pascal@13269 39 }
pascal@13269 40
pascal@13269 41 main $1 $2 2>/dev/null <<EOT