wok-next 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 |