#!/bin/bash . /etc/rc.conf . /etc/conf.d/alsa . /etc/rc.d/functions case "$1" in start) stat_busy "Restoring ALSA Levels" if /usr/sbin/alsactl $ALSA_ARGS restore; then # removed useless "if [ $? -gt 0 ]; then" stat_done add_daemon alsa else stat_fail fi POWERSAVE="${POWERSAVE:-0}" if [[ -e /sys/module/snd_ac97_codec/parameters/power_save ]] \ && (( $POWERSAVE )); then # rewritten with proper bash syntax echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save [[ -c /dev/dsp ]] && echo 1 > /dev/dsp fi if [[ -e /sys/module/snd_hda_intel/parameters/power_save ]] \ && (( $POWERSAVE )); then # same here echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save [[ -c /dev/dsp ]] && echo 1 > /dev/dsp fi ;; stop) # this is the section that really confused me, the error checking on it was done very strangely. # i believe this to be a much better way of doing it. SAVE_VOLUME="${SAVE_VOLUME:-yes}" if [[ "$SAVE_VOLUME" = "yes" ]]; then stat_busy "Saving ALSA Levels" /usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; } else stat_busy "Stopping ALSA" fi if [[ "$MUTE_VOLUME" = "yes" ]]; then /usr/bin/amixer -q set Master 0 mute || { stat_fail; exit 1; } fi stat_done rm_daemon alsa ;; restart) $0 stop sleep 1 $0 start ;; *) echo "usage: $0 {start|stop|restart}" esac