1#!/bin/rc 2 3if(! ~ $#* 1){ 4 echo usage: mkdevc file >[1=2] 5 exit 1 6} 7 8# 9# The following programs are allowed to be placed in #/ as 10# file systems for root 11# 12rootfilsys='kfs|dossrv|k9660srv' 13 14cat <<'---' 15#include "u.h" 16#include "../port/lib.h" 17#include "mem.h" 18#include "dat.h" 19#include "fns.h" 20#include "../port/error.h" 21 22#include "devtab.h" 23 24Dev devtab[]={ 25--- 26 27../port/mkextract dev 0 $* | awk '{ 28 print " { " $1 "reset, "\ 29 $1 "init, "\ 30 $1 "attach, "\ 31 $1 "clone, "\ 32 $1 "walk, "\ 33 $1 "stat, "\ 34 $1 "open, "\ 35 $1 "create," 36 print " "\ 37 $1 "close, "\ 38 $1 "read, "\ 39 $1 "write, "\ 40 $1 "remove, "\ 41 $1 "wstat, }," 42 }' 43echo '};' 44../port/mkextract dev 0 $* | awk ' 45 BEGIN{ 46 printf "Rune *devchar=L\"" } 47 { printf "%s", $2 } 48 END{ printf "\";\n" 49 } 50 ' 51 52../port/mkextract stream 0 $* | awk ' 53 BEGIN{ print "extern Qinfo perminfo;" } 54 { print "extern Qinfo\t" $1 "info;" } 55 ' 56../port/mkextract link 0 $* | awk ' 57 { print "extern void\t" $1 "link(void);" } 58 ' 59../port/mkextract misc 0 $* | sed -n 's/[ ]*(.*)\.root/\1/p' | awk ' 60 /^'$rootfilsys'$/ { print "extern uchar\tfscode[];" 61 print "extern ulong\tfslen;" 62 next } 63 { print "extern uchar\t" $1 "code[];" 64 print "extern ulong\t" $1 "len;" } 65 ' 66../port/mkextract stream 0 $* | awk ' 67 BEGIN{ print "void streaminit(void){\n\tnewqinfo(&perminfo);" } 68 { print "\tnewqinfo(&" $1 "info);" } 69 ' 70../port/mkextract link 0 $* | awk ' 71 { print "\t" $1 "link();" } 72 ' 73../port/mkextract misc 0 $* | sed -n 's/[ ]*(.*)\.root/\1/p' | awk ' 74 /^'$rootfilsys'$/ { print "\taddrootfile(\"fs\", fscode, fslen);" 75 next } 76 { print "\taddrootfile(\"" $1 "\", " $1 "code, " $1 "len);" } 77 ' 78echo '}' 79 80../port/mkextract port 0 $* 81 82if(! grep conffile $* > /dev/null)echo 'char *conffile = "'$1'";' 83echo 'ulong kerndate = KERNDATE;' 84