diff options
Diffstat (limited to 'sys-utils/MAKEDEV')
-rw-r--r-- | sys-utils/MAKEDEV | 486 |
1 files changed, 486 insertions, 0 deletions
diff --git a/sys-utils/MAKEDEV b/sys-utils/MAKEDEV new file mode 100644 index 000000000..6326edd43 --- /dev/null +++ b/sys-utils/MAKEDEV @@ -0,0 +1,486 @@ +#! /bin/sh - + +RCSID='MAKEDEV,v 1.1.1.1 1995/02/22 19:09:11 faith Exp' + +#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# +# Customisation: +# The devices fall into various classes. This section contains the mapping +# from a class name into a group name and permission. +# You will almost certainly need to edit the group name to match your +# system, and you may change the permissions to suit your preference. These +# lines _must_ be of the format "user group perm". + + public=" root system 666" + system=" root system 660" + kmem=" root kmem 660" + tty=" root tty 666" + cons=" root tty 622" # 622 for console? +dialout=" root uucp 660" + mouse=" root system 666" +printer=" root daemon 660" + floppy=" root floppy 660" + disk=" root disk 660" + scsi=" root system 600" + cdrom=" root disk 660" + tape=" root disk 660" + audio=" root system 666" + ibcs2=" root system 666" +scanner=" root system 666" + +#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# + +procfs=/proc + +opt_v= +opt_d= +opt_n= + +while [ $# -ge 1 ] +do + case $1 in + --) shift; break ;; + -v) shift; opt_v=1 ;; + -d) shift; opt_d=1 ;; + -n) shift; opt_n=1; opt_v=1 ;; + -V) shift; opt_V=1 ;; + -*) echo "$0: unknown flag \"$1\"" >&2; exit 1 ;; + *) break ;; + esac +done + +if [ "$opt_V" ] +then + echo "$RCSID" + exit 0 +fi + +opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}" + +makedev () { # usage: makedev name [bcu] major minor owner group mode + if [ "$opt_v" ] + then if [ "$opt_d" ] + then echo "delete $1" + else echo "create $1 $2 $3 $4 $5:$6 $7" + fi + fi + if [ ! "$opt_n" ] + then if [ "$opt_d" ] + then + rm -f $1 + else + mknod $1- $2 $3 $4 && + chown $5:$6 $1- && + chmod $7 $1- && + mv $1- $1 + fi + fi +} +symlink () { # usage: symlink name target + if [ "$opt_v" ] + then if [ "$opt_d" ] + then echo "delete $1" + else echo "create $1 -> $2" + fi + fi + [ ! "$opt_n" ] && rm -f $1 && + [ ! "$opt_d" ] && ln -s $2 $1 +} + +devices= +if [ ! -f $procfs/devices ] +then + echo "$0: warning: can't read $procfs/devices" >&2 +else + exec 3<$procfs/devices + while read major device <&3 + do + case "$major" in + Character|Block|'') + ;; + *) + eval "major_$device=$major" + devices="$devices $device" + ;; + esac + done + exec 3<&- +fi + +Major () { + device=$2 + if [ "$opt_d" ] + then + echo -1 # don't care + else + eval echo \${major_$1:-\${device:?\"unknown major number for $1\"}} + fi +} + +cvt () { + while [ $# -ne 0 ] + do + case "$1" in + mem|tty|ttyp|cua|cub) ;; + hd) echo hda hdb ;; + xd) echo xda xdb ;; + fd) echo fd0 fd1 ;; + lp) echo lp0 lp1 lp2 ;; + mt) echo ftape ;; + loop) echo loop ;; + ibcs2) echo ibcs2 ;; + tpqic02) echo qic ;; + sound) echo audio ;; + logiscan) echo logiscan ;; + ac4096) echo ac4096 ;; + idecd) echo idecd ;; + hw) echo helloworld ;; + sbpcd | sbpcd[123]) echo $1 ;; + Joystick) echo js ;; + apm_bios) echo apm ;; + dcf) echo dcf ;; + pcmcia) ;; # taken care of by its own driver + ttyC) echo cyclades ;; + *) echo "$0: don't know what \"$1\" is" >&2 ;; + esac + shift + done +} + +for arg +do + case $arg in + generic) + $0 $opts std + $0 $opts fd0 fd1 + $0 $opts hda hdb + $0 $opts xda xdb + $0 $opts sda sdb + $0 $opts ptyp ptyq ptyr ptys + $0 $opts console tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 + $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 + $0 $opts busmice + $0 $opts lp0 lp1 lp2 + $0 $opts par0 par1 par2 + $0 $opts fd + ;; + local) + $0.local $opts + ;; + std) + makedev mem c 1 1 $kmem + makedev kmem c 1 2 $kmem + makedev null c 1 3 $public + makedev port c 1 4 $kmem + makedev zero c 1 5 $public + symlink core $procfs/kcore + makedev full c 1 7 $public + makedev ram b 1 1 $disk + makedev tty c 5 0 $tty + ;; + console|tty0) + makedev $arg c 4 0 $cons + ;; + tty[1-9]|tty[1-5][0-9]|tty[6][0-3]) + line=`expr $arg : "tty\(.*\)"` + makedev tty$line c 4 $line $tty + ;; + ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3]) + line=`expr $arg : "ttyS\(.*\)"` + minor=`expr 64 + $line` + makedev ttyS$line c 4 $minor $tty + makedev cua$line c 5 $minor $dialout + ;; + pty[p-s]) + # Currently limited to 64 master/slave pairs. + bank=`expr $arg : "pty\(.\)"` + base=`expr \( pqrs : ".*$bank" - 1 \) \* 16` + for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f + do + j=`expr 0123456789abcdef : ".*$i" - 1` + makedev pty$bank$i c 4 `expr 128 + $base + $j` $tty + makedev tty$bank$i c 4 `expr 192 + $base + $j` $tty + done + ;; + cyclades) + major1=`Major ttyC` || continue + major2=`Major cub` || continue + for i in 0 1 2 3 4 5 6 7 # 8 9 10 11 12 13 14 15 + do + makedev ttyC$i c $major1 `expr 32 + $i` $tty + makedev cub$i c $major2 `expr 32 + $i` $dialout + done + ;; + par[0-2]) + major=`Major lp 6` || continue + port=`expr $arg : "par\(.\)"` + makedev $arg c $major $port $printer + ;; + lp[0-2]) + major=`Major lp 6` || continue + port=`expr $arg : "lp\(.\)"` + makedev $arg c $major $port $printer + ;; + busmice) + major=`Major mouse 10` || continue + makedev logibm c $major 0 $mouse + makedev psaux c $major 1 $mouse + makedev inportbm c $major 2 $mouse + makedev atibm c $major 3 $mouse + # makedev sejin c $major 4 $mouse + ;; + js) + major=`Major Joystick` || continue + makedev js0 c $major 0 $mouse + makedev js1 c $major 1 $mouse + ;; + fd[0-4]) + major=`Major fd 2` || continue + unit=`expr $arg : "fd\(.\)"` + makedev fd${unit} b $major $unit $floppy + makedev fd${unit}d360 b $major `expr $unit + 4` $floppy + makedev fd${unit}h1200 b $major `expr $unit + 8` $floppy + makedev fd${unit}D360 b $major `expr $unit + 12` $floppy + symlink fd${unit}H360 fd${unit}D360 + makedev fd${unit}D720 b $major `expr $unit + 16` $floppy + symlink fd${unit}H720 fd${unit}D720 + makedev fd${unit}h360 b $major `expr $unit + 20` $floppy + makedev fd${unit}h720 b $major `expr $unit + 24` $floppy + makedev fd${unit}H1440 b $major `expr $unit + 28` $floppy + makedev fd${unit}E2880 b $major `expr $unit + 32` $floppy + makedev fd${unit}CompaQ b $major `expr $unit + 36` $floppy + + makedev fd${unit}h1440 b $major `expr $unit + 40` $floppy + makedev fd${unit}H1680 b $major `expr $unit + 44` $floppy + makedev fd${unit}h410 b $major `expr $unit + 48` $floppy + makedev fd${unit}H820 b $major `expr $unit + 52` $floppy + makedev fd${unit}h1476 b $major `expr $unit + 56` $floppy + makedev fd${unit}H1722 b $major `expr $unit + 60` $floppy + makedev fd${unit}h420 b $major `expr $unit + 64` $floppy + makedev fd${unit}H830 b $major `expr $unit + 68` $floppy + makedev fd${unit}h1494 b $major `expr $unit + 72` $floppy + makedev fd${unit}H1743 b $major `expr $unit + 76` $floppy + ;; + hd[a-d]) + major=`Major hd 3` || continue + unit=`expr $arg : "hd\(.\)"` + base=`expr \( abcd : ".*$unit" - 1 \) \* 64` + makedev hd$unit b $major $base $disk + for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 + do + makedev hd$unit$part b $major `expr $base + $part` $disk + done + ;; + hd1[a-d]) + unit=`expr $arg : "hd1\(.\)"` + base=`expr \( abcd : ".*$unit" - 1 \) \* 64` + makedev hd1$unit b 22 $base $disk + for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 + do + makedev hd1$unit$part b 22 `expr $base + $part` $disk + done + ;; + xd[a-d]) + major=`Major xd 13` || continue + unit=`expr $arg : "xd\(.\)"` + base=`expr \( abcd : ".*$unit" - 1 \) \* 64` + makedev xd$unit b $major $base $disk + for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 + do + makedev xd$unit$part b $major `expr $base + $part` $disk + done + ;; + sd[a-h]) + major=`Major sd 8` || continue + unit=`expr $arg : "sd\(.\)"` + base=`expr \( abcdefgh : ".*$unit" - 1 \) \* 16` + makedev sd$unit b $major $base $disk + for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 + do + minor=`expr $base + $part` + makedev sd$unit$part b $major $minor $disk + done + ;; + loop) + major=`Major loop` || continue + for part in 0 1 2 3 4 5 6 7 + do + makedev loop$part b $major $part $disk + done + ;; + st[0-7]) + major=`Major st 9` + unit=`expr $arg : "st\(.\)"` + makedev st$unit c $major $unit $tape + makedev nst$unit c $major `expr 128 + $unit` $tape + ;; + qic) + major=`Major tpqic02 12` + makedev rmt8 c $major 6 $tape + makedev rmt16 c $major 8 $tape + makedev tape-d c $major 136 $tape + makedev tape-reset c $major 255 $tape + ;; + ftape) + major=`Major mt 27` || continue + for unit in 0 1 2 3 + do + makedev rft$unit c $major $unit $tape + makedev nrft$unit c $major `expr $unit + 4` $tape + done + symlink ftape rft0 + symlink nftape nrft0 + ;; + scd[0-7]) + major=`Major sr 11` || continue + unit=`expr $arg : "scd\(.\)"` + makedev scd$unit b $major $unit $cdrom + ;; + sonycd) + major=`Major cdu31a` || continue + makedev $arg b $major 0 $cdrom + ;; + mcd) + major=`Major mcd 23` || continue + makedev $arg b $major 0 $cdrom + ;; + cdu535) + makedev $arg b 24 0 $cdrom + ;; + lmscd) + makedev $arg b 24 0 $cdrom + ;; + sbpcd|sbpcd[123]) + major=`Major $arg` || continue + base=`expr ${arg}0 : "sbpcd\(.\)"` + for minor in 0 1 2 3 + do + unit=`expr substr 0123456789abcdef \( $base \* 4 + $minor + 1 \) 1` + makedev spbcd$unit b $major $minor $cdrom + done + [ $arg = sbpcd ] && symlink $arg ${arg}0 + ;; + idecd) + major=`Major idecd` || continue + makedev $arg c $major 0 $cdrom + ;; + logiscan) + major=`Major logiscan` || continue + makedev $arg c $major 0 $scanner + ;; + m105scan) + major=`Major m105` || continue + makedev $arg c $major 0 $scanner + ;; + ac4096) + major=`Major ac4096` || continue + makedev $arg c $major 0 $scanner + ;; + audio) + major=`Major sound 14` + makedev mixer c $major 0 $audio + makedev sequencer c $major 1 $audio + makedev midi00 c $major 2 $audio + makedev dsp c $major 3 $audio + makedev audio c $major 4 $audio + makedev sndstat c $major 6 $audio +# makedev sequencer2 c $major 8 $audio + makedev mixer1 c $major 16 $audio +# makedev patmgr0 c $major 17 $audio + makedev midi01 c $major 18 $audio + makedev dsp1 c $major 19 $audio + makedev audio1 c $major 20 $audio +# makedev patmgr1 c $major 33 $audio + makedev midi02 c $major 34 $audio + makedev midi03 c $major 50 $audio + ;; + pcaudio) + major=`Major pcsp` || continue + makedev pcmixer c $major 0 $audio + makedev pcsp c $major 3 $audio + makedev pcaudio c $major 4 $audio + ;; + sg) + major=`Major sg 21` + for unit in a b c d e f g h + do + minor=`expr abcdefgh : ".*$unit" - 1` + makedev $arg$unit c $major $minor $scsi + done + ;; + fd) + # not really devices, we use the /proc filesystem + symlink fd $procfs/self/fd + symlink stdin fd/0 + symlink stdout fd/1 + symlink stderr fd/2 + ;; + ibcs2) + major=`Major ibcs2` || continue + makedev socksys c $major 0 $ibcs2 + symlink nfsd socksys + makedev spx c $major 1 $ibcs2 + symlink X0R null + ;; + apm) + major=`Major apm_bios` || continue + makedev $arg c $major 0 $system + ;; + dcf) + major=`Major dcf` || continue + makedev $arg c $major 0 $system + ;; + helloworld) + major=`Major hw` || continue + makedev helloworld c $major 0 $public + ;; + update) + if [ ! "$devices" ] + then + echo "$0: don't appear to have any devices" >&2 + continue + fi + if [ "$opt_d" ] + then + echo "$0: can't delete an update" >&2 + continue + fi + create= + delete= + devs="$devices" + if [ -f DEVICES ] + then + exec 3<DEVICES + while read device major <&3 + do + eval now=\$major_$device + if [ "$now" = "" ] + then + delete="$delete `cvt $device`" + continue + elif [ "$now" != $major ] + then + create="$create "`cvt $device` + fi + devs=`expr "$devs" : "\(.*\) $device"``expr "$devs" : ".* $device\(.*\)"` + done + exec 3<&- + fi + create="$create "`cvt $devs` + $0 $opts -d $delete + $0 $opts $create + [ "$opt_n" ] && continue + for device in $devices + do + if [ "`cvt $device`" ] + then + eval echo $device \$major_$device + fi + done > DEVICES + ;; + *) + echo "$0: don't know how to make device \"$arg\"" >&2 + ;; + esac +done + +exit 0 |