Annotation of src/etc/MAKEDEV.mi, Revision 1.76
1.72 miod 1: define(COMM,`#')dnl
1.1 todd 2: include(MAKEDEV.sub)dnl
3: dnl
1.76 ! otto 4: vers(a, {-$OpenBSD: MAKEDEV.mi,v 1.75 2005/10/04 18:11:10 otto Exp $-})dnl
1.1 todd 5: dnl
6: divert(1)dnl
7: {-#-}
1.71 todd 8: {-#-} Copyright (c) 2001-2004 Todd T. Fries <todd@OpenBSD.org>
1.1 todd 9: {-#-}
1.60 todd 10: {-#-} Permission to use, copy, modify, and distribute this software for any
11: {-#-} purpose with or without fee is hereby granted, provided that the above
12: {-#-} copyright notice and this permission notice appear in all copies.
1.1 todd 13: {-#-}
1.60 todd 14: {-#-} THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
15: {-#-} WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
16: {-#-} MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
17: {-#-} ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18: {-#-} WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19: {-#-} ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20: {-#-} OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1 todd 21: {-#-}
1.72 miod 22: define(quote,{-"$1" -})dnl
23: include(MAKEDEV.common)dnl
1.1 todd 24: dnl
1.72 miod 25: __devtitle(make, {-Device "make" file. Valid arguments-})dnl
26: __devitem({-all-}, {-all-}, {-makes all known devices{-,-} including local devices.
1.1 todd 27: {-#-} Tries to make the ``standard'' number of each type.-})dnl
1.72 miod 28: __devitem(std,{-std-},Standard devices)dnl
29: __devitem(local,local,Configuration specific devices)dnl
1.18 todd 30: dnl
1.1 todd 31: dnl _std
32: dnl
33: dnl $1: tty
34: dnl $2: memstuff
35: dnl $3: ksyms
36: dnl $4: drum
37: dnl $5: klog
38: dnl
1.72 miod 39: define({-_std-},{-dnl
1.1 todd 40: std)
41: M console c 0 0 600
42: M tty c $1 0
43: M mem c $2 0 640 kmem
44: M kmem c $2 1 640 kmem
45: M null c $2 2
46: M zero c $2 12
47: M stdin c major_fdesc_c 0
48: M stdout c major_fdesc_c 1
49: M stderr c major_fdesc_c 2
50: M ksyms c $3 0 640 kmem
51: M drum c $4 0 640 kmem
52: M klog c $5 0 600-})dnl
53: dnl
54: divert(1)dnl
1.72 miod 55: define(__mddivert,7)dnl
1.1 todd 56: include(etc.MACHINE/MAKEDEV.md)dnl
57: dnl
58: dnl
59: divert(0)dnl
60: #!/bin/sh -
61: #
62: # THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
63: # generated from:
64: #
65: show_vers()dnl <-- now that all files are included, show versions
66: #
67: dnl
68: divert(2)dnl
69: PATH=/sbin:/usr/sbin:/bin:/usr/bin
70: T=$0
71:
72: # set this to echo for Echo-Only debugging
73: [ "$eo" ] || eo=
74:
75: hex()
76: {
77: case ${--}1 in
1.26 deraadt 78: [0-9]) echo -n {-$-}1;;
79: 10) echo -n a;;
80: 11) echo -n b;;
81: 12) echo -n c;;
82: 13) echo -n d;;
83: 14) echo -n e;;
84: 15) echo -n f;;
1.1 todd 85: esac
1.65 todd 86: }
87:
88: alph2d()
89: {
1.73 david 90: local t="$1"
1.65 todd 91: local p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
92: local sub=${p%${t}*}
93: echo ${#sub}
1.1 todd 94: }
1.26 deraadt 95:
1.62 todd 96: h2d()
1.1 todd 97: {
1.62 todd 98: local s="$1"
99: local f=${s%*[0-9a-f]} n=${s#[0-9a-f]*}
100:
101: echo $(($(_h2d $f)*16+ $(_h2d $n) ))
102: }
103:
104: _h2d()
105: {
106: case $1 in
107: [0-9]) echo -n $1;;
108: a) echo -n 10;;
109: b) echo -n 11;;
110: c) echo -n 12;;
111: d) echo -n 13;;
112: e) echo -n 14;;
113: f) echo -n 15;;
1.1 todd 114: esac
115: }
1.26 deraadt 116:
1.1 todd 117: unt()
118: {
119: # XXX pdksh can't seem to deal with locally scoped variables
120: # in ${foo#$bar} expansions
121: arg="{-$-}1"
122: tmp="${arg#[a-zA-Z]*}"
123: tmp="${tmp%*[a-zA-Z]}"
124: while [ "$tmp" != "$arg" ]
125: do
126: arg=$tmp
127: tmp="${arg#[a-zA-Z]*}"
128: tmp="${tmp%*[a-zA-Z]}"
129: done
130: echo $arg
131: }
132: dnl
1.29 todd 133: dnl dodisk(name, unit, blkmaj, chrmaj, unit, off[, stepping])
1.5 todd 134: dnl arg: 1 2 3 4 5 6 7
1.1 todd 135: dnl
1.26 deraadt 136:
1.1 todd 137: dodisk()
138: {
1.27 todd 139: [ "$DEBUG" ] && set -x
1.29 todd 140: n=Add(Mult(${5}, ${7:-16}), ${6}) count=0
1.13 todd 141: [ 0$7 -ne 8 ] && l="i j k l m n o p"
142: for d in a b c d e f g h $l
1.1 todd 143: do
1.76 ! otto 144: M {-$-}1{-$-}2$d b {-$-}3 Add($n, $count) 640 operator
1.75 otto 145: M r{-$-}1{-$-}2$d c {-$-}4 Add($n, $count) 640 operator
1.1 todd 146: let count=count+1
147: done
148: }
149: dnl
1.29 todd 150: dnl dodisk2(name, unit, blkmaj, chrmaj, unit, off[, stepping])
1.1 todd 151: dnl
152: dnl 1. name - prefix name of the device
153: dnl 2. unit - beginning unit number for block devices
154: dnl 3. blkmaj - block device major number
155: dnl 4. chrmaj - character device major number
156: dnl 5. unit - beginning unit number for character devices
157: dnl 6. off - offset from 0 for all minor numbers (see svnd for an example)
1.5 todd 158: dnl 7. step - optional, defaults to 16, number of partitions per device
1.1 todd 159: dnl
1.26 deraadt 160:
1.1 todd 161: dodisk2()
162: {
1.29 todd 163: n=Add(Mult({-$-}5, ${7:-16}), {-$-}6)
1.1 todd 164: M {-$-}1{-$-}2a b {-$-}3 $n 640 operator
165: M r{-$-}1{-$-}2a c {-$-}4 $n 640 operator
1.29 todd 166: n=Add($n, 2)
1.1 todd 167: M {-$-}1{-$-}2c b {-$-}3 $n 640 operator
168: M r{-$-}1{-$-}2c c {-$-}4 $n 640 operator
169: }
170:
171: # M name b/c major minor [mode] [group]
172: RMlist="rm -f"
173: MKlist=":"
1.26 deraadt 174:
1.1 todd 175: mkl() {
176: dnl
177: dnl uncomment if multi mknod happens
178: dnl
1.29 todd 179: ifelse(1, 0,
1.1 todd 180: [ "${mklist[{-$-}1]}" ] && mklist[{-$-}1]="${mklist[{-$-}1]} {-$-}2 {-$-}3 {-$-}4 {-$-}5" || {
1.30 todd 181: mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5"
182: modes="$modes {-$-}1"
1.1 todd 183: },
184: dnl
185: dnl non multi mknod
186: dnl
1.26 deraadt 187: [ "${mklist[{-$-}1]}" ] && {
188: mklist[{-$-}1]="${mklist[{-$-}1]};mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5"
189: } || {
190: mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5"
191: modes="$modes {-$-}1"
192: })
1.1 todd 193: }
1.26 deraadt 194:
1.1 todd 195: M() {
196: RMlist="$RMlist {-$-}1"
197: mkl ${5-666} {-$-}1 {-$-}2 {-$-}3 {-$-}4
198: G={-$-}{6:-wheel}
199: [ "{-$-}7" ] && {
1.58 millert 200: MKlist="$MKlist;chown {-$-}7:{-$-}G {-$-}1"
1.1 todd 201: } || {
202: case $G in
1.56 todd 203: wheel)g=0;;kmem)g=2;;operator)g=5;;tty)g=4;;dialer)g=117;;_lkm)g=61;;
1.1 todd 204: esac
205: [ "${grplist[$g]}" ] && {
206: grplist[$g]="${grplist[$g]} {-$-}1"
207: } || {
208: groups="$groups $g"
209: grplist[$g]="chgrp $G {-$-}1"
210: }
211: }
212: return 0
213: }
214: divert(7)dnl
215: dnl
216: dnl there is no blank line at the end of etc.arch/MAKEDEV.md files, so add one
217: dnl on the following line:
218:
219: show_devs()dnl
220: dnl
221: divert(9)dnl
222: *)
223: echo $i: unknown device
224: ;;
225: esac
226: done
227: }
228: _recurse "$@"
229: list="$RMlist"
230: for mode in $modes; do
231: list="$list;${mklist[$mode]}"
232: done
233: for group in $groups; do
234: list="$list;${grplist[$group]}"
235: done
236: list="$list;$MKlist"
1.67 todd 237: if [ "$eo" = "echo" ]; then
1.1 todd 238: $eo "$list"
239: else
240: echo "$list" | sh
241: fi
1.41 todd 242: divert(3)dnl
1.1 todd 243: dnl
1.26 deraadt 244:
1.1 todd 245: R() {
1.23 todd 246: [ "$DEBUG" ] && set -x
1.1 todd 247: for i in "$@"
248: do
249: U=`unt $i`
250: [ "$U" ] || U=0
251:
252: case $i in
253: dnl