#!/bin/sh

# drive types:
# H = HD 3'1/2
# h = HD 5'1/4
# D = DD 3'1/2
# d = DD 5'1/4

canonize()
{
	case $1 in
1.44M|1440k)
	cap=1440
	typ=H
	;;
"360k PC"|360k)
	cap=360
	typ=d
	;;
1.2M|1200k)
	cap=1200
	typ=h
	;;
720k)
	cap=720
	typ=D
	;;
*)
	typ=`echo $name | cut -c1`
	cap=`echo $name | cut -c2-16`
	;;
esac
}

getdrvtyp()
{
	name=`floppycontrol -T -d $1 2>/dev/null`
	if [ $? != 0 ] ; then
		typ=0
		cap=0
		return
	fi
	canonize "$name"
}


mkdriv()
{
	rm -f tmp_floppy
	mknod tmp_floppy b 2 $1

	name=`printenv FD$1`
	if [ $? != 0 ] ; then
		getdrvtyp tmp_floppy
		if [ $typ = 0 ] ; then
			rm -f tmp_floppy
			return
		fi
	else
		canonize $name
	fi

	mv tmp_floppy fd$1

	let i=$1+4
	typ0=$typ

	while : ; do
		rm -f tmp_floppy
		mknod tmp_floppy b 2 $i
		getdrvtyp tmp_floppy
		if [ $typ = 0 ] ; then
			rm -f tmp_floppy
			return
		fi
		if [ $typ = $typ0 ] ; then
			mv -i tmp_floppy fd$1$typ$cap
		elif  [ $typ = "D" -a $typ0 = "H" ] ; then
			mv -i tmp_floppy fd$1H$cap
		else
			rm -f tmp_floppy
		fi
		let i=$i+4
	done
}

cd /dev

type floppycontrol >/dev/null
if [ $? != 0 ] ; then
	echo First compile the floppycontrol program and put it into your PATH
	exit 1
fi

if [ $# -ge 1 ] ; then
	for drive in $* ; do
		mkdriv $drive
	done
else
	for drive in 0 1 2 3 ; do
		mkdriv $drive
	done
fi
