/commands/DESCRIBE/DESCRIBE.sh

http://www.minix3.org/ · Shell · 222 lines · 208 code · 7 blank · 7 comment · 5 complexity · af1a9379bb476279e4275f41f279cc30 MD5 · raw file

  1. #!/bin/sh
  2. #
  3. # DESCRIBE 2.2 - Describe the given devices. Author: Kees J. Bot
  4. #
  5. # BUGS
  6. # - Arguments may not contain shell metacharacters.
  7. case $# in
  8. 0) flag=; set -$- /dev ;;
  9. *) flag=d ;;
  10. esac
  11. ls -l$flag $* | \
  12. sed -e '/^total/d' \
  13. -e '/^l/d' \
  14. -e '/^[^bc]/s/.* /BAD BAD /' \
  15. -e '/^[bc]/s/.* \([0-9][0-9]*\), *\([0-9][0-9]*\).* /\1 \2 /' \
  16. | {
  17. ex=0 # exit code
  18. while read major minor path
  19. do
  20. case $path in
  21. /*) name=`expr $path : '.*/\\(.*\\)$'`
  22. ;;
  23. *) name=$path
  24. esac
  25. dev= des=
  26. case $major in # One of the controllers? What is its controller nr?
  27. 3) ctrlr=0 ;;
  28. 8) ctrlr=1 ;;
  29. 10) ctrlr=2 ;;
  30. 12) ctrlr=3 ;;
  31. esac
  32. case $major,$minor in
  33. 1,0) des="RAM disk" dev=ram
  34. ;;
  35. 1,1) des="memory" dev=mem
  36. ;;
  37. 1,2) des="kernel memory" dev=kmem
  38. ;;
  39. 1,3) des="null device, data sink" dev=null
  40. ;;
  41. 1,4) des="boot device loaded from boot image" dev=boot
  42. ;;
  43. 1,5) des="null byte stream generator" dev=zero
  44. ;;
  45. 1,6) des="boot image RAM disk" dev=imgrd
  46. ;;
  47. 1,[789]|1,1[012])
  48. ramdisk=`expr $minor - 7`
  49. des="RAM disk $ramdisk" dev=ram$ramdisk
  50. ;;
  51. 2,*) drive=`expr $minor % 4`
  52. case `expr $minor - $drive` in
  53. 0) des='auto density' dev="fd$drive"
  54. ;;
  55. 4) des='360k, 5.25"' dev="pc$drive"
  56. ;;
  57. 8) des='1.2M, 5.25"' dev="at$drive"
  58. ;;
  59. 12) des='360k in 720k, 5.25"' dev="qd$drive"
  60. ;;
  61. 16) des='720k, 3.5"' dev="ps$drive"
  62. ;;
  63. 20) des='360k in 1.2M, 5.25"' dev="pat$drive"
  64. ;;
  65. 24) des='720k in 1.2M, 5.25"' dev="qh$drive"
  66. ;;
  67. 28) des='1.44M, 3.5"' dev="PS$drive"
  68. ;;
  69. 112) des='auto partition 0' dev="fd${drive}p0"
  70. ;;
  71. 116) des='auto partition 1' dev="fd${drive}p1"
  72. ;;
  73. 120) des='auto partition 2' dev="fd${drive}p2"
  74. ;;
  75. 124) des='auto partition 3' dev="fd${drive}p3"
  76. ;;
  77. *) dev=BAD
  78. esac
  79. des="floppy drive $drive ($des)"
  80. ;;
  81. [38],[05]|[38],[123][05]|1[02],[05]|1[02],[123][05])
  82. drive=`expr $minor / 5`
  83. des="controller $ctrlr disk $drive" dev=c${ctrlr}d${drive}
  84. ;;
  85. [38],?|[38],[123]?|1[02],?|1[02],[123]?)
  86. drive=`expr $minor / 5`
  87. par=`expr $minor % 5 - 1`
  88. des="controller $ctrlr disk $drive partition $par"
  89. dev=c${ctrlr}d${drive}p${par}
  90. ;;
  91. [38],12[89]|[38],1[3-9]?|[38],2??|1[02],12[89]|1[02],1[3-9]?|1[02],2??)
  92. drive=`expr \\( $minor - 128 \\) / 16`
  93. par=`expr \\( \\( $minor - 128 \\) / 4 \\) % 4`
  94. sub=`expr \\( $minor - 128 \\) % 4`
  95. des="hard disk $drive, partition $par, subpartition $sub"
  96. des="controller $ctrlr disk $drive partition $par slice $sub"
  97. #par=`expr $drive '*' 5 + $par`
  98. dev=c${ctrlr}d${drive}p${par}s${sub}
  99. ;;
  100. [38],6[4-9]|[38],7?|1[02],6[4-9]|1[02],7?)
  101. tape=`expr \\( $minor - 64 \\) / 2`
  102. case $minor in
  103. *[02468])
  104. des="controller $ctrlr tape $tape (non-rewinding)"
  105. dev=c${ctrlr}t${tape}n
  106. ;;
  107. *[13579])
  108. des="controller $ctrlr tape $tape (rewinding)"
  109. dev=c${ctrlr}t${tape}
  110. esac
  111. ;;
  112. 4,0) des="console device" dev=console
  113. ;;
  114. 4,[1-7])des="virtual console $minor" dev=ttyc$minor
  115. ;;
  116. 4,15) des="diagnostics device" dev=log
  117. ;;
  118. 4,1[6-9])
  119. line=`expr $minor - 16`
  120. des="serial line $line" dev=tty0$line
  121. ;;
  122. 4,125) des="video output" dev=video
  123. ;;
  124. 4,126) des="auxiliary input" dev=kbdaux
  125. ;;
  126. 4,127) des="keyboard input" dev=kbd
  127. ;;
  128. 4,12[89]|4,1[3-8]?|4,19[01])
  129. p=`expr \\( $minor - 128 \\) / 16 | tr '0123' 'pqrs'`
  130. n=`expr $minor % 16`
  131. test $n -ge 10 && n=`expr $n - 10 | tr '012345' 'abcdef'`
  132. des="pseudo tty `expr $minor - 128`" dev=tty$p$n
  133. ;;
  134. 4,???)
  135. p=`expr \\( $minor - 192 \\) / 16 | tr '0123' 'pqrs'`
  136. n=`expr $minor % 16`
  137. test $n -ge 10 && n=`expr $n - 10 | tr '012345' 'abcdef'`
  138. des="controller of tty$p$n" dev=pty$p$n
  139. ;;
  140. 5,0) des="anonymous tty" dev=tty
  141. ;;
  142. 6,0) des="line printer, parallel port" dev=lp
  143. ;;
  144. 7,*)
  145. d=`expr $minor % 8`
  146. n=`expr $minor / 8`
  147. case $d in
  148. 0) des="IP stat" dev=ipstat
  149. ;;
  150. 1) case $name in
  151. psip*)
  152. des="Pseudo IP #$n" dev=psip
  153. ;;
  154. *) des="raw ethernet #$n" dev=eth
  155. esac
  156. ;;
  157. 2) des="raw IP #$n" dev=ip
  158. ;;
  159. 3) des="TCP/IP #$n" dev=tcp
  160. ;;
  161. 4) des="UDP #$n" dev=udp
  162. esac
  163. case $d in
  164. [0123])
  165. if [ "$name" = "$dev" ]
  166. then
  167. des="$des (default)"
  168. else
  169. dev=$dev$n
  170. fi
  171. esac
  172. ;;
  173. 11,0)
  174. des="block filter" dev=filter
  175. ;;
  176. 13,0)
  177. des="audio" dev=audio
  178. ;;
  179. 14,0)
  180. des="faulty block device driver" dev=fbd
  181. ;;
  182. 15,0)
  183. des="kernel log" dev=klog
  184. ;;
  185. 16,0)
  186. des="pseudo random number generator" dev=urandom
  187. ;;
  188. 17,0)
  189. des="hello" dev=hello
  190. ;;
  191. 18,0)
  192. des="UNIX domain socket" dev=uds
  193. ;;
  194. BAD,BAD)
  195. des= dev=
  196. ;;
  197. *) dev=BAD
  198. esac
  199. case $name:$dev in
  200. *:)
  201. echo "$path: not a device" >&2
  202. ex=1
  203. ;;
  204. *:*BAD*)
  205. echo "$path: cannot describe: major=$major, minor=$minor" >&2
  206. ex=1
  207. ;;
  208. $dev:*)
  209. echo "$path: $des"
  210. ;;
  211. *:*) echo "$path: nonstandard name for $dev: $des"
  212. esac
  213. done
  214. exit $ex
  215. }