189 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # DESCRIBE 2.2 - Describe the given devices.		Author: Kees J. Bot
 | |
| #
 | |
| # BUGS
 | |
| # - Arguments may not contain shell metacharacters.
 | |
| 
 | |
| case $# in
 | |
| 0)	flag=; set -$- /dev ;;
 | |
| *)	flag=d ;;
 | |
| esac
 | |
| 
 | |
| ls -l$flag $* | \
 | |
| sed	-e '/^total/d' \
 | |
| 	-e '/^[^bc]/s/.* /BAD BAD /' \
 | |
| 	-e '/^[bc]/s/.* \([0-9][0-9]*\), *\([0-9][0-9]*\).* /\1 \2 /' \
 | |
| | {
 | |
| ex=0	# exit code
 | |
| 
 | |
| while read major minor path
 | |
| do
 | |
|     case $path in
 | |
|     /*)	name=`expr $path : '.*/\\(.*\\)$'`
 | |
| 	;;
 | |
|     *)	name=$path
 | |
|     esac
 | |
|     dev= des=
 | |
| 
 | |
|     case $major in	# One of the controllers?  What is its controller nr?
 | |
|     3)	ctrlr=0	;;
 | |
|     8)	ctrlr=1	;;
 | |
|     10)	ctrlr=2	;;
 | |
|     12)	ctrlr=3	;;
 | |
|     esac
 | |
| 
 | |
|     case $major,$minor in
 | |
|     1,0)	des="RAM disk" dev=ram
 | |
| 	;;
 | |
|     1,1)	des="memory" dev=mem
 | |
| 	;;
 | |
|     1,2)	des="kernel memory" dev=kmem
 | |
| 	;;
 | |
|     1,3)	des="null device, data sink" dev=null
 | |
| 	;;
 | |
|     2,*)	drive=`expr $minor % 4`
 | |
| 	case `expr $minor - $drive` in
 | |
| 	0)	des='auto density' dev="fd$drive"
 | |
| 	    ;;
 | |
| 	4)	des='360k, 5.25"' dev="pc$drive"
 | |
| 	    ;;
 | |
| 	8)	des='1.2M, 5.25"' dev="at$drive"
 | |
| 	    ;;
 | |
| 	12)	des='360k in 720k, 5.25"' dev="qd$drive"
 | |
| 	    ;;
 | |
| 	16)	des='720k, 3.5"' dev="ps$drive"
 | |
| 	    ;;
 | |
| 	20)	des='360k in 1.2M, 5.25"' dev="pat$drive"
 | |
| 	    ;;
 | |
| 	24)	des='720k in 1.2M, 5.25"' dev="qh$drive"
 | |
| 	    ;;
 | |
| 	28)	des='1.44M, 3.5"' dev="PS$drive"
 | |
| 	    ;;
 | |
| 	112)	des='auto partition 0' dev="fd${drive}p0"
 | |
| 	    ;;
 | |
| 	116)	des='auto partition 1' dev="fd${drive}p1"
 | |
| 	    ;;
 | |
| 	120)	des='auto partition 2' dev="fd${drive}p2"
 | |
| 	    ;;
 | |
| 	124)	des='auto partition 3' dev="fd${drive}p3"
 | |
| 	    ;;
 | |
| 	*)	dev=BAD
 | |
| 	esac
 | |
| 	des="floppy drive $drive ($des)"
 | |
| 	;;
 | |
|     [38],[05]|[38],[123][05]|1[02],[05]|1[02],[123][05])
 | |
| 	drive=`expr $minor / 5`
 | |
| 	des="controller $ctrlr disk $drive" dev=c${ctrlr}d${drive}
 | |
| 	;;
 | |
|     [38],?|[38],[123]?|1[02],?|1[02],[123]?)
 | |
| 	drive=`expr $minor / 5`
 | |
| 	par=`expr $minor % 5 - 1`
 | |
| 	des="controller $ctrlr disk $drive partition $par"
 | |
| 	dev=c${ctrlr}d${drive}p${par}
 | |
| 	;;
 | |
|     [38],12[89]|[38],1[3-9]?|[38],2??|1[02],12[89]|1[02],1[3-9]?|1[02],2??)
 | |
| 	drive=`expr \\( $minor - 128 \\) / 16`
 | |
| 	par=`expr \\( \\( $minor - 128 \\) / 4 \\) % 4`
 | |
| 	sub=`expr \\( $minor - 128 \\) % 4`
 | |
| 	des="hard disk $drive, partition $par, subpartition $sub"
 | |
| 	des="controller $ctrlr disk $drive partition $par slice $sub"
 | |
| 	#par=`expr $drive '*' 5 + $par`
 | |
| 	dev=c${ctrlr}d${drive}p${par}s${sub}
 | |
| 	;;
 | |
|     [38],6[4-9]|[38],7?|1[02],6[4-9]|1[02],7?)
 | |
| 	tape=`expr \\( $minor - 64 \\) / 2`
 | |
| 	case $minor in
 | |
| 	*[02468])
 | |
| 	    des="controller $ctrlr tape $tape (non-rewinding)"
 | |
| 	    dev=c${ctrlr}t${tape}n
 | |
| 	    ;;
 | |
| 	*[13579])
 | |
| 	    des="controller $ctrlr tape $tape (rewinding)"
 | |
| 	    dev=c${ctrlr}t${tape}
 | |
| 	esac
 | |
| 	;;
 | |
|     4,0)	des="console device" dev=console
 | |
| 	;;
 | |
|     4,[1-7])des="virtual console $minor" dev=ttyc$minor
 | |
| 	;;
 | |
|     4,15)	des="diagnostics device" dev=log
 | |
| 	;;
 | |
|     4,1[6-9])
 | |
| 	line=`expr $minor - 16`
 | |
| 	des="serial line $line" dev=tty0$line
 | |
| 	;;
 | |
|     4,12[89]|4,1[3-8]?|4,19[01])
 | |
| 	p=`expr \\( $minor - 128 \\) / 16 | tr '0123' 'pqrs'`
 | |
| 	n=`expr $minor % 16`
 | |
| 	test $n -ge 10 && n=`expr $n - 10 | tr '012345' 'abcdef'`
 | |
| 	des="pseudo tty `expr $minor - 128`" dev=tty$p$n
 | |
| 	;;
 | |
|     4,???)
 | |
| 	p=`expr \\( $minor - 192 \\) / 16 | tr '0123' 'pqrs'`
 | |
| 	n=`expr $minor % 16`
 | |
| 	test $n -ge 10 && n=`expr $n - 10 | tr '012345' 'abcdef'`
 | |
| 	des="controller of tty$p$n" dev=pty$p$n
 | |
| 	;;
 | |
|     5,0)	des="anonymous tty" dev=tty
 | |
| 	;;
 | |
|     6,0)	des="line printer, parallel port" dev=lp
 | |
| 	;;
 | |
|     7,*)
 | |
| 	d=`expr $minor % 8`
 | |
| 	n=`expr $minor / 8`
 | |
| 	case $d in
 | |
| 	0)  case $name in
 | |
| 	    psip*)
 | |
| 		des="Pseudo IP #$n" dev=psip
 | |
| 		;;
 | |
| 	    *)  des="raw ethernet #$n" dev=eth
 | |
| 	    esac
 | |
| 	    ;;
 | |
| 	1)  des="raw IP #$n" dev=ip
 | |
| 	    ;;
 | |
| 	2)  des="TCP/IP #$n" dev=tcp
 | |
| 	    ;;
 | |
| 	3)  des="UDP #$n" dev=udp
 | |
| 	esac
 | |
| 	case $d in
 | |
| 	[0123])
 | |
| 	    if [ "$name" = "$dev" ]
 | |
| 	    then
 | |
| 		des="$des (default)"
 | |
| 	    else
 | |
| 		dev=$dev$n
 | |
| 	    fi
 | |
| 	esac
 | |
| 	;;
 | |
|     13,0)
 | |
| 	des="audio" dev=audio
 | |
| 	;;
 | |
|     14,0)
 | |
| 	des="audio mixer" dev=mixer
 | |
| 	;;
 | |
|     BAD,BAD)
 | |
| 	des= dev=
 | |
| 	;;
 | |
|     *)	dev=BAD
 | |
|     esac
 | |
| 
 | |
|     case $name:$dev in
 | |
|     *:)
 | |
| 	echo "$path: not a device" >&2
 | |
| 	ex=1
 | |
| 	;;
 | |
|     *:*BAD*)
 | |
| 	echo "$path: cannot describe: major=$major, minor=$minor" >&2
 | |
| 	ex=1
 | |
| 	;;
 | |
|     $dev:*)
 | |
| 	echo "$path: $des"
 | |
| 	;;
 | |
|     *:*)	echo "$path: nonstandard name for $dev: $des"
 | |
|     esac
 | |
| done
 | |
| 
 | |
| exit $ex
 | |
| }
 | 
