Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
	"connect" $1 ", "
31
	print fieldn(2) " },"
32
	}
33
 
34
	func fieldn(n,	s,i)
35
	{
36
		s = $0
37
		while (n > 1) {
38
			sub(/^[ \t]*/, "", s)
39
			if (substr(s, 1, 1) == "\"") {
40
				sub(/^"[^\"]*"/, "", s)
41
			} else {
42
				sub(/^[^ \t]*/, "", s)
43
			}
44
			n--
45
		}
46
		sub(/^[ \t]*/, "", s)
47
		if (substr(s, 1, 1) == "\"") {
48
			i = index(substr(s, 2), "\"")
49
			if (i > 0)
50
				return substr(s, 1, i+1)
51
			else
52
				return s
53
		} else {
54
			sub(/[ \t].*/, "", s)
55
			return s
56
		}
57
	}'
58
 
59
cat <<'---'
60
	{ 0 },
61
};
62
---
63
 
64
awk '
65
	BEGIN	{ cpuflag = 0; bootprog = "boot"; bootdisk = "#S/sdC0/"; rootdir = "/root"; }
66
	$0 ~ "^boot" && $2=="cpu"\
67
		{ cpuflag = 1
68
		  if(NF == 4 && $3 == "boot")
69
			bootdisk = $4
70
		}
71
	$0 ~ "^boot" && $2=="rootdir" && NF==3\
72
		{ rootdir = $3 }
73
	$0 ~ "^boot" && ($2=="bboot" || $2=="romboot" || $2=="dosboot")\
74
		{ cpuflag = 1;  bootprog = $2; }
75
	$0 ~ "^boot" && $2=="boot" && NF==3\
76
		{ bootdisk = $3 }
77
	END 	{ print "int cpuflag = " cpuflag ";"
78
		  print "char* rootdir = \"" rootdir "\";"
79
		  print "char* bootdisk = \"" bootdisk "\";"
80
		  print "extern void " bootprog "(int, char**);"
81
		  print "void"
82
		  print "main(int argc, char **argv)"
83
		  print "{"
84
		  print "\t" bootprog "(argc, argv);"
85
		  print "}"
86
		}
87
' $1
88
 
89
#
90
#  configure in a cache file system if a 
91
# /386/bin/root appears in the bootdir section.
92
#
93
../port/mkextract bootdir 0 $* | awk '
94
	BEGIN			{ cfs = 0 }
95
	$1 ~ "bin/cfs$"	{ cfs = 1 }
96
	END			{ if(cfs)
97
					print "int (*cfs)(int) = cache;"
98
				  else
99
					print "int (*cfs)(int) = 0;"
100
				}
101
	'