Annotation of src/etc/MAKEDEV.mi, Revision 1.72
1.72 ! miod 1: define(COMM,`#')dnl
1.1 todd 2: include(MAKEDEV.sub)dnl
3: dnl
1.72 ! miod 4: vers(a, {-$OpenBSD: MAKEDEV.mi,v 1.71 2004/02/14 17:24:30 todd 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: {
90: local t="$1"
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.1 todd 141: RMlist="$RMlist {-$-}1{-$-}2? r{-$-}1{-$-}2?"
1.13 todd 142: [ 0$7 -ne 8 ] && l="i j k l m n o p"
143: for d in a b c d e f g h $l
1.1 todd 144: do
1.29 todd 145: M {-$-}1{-$-}2$d b {-$-}3 Add($n, $count) 640
146: M r{-$-}1{-$-}2$d c {-$-}4 Add($n, $count) 640
1.1 todd 147: let count=count+1
148: done
1.58 millert 149: MKlist="$MKlist;chown root:operator {-$-}1{-$-}2? r{-$-}1{-$-}2?"
1.1 todd 150: }
151: dnl
1.29 todd 152: dnl dodisk2(name, unit, blkmaj, chrmaj, unit, off[, stepping])
1.1 todd 153: dnl
154: dnl 1. name - prefix name of the device
155: dnl 2. unit - beginning unit number for block devices
156: dnl 3. blkmaj - block device major number
157: dnl 4. chrmaj - character device major number
158: dnl 5. unit - beginning unit number for character devices
159: dnl 6. off - offset from 0 for all minor numbers (see svnd for an example)
1.5 todd 160: dnl 7. step - optional, defaults to 16, number of partitions per device
1.1 todd 161: dnl
1.26 deraadt 162:
1.1 todd 163: dodisk2()
164: {
1.29 todd 165: n=Add(Mult({-$-}5, ${7:-16}), {-$-}6)
1.1 todd 166: M {-$-}1{-$-}2a b {-$-}3 $n 640 operator
167: M r{-$-}1{-$-}2a c {-$-}4 $n 640 operator
1.29 todd 168: n=Add($n, 2)
1.1 todd 169: M {-$-}1{-$-}2c b {-$-}3 $n 640 operator
170: M r{-$-}1{-$-}2c c {-$-}4 $n 640 operator
171: }
172:
173: # M name b/c major minor [mode] [group]
174: RMlist="rm -f"
175: MKlist=":"
1.26 deraadt 176:
1.1 todd 177: mkl() {
178: dnl
179: dnl uncomment if multi mknod happens
180: dnl
1.29 todd 181: ifelse(1, 0,
1.1 todd 182: [ "${mklist[{-$-}1]}" ] && mklist[{-$-}1]="${mklist[{-$-}1]} {-$-}2 {-$-}3 {-$-}4 {-$-}5" || {
1.30 todd 183: mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5"
184: modes="$modes {-$-}1"
1.1 todd 185: },
186: dnl
187: dnl non multi mknod
188: dnl
1.26 deraadt 189: [ "${mklist[{-$-}1]}" ] && {
190: mklist[{-$-}1]="${mklist[{-$-}1]};mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5"
191: } || {
192: mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5"
193: modes="$modes {-$-}1"
194: })
1.1 todd 195: }
1.26 deraadt 196:
1.1 todd 197: M() {
198: RMlist="$RMlist {-$-}1"
199: mkl ${5-666} {-$-}1 {-$-}2 {-$-}3 {-$-}4
200: mklist="$mklist {-$-}1"
201: G={-$-}{6:-wheel}
202: [ "{-$-}7" ] && {
1.58 millert 203: MKlist="$MKlist;chown {-$-}7:{-$-}G {-$-}1"
1.1 todd 204: } || {
205: case $G in
1.56 todd 206: wheel)g=0;;kmem)g=2;;operator)g=5;;tty)g=4;;dialer)g=117;;_lkm)g=61;;
1.1 todd 207: esac
208: [ "${grplist[$g]}" ] && {
209: grplist[$g]="${grplist[$g]} {-$-}1"
210: } || {
211: groups="$groups $g"
212: grplist[$g]="chgrp $G {-$-}1"
213: }
214: }
215: return 0
216: }
217: divert(7)dnl
218: dnl
219: dnl there is no blank line at the end of etc.arch/MAKEDEV.md files, so add one
220: dnl on the following line:
221:
222: show_devs()dnl
223: dnl
224: divert(9)dnl
225: *)
226: echo $i: unknown device
227: ;;
228: esac
229: done
230: }
231: _recurse "$@"
232: list="$RMlist"
233: for mode in $modes; do
234: list="$list;${mklist[$mode]}"
235: done
236: for group in $groups; do
237: list="$list;${grplist[$group]}"
238: done
239: list="$list;$MKlist"
1.67 todd 240: if [ "$eo" = "echo" ]; then
1.1 todd 241: $eo "$list"
242: else
243: echo "$list" | sh
244: fi
1.41 todd 245: divert(3)dnl
1.1 todd 246: dnl
1.26 deraadt 247:
1.1 todd 248: R() {
1.23 todd 249: [ "$DEBUG" ] && set -x
1.1 todd 250: for i in "$@"
251: do
252: U=`unt $i`
253: [ "$U" ] || U=0
254:
255: case $i in
256: dnl