1#!/bin/rc 2 3targ=multi 4 5n=0 6dir=`{pwd} 7 8fn grab { 9 echo using $* 10 for(i){ 11 n=`{echo 1+$n|hoc} 12 mv $i $dir/a.$n.8 13 } 14} 15 16fn getfiles { 17 sed -n 's/^(pcc|8\^l|8l) +(-o [^ ]* +)?([^\-].*)/ \3/p' | sed 's/ -[^ ]*//g' | 18 sed 's/ [^ ]*\.a//g' 19} 20 21rm a.*.8 22>multi.h 23>multiproto.h 24 25for(i){ 26echo $i... 27 b=`{basename $i} 28 p=$b 29 if(~ $b [0-9]*) 30 p=_$b 31 echo void $p^_main'(int, char**);' >>$dir/multiproto.h 32 echo "$b", $p^_main, >>$dir/multi.h 33 d=`{basename -d $i} 34 if(~ $i disk/prep disk/fdisk){ 35 cd /sys/src/cmd/disk/prep 36 rm 8.$b 37 files=`{mk 8.$b | getfiles} 38 } 39 if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.out}){ 40 cd /sys/src/cmd/$i 41 rm 8.out 42 files=`{mk 8.out | getfiles} 43 } 44 if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.$b}){ 45 cd /sys/src/cmd/$i 46 rm 8.out 47 files=`{mk 8.$b | getfiles} 48 } 49 if not if(test -d /sys/src/cmd/$d && @{cd /sys/src/cmd/$d && mk 8.$b}){ 50 cd /sys/src/cmd/$d 51 rm 8.$b 52 files=`{mk 8.$b | getfiles} 53 } 54 if not{ 55 echo do not know how to make $i 56 exit oops 57 } 58 aux/8prefix $p^_ $files 59 grab $files 60 switch(`{pwd}){ 61 case /sys/src/cmd /sys/src/cmd/aux /sys/src/cmd/ip 62 rm 8.$b 63 case * 64 mk clean 65 } 66} 67cd $dir 688c -FVw multi.c 698l -o 8.$targ multi.8 a.*.8 70# rm a.*.8 71