1#!/bin/sh - 2# 3# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. 4# generated from: 5# 6# OpenBSD: etc.luna88k/MAKEDEV.md,v 1.17 2010/09/30 15:27:54 claudio Exp 7# OpenBSD: MAKEDEV.common,v 1.54 2011/04/18 16:52:10 thib Exp 8# OpenBSD: MAKEDEV.mi,v 1.80 2011/04/18 16:52:10 thib Exp 9# OpenBSD: MAKEDEV.sub,v 1.14 2005/02/07 06:14:18 david Exp 10# 11# 12# Copyright (c) 2001-2004 Todd T. Fries <todd@OpenBSD.org> 13# 14# Permission to use, copy, modify, and distribute this software for any 15# purpose with or without fee is hereby granted, provided that the above 16# copyright notice and this permission notice appear in all copies. 17# 18# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 19# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 20# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 21# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 22# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 23# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 24# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 25# 26# Device "make" file. Valid arguments: 27# all makes all known devices, including local devices. 28# Tries to make the ``standard'' number of each type. 29# ramdisk Ramdisk kernel devices 30# std Standard devices 31# local Configuration specific devices 32# Disks: 33# ccd* Concatenated disk devices 34# cd* ATAPI and SCSI CD-ROM drives 35# rd* "rd" pseudo-disks 36# sd* SCSI disks, including flopticals 37# vnd* "file" pseudo-disk devices 38# Tapes: 39# ch* SCSI media changers 40# st* SCSI tape drives 41# Terminal ports: 42# ttya On-board serial console port 43# Pseudo terminals: 44# ptm pty master device 45# pty* Set of 62 master pseudo terminals 46# tty* Set of 62 slave pseudo terminals 47# Console ports: 48# ttyC-J* wscons display devices 49# wscons Minimal wscons devices 50# wskbd* wscons keyboards 51# wsmux wscons keyboard/mouse mux devices 52# Pointing devices: 53# wsmouse* wscons mice 54# Special purpose devices: 55# bio ioctl tunnel pseudo-device 56# bpf* Berkeley Packet Filter 57# diskmap Disk mapper 58# fd fd/* nodes 59# lcd front panel LCD display 60# lkm Loadable kernel modules interface 61# nnpfs* NNPFS filesystem node 62# pf* Packet Filter 63# pppx* PPP Multiplexer 64# *random In-kernel random data source 65# systrace* System call tracing device 66# tun* Network tunnel driver 67# uk* Unknown SCSI devices 68# vscsi* Virtual SCSI controller 69PATH=/sbin:/usr/sbin:/bin:/usr/bin 70T=$0 71 72# set this to echo for Echo-Only debugging 73[ "$eo" ] || eo= 74 75hex() 76{ 77 case $1 in 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;; 85 esac 86} 87 88alph2d() 89{ 90 local t="$1" 91 local p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 92 local sub=${p%${t}*} 93 echo ${#sub} 94} 95 96h2d() 97{ 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;; 114 esac 115} 116 117unt() 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 133dodisk() 134{ 135 [ "$DEBUG" ] && set -x 136 n=$(($((${5}*${7:-16}))+${6})) count=0 137 [ 0$7 -ne 8 ] && l="i j k l m n o p" 138 for d in a b c d e f g h $l 139 do 140 M $1$2$d b $3 $(($n+$count)) 640 operator 141 M r$1$2$d c $4 $(($n+$count)) 640 operator 142 let count=count+1 143 done 144} 145 146dodisk2() 147{ 148 n=$(($(($5*${7:-16}))+$6)) 149 M $1$2a b $3 $n 640 operator 150 M r$1$2a c $4 $n 640 operator 151 n=$(($n+2)) 152 M $1$2c b $3 $n 640 operator 153 M r$1$2c c $4 $n 640 operator 154} 155 156# M name b/c major minor [mode] [group] 157RMlist[0]="rm -f" 158 159mkl() { 160 mklist[${#mklist[*]}]=";mknod -m $1 $2 $3 $4 $5" 161} 162 163M() { 164 RMlist[${#RMlist[*]}]=$1 165 mkl ${5-666} $1 $2 $3 $4 166 G=${6:-wheel} 167 [ "$7" ] && { 168 MKlist[${#MKlist[*]}]=";chown $7:$G $1" 169 } || { 170 case $G in 171 wheel) 172 [ ${#whlist[*]} = 0 ] && whlist[0]=";chgrp wheel" 173 whlist[${#whlist[*]}]="$1" 174 ;; 175 operator) 176 [ ${#oplist[*]} = 0 ] && oplist[0]=";chgrp operator" 177 oplist[${#oplist[*]}]="$1" 178 ;; 179 *) 180 MKlist[${#MKlist[*]}]=";chgrp $G $1"; 181 esac 182 } 183 return 0 184} 185 186R() { 187[ "$DEBUG" ] && set -x 188for i in "$@" 189do 190U=`unt $i` 191[ "$U" ] || U=0 192 193case $i in 194std) 195 M console c 0 0 600 196 M tty c 1 0 197 M mem c 2 0 640 kmem 198 M kmem c 2 1 640 kmem 199 M null c 2 2 200 M zero c 2 12 201 M stdin c 21 0 202 M stdout c 21 1 203 M stderr c 21 2 204 M ksyms c 43 0 640 kmem 205 M klog c 6 0 600 206 ;; 207 208 209vscsi*) 210 M vscsi$U c 53 $U 600 211 ;; 212 213uk*) 214 M uk$U c 41 $U 640 operator 215 ;; 216 217tun*) 218 M tun$U c 23 $U 600 219 ;; 220 221systrace) 222 M systrace c 50 0 644 223 ;; 224 225*random) 226 n=0 227 for pre in " " s u a 228 do 229 M ${pre}random c 40 $n 644 230 n=$(($n+1)) 231 done 232 ;; 233 234pppx*) 235 M pppx$U c 55 $U 600 236 ;; 237 238pf*) 239 M pf c 39 0 600 240 ;; 241 242nnpfs*) 243 M nnpfs$U c 51 $U 600 244 ;; 245 246lkm) 247 M lkm c 24 0 640 _lkm 248 ;; 249 250lcd) 251 M lcd c 10 0 644 252 ;; 253 254fd) 255 RMlist[${#RMlist[*]}]=";mkdir -p fd;rm -f" n=0 256 while [ $n -lt 64 ];do M fd/$n c 21 $n;n=$(($n+1));done 257 MKlist[${#MKlist[*]}]=";chmod 555 fd" 258 ;; 259 260diskmap) 261 M diskmap c 54 0 640 operator 262 ;; 263 264bpf*) 265 M bpf$U c 22 $U 600 266 ;; 267 268bio) 269 M bio c 49 0 600 270 ;; 271 272wsmouse[0-9]*) 273 M wsmouse$U c 15 $U 600 274 ;; 275 276wsmux|wsmouse|wskbd) 277 M wsmouse c 16 0 600 278 M wskbd c 16 1 600 279 ;; 280 281wskbd[0-9]*) 282 M wskbd$U c 14 $U 600 283 ;; 284 285wscons) 286 R wsmouse0 wsmouse1 wsmouse2 wsmouse3 wskbd0 wskbd1 wskbd2 287 R wskbd3 wsmux ttyCcfg ttyC0 ttyC1 ttyC2 ttyC3 ttyC4 ttyC5 288 R ttyC6 ttyC7 ttyC8 ttyC9 ttyCa ttyCb 289 ;; 290 291tty[C-J]*) 292 U=${i##tty[C-J]} 293 case $i in 294 ttyC*) n=C m=0;; 295 ttyD*) n=D m=256;; 296 ttyE*) n=E m=512;; 297 ttyF*) n=F m=768;; 298 ttyG*) n=G m=1024;; 299 ttyH*) n=H m=1280;; 300 ttyI*) n=I m=1536;; 301 ttyJ*) n=J m=1792;; 302 esac 303 case $U in 304 [0-9a-f]) M tty$n$U c 13 $((16#$U+$m)) 600;; 305 cfg) M tty${n}cfg c 13 $((255+$m)) 600;; 306 *) echo bad unit $U for $i; exit 1;; 307 esac 308 ;; 309 310pty*) 311 if [ $U -gt 15 ]; then 312 echo bad unit for pty in: $i 313 continue 314 fi 315 set -A letters p q r s t u v w x y z P Q R S T 316 set -A suffixes 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q \ 317 r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X \ 318 Y Z 319 320 name=${letters[$U]} 321 n=0 322 while [ $n -lt 62 ] 323 do 324 nam=$name${suffixes[$n]} 325 off=$(($U*62)) 326 M tty$nam c 4 $(($off+$n)) 327 M pty$nam c 5 $(($off+$n)) 328 n=$(($n+1)) 329 done 330 ;; 331 332ptm) 333 M ptm c 52 0 666 334 ;; 335 336ttya) 337 M ttya c 12 0 660 dialer uucp 338 M cuaa c 12 128 660 dialer uucp 339 ;; 340 341st*) 342 n=$(($U*16)) 343 for pre in " " n e en 344 do 345 M ${pre}st$U b 5 $n 660 operator 346 M ${pre}rst$U c 20 $n 660 operator 347 n=$(($n+1)) 348 done 349 ;; 350 351ch*) 352 M ch$U c 44 $U 660 operator 353 ;; 354 355vnd*) 356 dodisk vnd $U 8 19 $U 0 357 ;; 358 359rd*) 360 dodisk2 rd $U 7 18 $U 0 361 ;; 362 363cd*) 364 dodisk2 cd $U 6 9 $U 0 365 ;; 366 367local) 368 test -s $T.local && sh $T.local 369 ;; 370 371ramdisk) 372 R diskmap bio pty0 ttya rd0 cd0 cd1 st0 st1 sd0 sd1 sd2 sd3 373 R sd4 bpf0 std 374 ;; 375 376all) 377 R lcd ttya ccd0 ccd1 ccd2 ccd3 vnd0 vnd1 vnd2 vnd3 sd0 sd1 378 R sd2 sd3 sd4 cd0 cd1 rd0 tun0 tun1 tun2 tun3 bio bpf0 bpf1 379 R bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 pty0 diskmap vscsi0 380 R nnpfs0 ch0 ptm local wscons uk0 random lkm pf systrace std 381 R st0 st1 fd 382 ;; 383 384sd*|ccd*) 385 case $i in 386 sd*) dodisk sd $U 4 8 $U 0;; 387 ccd*) dodisk ccd $U 9 17 $U 0;; 388 esac 389 ;; 390 391*) 392 echo $i: unknown device 393 ;; 394esac 395done 396} 397R "$@" 398{ 399echo -n ${RMlist[*]} 400echo -n ${mklist[*]} 401echo -n ${MKlist[*]} 402echo -n ${whlist[*]} 403echo ${oplist[*]} 404} | if [ "$eo" = "echo" ]; then 405 cat 406else 407 sh 408fi 409