#!/bin/sh

if test -f /usr/local/etc/oss.conf
then
  . /usr/local/etc/oss.conf
else
  OSSLIBDIR=/usr/local/lib/oss
fi

if ! /sbin/kldstat | grep -q osscore.ko
then
  echo OSS not loaded.
  exit 0
fi

if ! test -f $OSSLIBDIR/etc/installed_drivers
then
	echo $OSSLIBDIR/etc/installed_drivers is missing.
	exit 1
fi

# Save mixer settings automatically if requested
if test -f $OSSLIBDIR/etc/userdefs && grep -q "autosave_mixer yes" $OSSLIBDIR/etc/userdefs
then
	/usr/local/sbin/savemixer 
fi

# Save legacy devices
/usr/local/sbin/ossdevlinks -N

PROGRAMS="`fstat /dev/mixer* /dev/dsp* /dev/midi* /dev/oss/*/* 2>/dev/null | sed '1 D'`"

if test "$PROGRAMS " != " "
then
  echo
  echo Some applications are still using OSS - cannot unload
  echo

  fstat /dev/mixer* /dev/dsp* /dev/midi* /dev/oss/*/* 2>/dev/null

  echo
  echo Please stop these applications and run soundoff again
  exit 2
fi

for n in `cat $OSSLIBDIR/etc/installed_drivers | sed 's/#.*//'`
do
    /sbin/kldunload $n > /dev/null 2>&1
done

/sbin/kldunload osscore

if ! /sbin/kldstat | grep -q osscore.ko # OSS gone?
then
  exit 0
fi

echo Cannot unload the OSS driver modules

exit 0
