1#!/bin/sh - 2# 3# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. 4# generated from: 5# 6# OpenBSD: etc.luna88k/MAKEDEV.md,v 1.37 2021/11/11 09:47:33 claudio Exp 7# OpenBSD: MAKEDEV.common,v 1.120 2023/01/28 11:04:47 phessler Exp 8# OpenBSD: MAKEDEV.mi,v 1.83 2016/09/11 03:06:31 deraadt 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# cd* ATAPI and SCSI CD-ROM drives 34# rd* "rd" pseudo-disks 35# sd* SCSI disks, including flopticals 36# vnd* "file" pseudo-disk devices 37# wd* "winchester" disk drives (ST506, IDE, ESDI, RLL, ...) 38# Tapes: 39# ch* SCSI media changers 40# st* SCSI tape drives 41# Terminal ports: 42# ttya On-board serial console port 43# tty[0-7][0-9a-f] NS16x50 serial ports 44# Pseudo terminals: 45# ptm pty master device 46# pty* Set of 62 master pseudo terminals 47# tty* Set of 62 slave pseudo terminals 48# Console ports: 49# ttyC-J* wscons display devices 50# wscons Minimal wscons devices 51# wskbd* wscons keyboards 52# wsmux wscons keyboard/mouse mux devices 53# Pointing devices: 54# wsmouse* wscons mice 55# Special purpose devices: 56# audio* Audio devices 57# bio ioctl tunnel pseudo-device 58# bpf Berkeley Packet Filter 59# dt Dynamic Tracer 60# diskmap Disk mapper 61# fd fd/* nodes 62# fuse Userland Filesystem 63# lcd front panel LCD display 64# pcex* PC-9801 extension board slot 65# pf Packet Filter 66# pppx* PPP Multiplexer 67# pppac* PPP Access Concentrator 68# *random In-kernel random data source 69# tun* Network tunnel driver 70# tap* Ethernet tunnel driver 71# uk* Unknown SCSI devices 72# vscsi* Virtual SCSI controller 73# xp HD647180 I/O processor 74# kstat Kernel Statistics 75PATH=/sbin:/usr/sbin:/bin:/usr/bin 76T=$0 77 78# set this to echo for Echo-Only debugging 79[ "$eo" ] || eo= 80 81hex() 82{ 83 case $1 in 84 [0-9]) echo -n $1;; 85 10) echo -n a;; 86 11) echo -n b;; 87 12) echo -n c;; 88 13) echo -n d;; 89 14) echo -n e;; 90 15) echo -n f;; 91 esac 92} 93 94alph2d() 95{ 96 local t="$1" 97 local p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 98 local sub=${p%${t}*} 99 echo ${#sub} 100} 101 102h2d() 103{ 104 local s="$1" 105 local f=${s%*[0-9a-f]} n=${s#[0-9a-f]*} 106 107 echo $(($(_h2d $f)*16+ $(_h2d $n) )) 108} 109 110_h2d() 111{ 112 case $1 in 113 [0-9]) echo -n $1;; 114 a) echo -n 10;; 115 b) echo -n 11;; 116 c) echo -n 12;; 117 d) echo -n 13;; 118 e) echo -n 14;; 119 f) echo -n 15;; 120 esac 121} 122 123unt() 124{ 125 # XXX pdksh can't seem to deal with locally scoped variables 126 # in ${foo#$bar} expansions 127 arg="$1" 128 tmp="${arg#[a-zA-Z]*}" 129 tmp="${tmp%*[a-zA-Z]}" 130 while [ "$tmp" != "$arg" ] 131 do 132 arg=$tmp 133 tmp="${arg#[a-zA-Z]*}" 134 tmp="${tmp%*[a-zA-Z]}" 135 done 136 echo $arg 137} 138 139dodisk() 140{ 141 [ "$DEBUG" ] && set -x 142 n=$(($((${5}*${7:-16}))+${6})) count=0 143 [ 0$7 -ne 8 ] && l="i j k l m n o p" 144 for d in a b c d e f g h $l 145 do 146 M $1$2$d b $3 $(($n+$count)) 640 operator 147 M r$1$2$d c $4 $(($n+$count)) 640 operator 148 let count=count+1 149 done 150} 151 152dodisk2() 153{ 154 n=$(($(($5*${7:-16}))+$6)) 155 M $1$2a b $3 $n 640 operator 156 M r$1$2a c $4 $n 640 operator 157 n=$(($n+2)) 158 M $1$2c b $3 $n 640 operator 159 M r$1$2c c $4 $n 640 operator 160} 161 162# M name b/c major minor [mode] [group] 163RMlist[0]="rm -f" 164 165mkl() { 166 : ${mklist[0]:=";mknod"} 167 mklist[${#mklist[*]}]=" -m $1 $2 $3 $4 $5" 168} 169 170M() { 171 RMlist[${#RMlist[*]}]=$1 172 mkl ${5-666} $1 $2 $3 $4 173 G=${6:-wheel} 174 [ "$7" ] && { 175 MKlist[${#MKlist[*]}]="&& chown $7:$G $1" 176 } || { 177 case $G in 178 wheel) 179 [ ${#whlist[*]} = 0 ] && whlist[0]="&& chgrp wheel" 180 whlist[${#whlist[*]}]="$1" 181 ;; 182 operator) 183 [ ${#oplist[*]} = 0 ] && oplist[0]="&& chgrp operator" 184 oplist[${#oplist[*]}]="$1" 185 ;; 186 *) 187 MKlist[${#MKlist[*]}]="&& chgrp $G $1"; 188 esac 189 } 190 return 0 191} 192 193R() { 194[ "$DEBUG" ] && set -x 195for i in "$@" 196do 197U=`unt $i` 198[ "$U" ] || U=0 199 200case $i in 201std) 202 M console c 0 0 600 203 M tty c 1 0 204 M mem c 2 0 640 kmem 205 M kmem c 2 1 640 kmem 206 M null c 2 2 207 M zero c 2 12 208 M stdin c 21 0 209 M stdout c 21 1 210 M stderr c 21 2 211 M ksyms c 43 0 640 kmem 212 M klog c 6 0 600 213 ;; 214 215 216kstat) 217 M kstat c 51 0 640 218 ;; 219 220xp) 221 M xp c 11 0 600 222 ;; 223 224vscsi*) 225 M vscsi$U c 53 $U 600 226 ;; 227 228uk*) 229 M uk$U c 41 $U 640 operator 230 ;; 231 232tap*) 233 M tap$U c 56 $U 600 234 ;; 235 236tun*) 237 M tun$U c 23 $U 600 238 ;; 239 240*random) 241 M urandom c 40 0 644 242 RMlist[${#RMlist[*]}]=random 243 MKlist[${#MKlist[*]}]=";ln -s urandom random" 244 ;; 245 246pppac*) 247 M pppac$U c 58 $U 600 248 ;; 249 250pppx*) 251 M pppx$U c 55 $U 600 252 ;; 253 254pf) 255 M pf c 39 0 600 256 ;; 257 258pcex) 259 M pcexmem c 25 0 660 260 M pcexio c 25 1 660 261 ;; 262 263lcd) 264 M lcd c 10 0 644 265 ;; 266 267fuse) 268 M fuse$U c 45 $U 600 269 ;; 270 271fd) 272 RMlist[${#RMlist[*]}]=";mkdir -p fd;rm -f" n=0 273 while [ $n -lt 64 ];do M fd/$n c 21 $n;n=$(($n+1));done 274 MKlist[${#MKlist[*]}]=";chmod 555 fd" 275 ;; 276 277diskmap) 278 M diskmap c 54 0 640 operator 279 ;; 280 281dt) 282 M dt c 30 0 600 283 ;; 284 285bpf) 286 M bpf c 22 0 600 287 M bpf0 c 22 0 600 288 ;; 289 290bio) 291 M bio c 49 0 600 292 ;; 293 294audio*) 295 M audio$U c 26 $U 660 _sndiop 296 M audioctl$U c 26 $(($U+192)) 660 _sndiop 297 ;; 298 299wsmouse[0-9]*) 300 M wsmouse$U c 15 $U 600 301 ;; 302 303wsmux|wsmouse|wskbd) 304 M wsmouse c 16 0 600 305 M wskbd c 16 1 600 306 ;; 307 308wskbd[0-9]*) 309 M wskbd$U c 14 $U 600 310 ;; 311 312wscons) 313 R wsmouse0 wsmouse1 wsmouse2 wsmouse3 wsmouse4 wsmouse5 314 R wsmouse6 wsmouse7 wsmouse8 wsmouse9 wskbd0 wskbd1 wskbd2 315 R wskbd3 wskbd4 wskbd5 wskbd6 wskbd7 wskbd8 wskbd9 wsmux 316 R ttyCcfg ttyC0 ttyC1 ttyC2 ttyC3 ttyC4 ttyC5 ttyC6 ttyC7 317 R ttyC8 ttyC9 ttyCa ttyCb 318 ;; 319 320tty[C-J]*) 321 U=${i##tty[C-J]} 322 case $i in 323 ttyC*) n=C m=0;; 324 ttyD*) n=D m=256;; 325 ttyE*) n=E m=512;; 326 ttyF*) n=F m=768;; 327 ttyG*) n=G m=1024;; 328 ttyH*) n=H m=1280;; 329 ttyI*) n=I m=1536;; 330 ttyJ*) n=J m=1792;; 331 esac 332 case $U in 333 [0-9a-f]) M tty$n$U c 13 $((16#$U+$m)) 600;; 334 cfg) M tty${n}cfg c 13 $((255+$m)) 600;; 335 *) echo bad unit $U for $i; exit 1;; 336 esac 337 ;; 338 339pty*) 340 if [ $U -gt 15 ]; then 341 echo bad unit for pty in: $i 342 continue 343 fi 344 set -A letters p q r s t u v w x y z P Q R S T 345 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 \ 346 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 \ 347 Y Z 348 349 name=${letters[$U]} 350 n=0 351 while [ $n -lt 62 ] 352 do 353 nam=$name${suffixes[$n]} 354 off=$(($U*62)) 355 M tty$nam c 4 $(($off+$n)) 356 M pty$nam c 5 $(($off+$n)) 357 n=$(($n+1)) 358 done 359 ;; 360 361ptm) 362 M ptm c 52 0 666 363 ;; 364 365tty[0-7][0-9a-f]) 366 U=${i#tty*} 367 o=$(h2d $U) 368 M tty$U c 27 $o 660 dialer root 369 M cua$U c 27 $(($o+128)) 660 dialer root 370 ;; 371 372ttya) 373 M ttya c 12 0 660 dialer root 374 M cuaa c 12 128 660 dialer root 375 ;; 376 377st*) 378 n=$(($U*16)) 379 for pre in " " n e en 380 do 381 M ${pre}rst$U c 20 $n 660 operator 382 n=$(($n+1)) 383 done 384 ;; 385 386ch*) 387 M ch$U c 44 $U 660 operator 388 ;; 389 390vnd*) 391 dodisk vnd $U 8 19 $U 0 392 ;; 393 394rd*) 395 dodisk2 rd $U 7 18 $U 0 396 ;; 397 398cd*) 399 dodisk2 cd $U 6 9 $U 0 400 ;; 401 402local) 403 test -s $T.local && sh $T.local 404 ;; 405 406ramdisk) 407 R diskmap bio ttya rd0 cd0 cd1 st0 st1 wd0 wd1 wd2 wd3 wd4 408 R sd0 sd1 sd2 sd3 sd4 tty00 tty01 bpf std 409 ;; 410 411all) 412 R xp pcex audio0 lcd ttya vnd0 vnd1 vnd2 vnd3 sd0 sd1 sd2 sd3 413 R sd4 cd0 cd1 rd0 tap0 tap1 tap2 tap3 tun0 tun1 tun2 tun3 bio 414 R pty0 diskmap vscsi0 ch0 kstat dt bpf fuse pppac pppx ptm 415 R local wscons uk0 random tty00 tty01 tty02 tty03 tty04 tty05 416 R tty06 tty07 tty08 tty09 tty0a tty0b pf wd0 wd1 wd2 wd3 std 417 R st0 st1 fd 418 ;; 419 420wd*|sd*) 421 case $i in 422 wd*) dodisk wd $U 9 28 $U 0;; 423 sd*) dodisk sd $U 4 8 $U 0;; 424 esac 425 ;; 426 427*) 428 echo $i: unknown device 429 ;; 430esac 431done 432} 433R "$@" 434{ 435echo -n ${RMlist[*]} 436echo -n ${mklist[*]} 437echo -n ${MKlist[*]} 438echo -n ${whlist[*]} 439echo ${oplist[*]} 440} | if [ "$eo" = "echo" ]; then 441 cat 442else 443 sh 444fi 445