Annotation of lucent/sys/src/9/boot/mkboot, revision 1.1.1.1

1.1       root        1: #!/bin/rc
                      2: #
                      3: #  this file configures a boot program (/boot) for a kernel.
                      4: #
                      5: if(! ~ $#* 1){
                      6:        echo usage: mkboot file >[1=2]
                      7:        exit 1
                      8: }
                      9: 
                     10: cat <<'---'
                     11: #include <u.h>
                     12: #include <libc.h>
                     13: #include "../boot/boot.h"
                     14: 
                     15: Method method[]={
                     16: ---
                     17: 
                     18: #
                     19: #  configure all remote methods, i.e. all methods in the 'boot' section
                     20: #
                     21: #  EXAMPLE
                     22: #      boot
                     23: #              incon
                     24: #              9600
                     25: #              19200
                     26: #
                     27: ../port/mkextract boot 0 $* | awk '{
                     28:        printf "        { \""  "" $1 "\", "\
                     29:        "config" $1 ", "\
                     30:        "auth" $1 ", "\
                     31:        "connect" $1 ", "
                     32:        print fieldn(2) " },"
                     33:        }
                     34: 
                     35:        func fieldn(n,  s,i)
                     36:        {
                     37:                s = $0
                     38:                while (n > 1) {
                     39:                        sub(/^[ \t]*/, "", s)
                     40:                        if (substr(s, 1, 1) == "\"") {
                     41:                                sub(/^"[^\"]*"/, "", s)
                     42:                        } else {
                     43:                                sub(/^[^ \t]*/, "", s)
                     44:                        }
                     45:                        n--
                     46:                }
                     47:                sub(/^[ \t]*/, "", s)
                     48:                if (substr(s, 1, 1) == "\"") {
                     49:                        i = index(substr(s, 2), "\"")
                     50:                        if (i > 0)
                     51:                                return substr(s, 1, i+1)
                     52:                        else
                     53:                                return s
                     54:                } else {
                     55:                        sub(/[ \t].*/, "", s)
                     56:                        return s
                     57:                }
                     58:        }'
                     59: 
                     60: cat <<'---'
                     61:        { 0 },
                     62: };
                     63: ---
                     64: 
                     65: awk '
                     66:        BEGIN   { cpuflag = 0; bootprog = "boot"; bootdisk = "#w/sd0" }
                     67:        $0 ~ "^boot" && $2=="cpu"\
                     68:                { cpuflag = 1 }
                     69:        $0 ~ "^boot" && ($2=="bboot" || $2=="romboot" || $2=="dosboot")\
                     70:                { cpuflag = 1;  bootprog = $2; }
                     71:        $0 ~ "^boot" && NF==3\
                     72:                { bootdisk = $3 }
                     73:        END     { print "int cpuflag = " cpuflag ";"
                     74:                  if(cpuflag)
                     75:                        print "void (*pword)(int, Method*) = key;"
                     76:                  else
                     77:                        print "void (*pword)(int, Method*) = userpasswd;"
                     78:                  print "char* bootdisk = \"" bootdisk "\";"
                     79:                  print "extern void " bootprog "(int, char**);"
                     80:                  print "void"
                     81:                  print "main(int argc, char **argv)"
                     82:                  print "{"
                     83:                  print "\t" bootprog "(argc, argv);"
                     84:                  print "}"
                     85:                }
                     86: ' $1
                     87: 
                     88: #
                     89: #  configure in a cache file system if a 'cfs.root' appears in the
                     90: #  'misc' section
                     91: #
                     92: ../port/mkextract misc 0 $* | awk '
                     93:        BEGIN                   { cfs = 0 }
                     94:        $1 == "cfs.root"        { cfs = 1 }
                     95:        END                     { if(cfs)
                     96:                                        print "int (*cfs)(int) = cache;"
                     97:                                  else
                     98:                                        print "int (*cfs)(int) = 0;"
                     99:                                }
                    100:        '

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.