diff options
Diffstat (limited to 'abs/mv-core/oss-sound/rc.oss-linux-free')
-rwxr-xr-x | abs/mv-core/oss-sound/rc.oss-linux-free | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/abs/mv-core/oss-sound/rc.oss-linux-free b/abs/mv-core/oss-sound/rc.oss-linux-free new file mode 100755 index 0000000..48b65e0 --- /dev/null +++ b/abs/mv-core/oss-sound/rc.oss-linux-free @@ -0,0 +1,73 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +terminateapps() { + # Thanks to the Gentoo ebuild/start script for the following + # http://bugs.gentoo.org/show_bug.cgi?id=184123 + # http://bugs.gentoo.org/attachment.cgi?id=153689 + devs=`perl -e '{while (<>) {m/^(\S*)/; print "/dev/$1\n"}}' \ + < /proc/opensound/devfiles` + fuser -k ${devs} >/dev/null 2>/dev/null +} + +case "$1" in + start) + stat_busy "Starting OSS/Open source driver" + # start + /usr/sbin/soundon + if [ $? -gt 0 ]; then + stat_fail + else + grep '^softoss' /proc/modules >/dev/null 2>/dev/null + if [ $? -eq 0 ]; then + stat_busy "Replacing old \"softoss\" module with \"vmix\"" + rmmod softoss + modprobe vmix + sed -i 's/^softoss.*$/vmix/' /usr/lib/oss/etc/installed_drivers + fi + add_daemon oss-linux-free + stat_done + fi + ;; + stop) + stat_busy "Saving OSS mixer" + /usr/sbin/savemixer + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + grep '^"cuckoo"' /proc/modules >/dev/null 2>/dev/null + if [ $? -eq 0 ]; then + stat_busy "Removing \"cuckoo\" module" + rmmod cuckoo + fi + stat_busy "Killing processes using OSS" + terminateapps + stat_done + # It doesn't matter if it didnt kill anything! + stat_busy "Stopping OSS/Open source driver" + /usr/sbin/soundoff + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon oss-linux-free + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + terminateapps) + stat_busy "Killing processes using OSS" + terminateapps + stat_done + # It doesn't matter if it didnt kill anything! + ;; + *) + echo "usage: $0 {start|stop|restart|terminateapps}" +esac |