wok annotate memtest/stuff/pack @ rev 13287
memtest: lzma compression
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Aug 26 00:21:22 2012 +0200 (2012-08-26) |
parents | 18d1dc85701e |
children | e76c37f7bfe6 |
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 compress() |
pascal@13269 | 21 { |
pascal@13287 | 22 lzma e -si -so |
pascal@13269 | 23 } |
pascal@13269 | 24 |
pascal@13269 | 25 main() |
pascal@13269 | 26 { |
pascal@13269 | 27 dd if=$1 bs=512 count=1 >$2 |
pascal@13269 | 28 uudecode | gunzip >>$2 |
pascal@13287 | 29 setup="$( echo $(od -j 497 -N 1 -dAn $1))" |
pascal@13287 | 30 syssize="$(echo $(od -j 500 -N 2 -dAn $1))" |
pascal@13269 | 31 dd if=$1 bs=512 count=$setup skip=1 | compress >>$2 |
pascal@13269 | 32 dd if=$1 bs=16 count=$syssize skip=$((32*(1+$setup))) | compress >>$2 |
pascal@13269 | 33 size=$(stat -c %s $2) |
pascal@13269 | 34 store $((($size-512)/16)) $2 520 2 |
pascal@13269 | 35 store $((($size-2560)/16)) $2 500 2 |
pascal@13269 | 36 store 4 $2 497 1 |
pascal@13269 | 37 } |
pascal@13269 | 38 |
pascal@13269 | 39 main $1 $2 2>/dev/null <<EOT |