Annotation of lucent/sys/src/9/boot/mkboot, revision 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.