#!/bin/sh

MAJOR=14
MAX_CARDS=4
PERM=666
DSP_MINOR=5

function create_device () {
  rm -f $1
  mknod -m $PERM $1 c $MAJOR $2
}

function create_device1 () {
  rm -f $1
  minor=$[ $2 + 128 ]
  mknod -m $PERM $1 c $MAJOR $minor
}

function create_devices () {
  tmp=0
  rm -f $1 $1?
  while [ $tmp -lt $MAX_CARDS ]; do
    minor=$[ $tmp * 16 ]
    minor=$[ $2 + 128 + $minor ]
    mknod -m $PERM $1$tmp c $MAJOR $minor
    tmp=$[ $tmp + 1 ]
  done
}

function create_devices2 () {
  tmp=0
  rm -f $1 $1?
  while [ $tmp -lt $MAX_CARDS ]; do
    tmp1=0
    while [ $tmp1 -lt $3 ]; do
      minor=$[ $tmp * 16 ]
      minor=$[ $2 + 128 + $minor + $tmp1 ]
      mknod -m $PERM $1$tmp$tmp1 c $MAJOR $minor
      tmp1=$[ $tmp1 + 1 ]
    done
    tmp=$[ $tmp + 1 ]
  done
}

if [ "$1" = "-?" ] || [ "$1" = "-h" ]; then
  echo "Usage: gusdevs [max]"
  echo
  echo "Note: Argument 'max' specifies that you want use VoxWare driver"
  echo "      with GUS card. This change minor for /dev/dsp device"
  echo "      to correct number. For the GUS driver doesn't use this"
  echo "      argument."
  exit
fi

if [ "$1" = "max" ]; then
  DSP_MINOR=19
fi

# VoxWare compatible devices...

create_device /dev/mixer	0
create_device /dev/sequencer	1
create_device /dev/midi		2
create_device /dev/dsp		$DSP_MINOR
create_device /dev/audio	4
create_device /dev/dsp1		3
create_device /dev/dsp16	5
create_device /dev/sndstat	6
create_device /dev/sequencer2	8
create_device /dev/music	8
create_device /dev/dmmidi0	9
create_device /dev/dmfm0	10
create_device /dev/dsp_gf1	12
create_device /dev/midi1	13
create_device /dev/dmmidi1	14

# New devices...

rm -f /dev/gusd*
rm -f /dev/gusmixer*
rm -f /dev/guspcm*
rm -f /dev/gusmidi*
create_devices /dev/gus 	0
create_devices /dev/gusctl	1
create_devices /dev/insman	2
create_devices2 /dev/gusmixer	6 2
create_devices2 /dev/guspcm	8 2
create_devices2 /dev/gusmidi	10 2
create_device1 /dev/gusmidi	14
create_device1 /dev/gusinfo	15
