Drop main() prototype. Syncs with NetBSD-8
[minix.git] / minix / commands / DESCRIBE / DESCRIBE.sh
blobb2419c628ea2db2b7d14e22c2efd7dd783238a16
1 #!/bin/sh
3 # DESCRIBE 2.2 - Describe the given devices. Author: Kees J. Bot
5 # BUGS
6 # - Arguments may not contain shell metacharacters.
8 case $# in
9 0) flag=; set -$- /dev ;;
10 *) flag=d ;;
11 esac
13 ls -l$flag $* | \
14 sed -e '/^total/d' \
15 -e '/^l/d' \
16 -e '/^[^bc]/s/.* /BAD BAD /' \
17 -e '/^[bc]/s/.* \([0-9][0-9]*\), *\([0-9][0-9]*\).* /\1 \2 /' \
18 | {
19 ex=0 # exit code
21 while read major minor path
23 case $path in
24 /*) name=`expr $path : '.*/\\(.*\\)$'`
26 *) name=$path
27 esac
28 dev= des=
30 case $major in # One of the controllers? What is its controller nr?
31 3) ctrlr=0 ;;
32 8) ctrlr=1 ;;
33 10) ctrlr=2 ;;
34 12) ctrlr=3 ;;
35 esac
37 case $major,$minor in
38 1,0) des="RAM disk" dev=ram
40 1,1) des="memory" dev=mem
42 1,2) des="kernel memory" dev=kmem
44 1,3) des="null device, data sink" dev=null
46 1,4) des="boot device loaded from boot image" dev=boot
48 1,5) des="null byte stream generator" dev=zero
50 1,6) des="boot image RAM disk" dev=imgrd
52 1,[789]|1,1[012])
53 ramdisk=`expr $minor - 7`
54 des="RAM disk $ramdisk" dev=ram$ramdisk
56 2,*) drive=`expr $minor % 4`
57 case `expr $minor - $drive` in
58 0) des='auto density' dev="fd$drive"
60 4) des='360k, 5.25"' dev="pc$drive"
62 8) des='1.2M, 5.25"' dev="at$drive"
64 12) des='360k in 720k, 5.25"' dev="qd$drive"
66 16) des='720k, 3.5"' dev="ps$drive"
68 20) des='360k in 1.2M, 5.25"' dev="pat$drive"
70 24) des='720k in 1.2M, 5.25"' dev="qh$drive"
72 28) des='1.44M, 3.5"' dev="PS$drive"
74 112) des='auto partition 0' dev="fd${drive}p0"
76 116) des='auto partition 1' dev="fd${drive}p1"
78 120) des='auto partition 2' dev="fd${drive}p2"
80 124) des='auto partition 3' dev="fd${drive}p3"
82 *) dev=BAD
83 esac
84 des="floppy drive $drive ($des)"
86 [38],[05]|[38],[123][05]|1[02],[05]|1[02],[123][05])
87 drive=`expr $minor / 5`
88 des="controller $ctrlr disk $drive" dev=c${ctrlr}d${drive}
90 [38],?|[38],[123]?|1[02],?|1[02],[123]?)
91 drive=`expr $minor / 5`
92 par=`expr $minor % 5 - 1`
93 des="controller $ctrlr disk $drive partition $par"
94 dev=c${ctrlr}d${drive}p${par}
96 [38],12[89]|[38],1[3-9]?|[38],2??|1[02],12[89]|1[02],1[3-9]?|1[02],2??)
97 drive=`expr \\( $minor - 128 \\) / 16`
98 par=`expr \\( \\( $minor - 128 \\) / 4 \\) % 4`
99 sub=`expr \\( $minor - 128 \\) % 4`
100 des="hard disk $drive, partition $par, subpartition $sub"
101 des="controller $ctrlr disk $drive partition $par slice $sub"
102 #par=`expr $drive '*' 5 + $par`
103 dev=c${ctrlr}d${drive}p${par}s${sub}
105 [38],6[4-9]|[38],7?|1[02],6[4-9]|1[02],7?)
106 tape=`expr \\( $minor - 64 \\) / 2`
107 case $minor in
108 *[02468])
109 des="controller $ctrlr tape $tape (non-rewinding)"
110 dev=c${ctrlr}t${tape}n
112 *[13579])
113 des="controller $ctrlr tape $tape (rewinding)"
114 dev=c${ctrlr}t${tape}
115 esac
117 4,0) des="console device" dev=console
119 4,[1-7])des="virtual console $minor" dev=ttyc$minor
121 4,15) des="diagnostics device" dev=log
123 4,1[6-9])
124 line=`expr $minor - 16`
125 des="serial line $line" dev=tty0$line
127 4,125) des="video output" dev=video
129 5,0) des="anonymous tty" dev=tty
131 6,0) des="line printer, parallel port" dev=lp
133 7,0)
134 des="Berkeley Packet Filter device" dev=bpf
136 9,0)
137 des="unix98 pseudoterminal master" dev=ptmx
139 9,12[89]|9,1[3-8]?|9,19[01])
140 p=`expr \\( $minor - 128 \\) / 16 | tr '0123' 'pqrs'`
141 n=`expr $minor % 16`
142 test $n -ge 10 && n=`expr $n - 10 | tr '012345' 'abcdef'`
143 des="pseudo tty `expr $minor - 128`" dev=tty$p$n
145 9,???)
146 p=`expr \\( $minor - 192 \\) / 16 | tr '0123' 'pqrs'`
147 n=`expr $minor % 16`
148 test $n -ge 10 && n=`expr $n - 10 | tr '012345' 'abcdef'`
149 des="controller of tty$p$n" dev=pty$p$n
151 11,0)
152 des="block filter" dev=filter
154 13,0)
155 des="audio" dev=audio
157 14,0)
158 des="faulty block device driver" dev=fbd
160 15,0)
161 des="kernel log" dev=klog
163 16,0)
164 des="pseudo random number generator" dev=urandom
166 17,0)
167 des="hello" dev=hello
169 5[6-9],0|6[0-3],0)
170 drive=`expr $major - 56`
171 des="vnode disk $drive" dev=vnd$drive
173 5[6-9],[1-4]|6[0-3],[1-4])
174 drive=`expr $major - 56`
175 par=`expr $minor - 1`
176 des="vnode disk $drive partition $par" dev=vnd${drive}p${par}
178 5[6-9],12[89]|5[6-9],13[0-9]|5[6-9],14[0-3]|6[0-3],12[89]|5[6-9],13[0-9]|5[6-9],14[0-3])
179 drive=`expr $major - 56`
180 par=`expr \\( \\( $minor - 128 \\) / 4 \\) % 4`
181 sub=`expr \\( $minor - 128 \\) % 4`
182 des="vnode disk $drive partition $par slice $sub"
183 dev=vnd${drive}p${par}s${sub}
185 64,0)
186 des="keyboard input multiplexer"
187 dev=kbdmux
189 64,[1-4])
190 n=`expr $minor - 1`
191 des="keyboard input $n"
192 dev=kbd$n
194 64,64)
195 des="mouse input multiplexer"
196 dev=mousemux
198 64,6[5-8])
199 n=`expr $minor - 65`
200 des="mouse input $n"
201 dev=mouse$n
203 BAD,BAD)
204 des= dev=
206 *) dev=BAD
207 esac
209 case $name:$dev in
211 echo "$path: not a device" >&2
212 ex=1
214 *:*BAD*)
215 echo "$path: cannot describe: major=$major, minor=$minor" >&2
216 ex=1
218 $dev:*)
219 echo "$path: $des"
221 *:*) echo "$path: nonstandard name for $dev: $des"
222 esac
223 done
225 exit $ex