#!/sbin/sh mknod() { eval ${INSCMD} -m 666 -chr $3,$4 $1 ; } mk_ctlr() { set +e; N=`expr $1 / 10` ; N=`expr $N \* 8 + $1 % 10` ; \ echo $N ; set -e ; } umask 0; hinv -c tape | grep "on SCSI" | sed "s/://g" | \ while read a b c targ e f g adap i; do prf=rmt/tps${adap}d$targ ctlr=`mk_ctlr $adap` minor=`expr $ctlr \* 512 + $targ \* 32`; set -e; mknod ${prf}nr c ${C_TPS} `expr $minor + 3`; mknod ${prf}stat c ${C_TPS_ST} `expr $minor + 3`; set +e ; stat="`2>&1 mt -t ${prf}nr status`" ; set -e ; case "$stat" { *Drive?type:*9?track*) for dens in 0 8 16 24; do case $dens { 0) kden=6250;; 8) kden=3200;; 16) kden=1600;; 24) kden=800;; }; set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add + $dens` mknod ${prf}$1.$kden c ${C_TPS} $mdev shift done; if mt -t abi/9track.nr exist; then :; else dens=0; add=6; mdev=`expr $minor + $add + $dens` mknod abi/9track c ${C_TPS} $mdev add=7; mdev=`expr $minor + $add + $dens` mknod abi/9track.nr c ${C_TPS} $mdev fi done ;; *Drive?type:*8mm?8500*) set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; shift; done; for dens in 0 8 ; do case $dens { 0) kden=8500;; 8) kden=8200;; }; set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add + $dens` mknod ${prf}$1.$kden c ${C_TPS} $mdev shift done; done; case "$stat" { *Device:*EXB8500C*|*Device:*EXB-8505*) for dens in 16 24 ; do case $dens { 16) kden=8500c;; 24) kden=8200c;; }; set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add + $dens` mknod ${prf}$1.$kden c ${C_TPS} $mdev shift done; done; ;; }; ;; *Drive?type:*DAT*|*Drive?type:*8mm?8200*) set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; case "$stat" { *Device:*Python*01931*|*Device:*Python*28388*|*Device:*Python*02779*|*Device:*Python*28849*|*Device:*SDT-9000*|*Device:*C1537A*|*Device:*C1533A*) # DDS2 drive with compression mdev=`expr $mdev + 8`; mknod ${prf}$1c c ${C_TPS} $mdev; ;; } shift; done ;; *Drive?type:*DLT*) set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; case "$stat" { *Device:*DLT7000*) # DLT7000 supporting 4000/7000 densities for dens in 0 8 16 24 ; do case $dens { 0) kden=7000;; 8) kden=7000c;; 16) kden=4000;; 24) kden=4000c;; }; mdevc=`expr $mdev + $dens`; mknod ${prf}$1.$kden c ${C_TPS} $mdevc; done ;; *) # DLT2000/4000 supports only one density mdev=`expr $mdev + 8`; mknod ${prf}$1c c ${C_TPS} $mdev; } shift; done ;; *Drive?type:*NTP*) set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; mdev=`expr $mdev + 8`; mknod ${prf}$1c c ${C_TPS} $mdev; shift; done ;; *Drive?type:*STK*) set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; mdev=`expr $mdev + 8`; mknod ${prf}$1c c ${C_TPS} $mdev; shift; done ;; *Drive?type:*SONY*) set s nrs ns "" nrns nr sv nrsv nsv v nrnsv nrv ; for add in 0 1 2 2 3 3 4 5 6 6 7 7 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; shift; done ;; *Drive?type:*QIC*) set "" s nr nrs ns nrns ; for add in 0 0 1 1 2 3 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; shift; done ; if mt -t abi/qic.nr exist; then :; else add=2; mdev=`expr $minor + $add`; mknod abi/qic c ${C_TPS} $mdev add=3; mdev=`expr $minor + $add`; mknod abi/qic.nr c ${C_TPS} $mdev fi ;; *Drive*) set "" s nr nrs ns nrns ; for add in 0 0 1 1 2 3 ; do mdev=`expr $minor + $add`; mknod ${prf}$1 c ${C_TPS} $mdev; shift; done ; ;; } ; : ; done