slitaz-forge annotate mirror/floppies/sets.sh @ rev 716
mirror/floppies: multi-format support
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Jul 23 16:41:12 2021 +0000 (2021-07-23) |
parents | |
children |
rev | line source |
---|---|
pascal@716 | 1 #!/bin/sh |
pascal@716 | 2 |
pascal@716 | 3 get() |
pascal@716 | 4 { |
pascal@716 | 5 hexdump -v -s $1 -n ${4:-${3:-2}} -e "\"\" 1/${3:-2} \" %u\n\"" "$2" |
pascal@716 | 6 } |
pascal@716 | 7 |
pascal@716 | 8 n=$((1 + $(get 497 $1/fd001.img 1) + 1 + ($(get 500 $1/fd001.img 4)-1)/32)) |
pascal@716 | 9 last=$(($n*512)) |
pascal@716 | 10 first=$last |
pascal@716 | 11 dir=$1 |
pascal@716 | 12 n=$((512*$(get 497 $1/fd001.img 1) + 512 - 20)) |
pascal@716 | 13 SET="" |
pascal@716 | 14 if [ -s $1/fd100.img ]; then |
pascal@716 | 15 for i in 0 1 2 3; do |
pascal@716 | 16 x=$(get $n $1/fd001.img 4) |
pascal@716 | 17 last=$(($last+$x)) |
pascal@716 | 18 [ $x -eq 0 ] && SET="" && break |
pascal@716 | 19 SET="$SET $last" |
pascal@716 | 20 n=$(($n+4)) |
pascal@716 | 21 done |
pascal@716 | 22 file=$1/fd.img |
pascal@716 | 23 cat $1/fd???.img > $file |
pascal@716 | 24 set -- $first $SET |
pascal@716 | 25 while [ -n "$2" ]; do |
pascal@716 | 26 n=$(get $1 $file) |
pascal@716 | 27 shift |
pascal@716 | 28 case $n in |
pascal@716 | 29 \ 14128|\ 93) continue ;; |
pascal@716 | 30 esac |
pascal@716 | 31 rm $file |
pascal@716 | 32 SET="" |
pascal@716 | 33 break |
pascal@716 | 34 done |
pascal@716 | 35 else |
pascal@716 | 36 if [ $(get 494 $1/fd001.img) -eq 490 ]; then |
pascal@716 | 37 SET="$(($first+$(get 490 $1/fd001.img 4)))" |
pascal@716 | 38 cat $1/fd???.img > $1/fd.img |
pascal@716 | 39 set -- $SET |
pascal@716 | 40 fi |
pascal@716 | 41 fi |
pascal@716 | 42 if [ -n "$SET" ]; then |
pascal@716 | 43 size=$1 |
pascal@716 | 44 best=$1 |
pascal@716 | 45 cd $dir |
pascal@716 | 46 for i in $(sed '/option value/!d;s|.*value=.||;s|. title.*||' ../format.js); do |
pascal@716 | 47 s=$((((($size-1)/$i)+1)*$i)) |
pascal@716 | 48 [ $s -gt $best ] && best=$s |
pascal@716 | 49 dd of=fd.img bs=1 count=0 seek=$s 2> /dev/null |
pascal@716 | 50 [ -d $i ] || mkdir $i |
pascal@716 | 51 cd $i |
pascal@716 | 52 split -b $i ../fd.img xx |
pascal@716 | 53 set -- $SET |
pascal@716 | 54 n=1; sz=0 |
pascal@716 | 55 ls xx* | while read x; do |
pascal@716 | 56 mv $x $(printf "fd%03d.img" $n) |
pascal@716 | 57 n=$(($n+1)) |
pascal@716 | 58 sz=$(($sz+$i)) |
pascal@716 | 59 if [ $sz -ge $1 ]; then |
pascal@716 | 60 n=$(($n-($n%100)+100)) |
pascal@716 | 61 shift |
pascal@716 | 62 [ -n "$1" ] || break |
pascal@716 | 63 fi |
pascal@716 | 64 done |
pascal@716 | 65 md5sum fd* > md5sum |
pascal@716 | 66 rm fd* |
pascal@716 | 67 cd .. |
pascal@716 | 68 done |
pascal@716 | 69 dd of=fd.img bs=1 count=0 seek=$best 2> /dev/null |
pascal@716 | 70 cd .. |
pascal@716 | 71 echo $SET |
pascal@716 | 72 fi |