# Source function library.
. /etc/rc.d/init.d/functions
-alsactl=/usr/sbin/alsactl
-
-if [ $(kernelverser) = "002006" ]; then
- MODULES_CONF=/etc/modprobe.conf
-elif [ -r /etc/modules.conf ]; then
- MODULES_CONF=/etc/modules.conf
-else
- MODULES_CONF=/etc/conf.modules
-fi
-
driver_start()
{
#
# insert all sound modules
#
- if OLDLOGLEV=$(awk '{print $1}' < /proc/sys/kernel/printk 2> /dev/null); then
- /sbin/loglevel 1
- fi
- awk '$1 == "alias" && $3 != "off" && ($2 ~ /^snd-card-[0-9]$/) {print $2}' < $MODULES_CONF | \
+ modprobe -c | awk '$1 == "alias" && $3 != "off" && ($2 ~ /^snd-card-[0-9]$/) {print $3}' | \
while read line; do \
msg_starting "sound driver: $line"
busy
/sbin/modprobe $line
ok
done
- awk '$1 == "alias" && $3 != "off" && ($2 ~ /^sound-service-[0-9]-[0-9]+$/) {print $2}' < $MODULES_CONF | \
+ modprobe -c | awk '$1 == "alias" && $3 != "off" && ($2 ~ /^sound-service-[0-9]-[0-9]+$/) {print $3}' | \
while read line; do \
msg_starting "sound driver: $line"
busy
/sbin/modprobe $line
ok
done
- if [ -n "$OLDLOGLEV" ]; then
- /sbin/loglevel "$OLDLOGLEV"
- fi
- #
+
# restore driver settings
#
- if [ -x $alsactl ]; then
+ if [ -x /usr/sbin/alsactl ]; then
if [ -f /etc/asound.state ]; then
if [ "$(kernelver)" -lt "002006012" ]; then
for i in 1 2 3 4; do
sleep 1
done
fi
- $alsactl restore
+ /usr/sbin/alsactl restore
fi
else
show "ERROR: alsactl not found"; fail
#
# remove all sound modules
#
- /sbin/lsmod | awk '/^snd/ { print $0 }' | while read line; do \
- /sbin/rmmod `echo $line | cut -d ' ' -f 1`; \
+ /sbin/lsmod | awk '/^(snd|ac97_bus)/ { print $1 }' | while read module; do \
+ /sbin/rmmod $module
done
}
#
# store driver settings
#
- if [ -x $alsactl ]; then
- $alsactl store
+ if [ -x /usr/sbin/alsactl ]; then
+ /usr/sbin/alsactl store
else
show '!!!alsactl not found!!!'; fail
fi
else
msg_not_running "ALSA driver"
fi
-fi
+}
+
+condrestart() {
+ if [ -f /var/lock/subsys/alsasound ]; then
+ stop
+ start
+ else
+ msg_not_running "ALSA driver"
+ RETVAL=$1
+ fi
+}
+
# See how we were called.
case "$1" in
stop)
stop
;;
- restart|force-reload)
+ restart)
stop
start
;;
+ try-restart)
+ condrestart 0
+ ;;
+ force-reload)
+ condrestart 7
+ ;;
status)
# TODO
;;
*)
- msg_usage "$0 {start|stop|restart|force-reload|status}"
+ msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
exit 3
esac