Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > 8e38b26cf6e7d6030552b6306b9dae18 > files > 5

sound-scripts-0.60-5.mga1.noarch.rpm

#!/bin/sh
# (c) MandrakeSoft, Chmouel Boudjnah <chmouel@mandrakesoft.com>
# 	$Id: sound.init 263692 2009-11-25 14:36:09Z tv $
#
# sound:   This shell script launch the sound on your system.
#
# chkconfig: 2345 18 69
# description: This shell script launch the sound on your system.
#
### BEGIN INIT INFO
# Provides: sound
# Should-Start: harddrake alsa
# Default-Start: 2 3 4 5
# Short-Description: Launch sound
# Description: Launch sound
### END INIT INFO

. /etc/rc.d/init.d/functions

PKLVL=$(cut -f1 /proc/sys/kernel/printk)
sysctl -n -w kernel.printk=0

function start_mixer () {
    # udev is slow:

    # ALSA
    if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ]; then
        # is ALSA already configured ?
	if [[ ! -r /var/lib/alsa/asound.state ]]; then
	    # provide decent default sound level for alsa drivers
	    if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then
             MIXER_SETTINGS=$(mktemp /tmp/asound.state_tmpXXXXXX)
             alsactl -f $MIXER_SETTINGS store
             # set some sane default volume and unmute needed channels:
             /etc/rc.d/rc.alsa_default $MIXER_SETTINGS
             action "Setting mixer settings" alsactl -f $MIXER_SETTINGS restore
             rm -f $MIXER_SETTINGS
		return 0
	    fi
	    # if we've not alsa-utils, we'll fallback on OSS initialization below
	elif [ ! -d /dev/.udevdb -a ! -d /dev/.udev ]; then
	    # Not first boot:
	    # Done by alsa service but only if sound service is not
	    # enabled (hance this code path).
	    # We'll merge in back alsa service once mdk9.2 is released.
	    # [but we'll still handle both aumix & alsactl in order
	    #  to manage packages removing / driver switch]
	    FORCE=1 action "Loading mixer settings" /usr/sbin/alsa.agent
	    return 0
	fi
    elif egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && \
     # OSS
	[ "$retval" -eq 0 ] && [ -x /usr/bin/aumix-text ];then
	if [ ! -r /etc/.aumixrc ];then
	    action "Setting mixer settings" /usr/bin/aumix-text -v80 -w80 -c80
	else
	    action "Loading mixer settings" /usr/bin/aumix-text -f /etc/.aumixrc -L
	fi
    fi
}

function stop_mixer () {
    if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then
	# done by alsa service (to merge back after mdk9.2 release)
	#action "Saving mixer settings" /usr/sbin/alsactl store
	return 0;
    fi
   if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && [ -x /usr/bin/aumix-text ];then
	action "Saving mixer settings" /usr/bin/aumix-text -f /etc/.aumixrc -S
    fi    
}

function module () {
    opt=""
    phrase=$1
    alias=$2
    [ -n "$3" ] && opt="-r"
    module=`/sbin/modprobe -c | egrep -s "^alias( |\t)+"$alias"( |\t)+" | awk '{ print $3 }'`
    if [ -n "$module" ] && [ "$module" != "off" ];then
	action "$phrase ($module)" modprobe "$opt" $module
	return $?
    fi
}

case $1 in
    start)
    retval=0
    if [ ! -d /proc/asound ] || grep -q "no soundcards" /proc/asound/cards;then
	module "Loading sound module" sound || retval=1
	/sbin/modprobe -c | awk '/^((alias)|(probe)) +sound-slot-[0-9]/ {print $2}' | ( \
	    while read line; do
		[[ $line = snd-card-* ]] && continue #we do it via alsa script
		module "Loading sound module" $line || retval=1
	    done
	)
	module "Loading midi module" midi
    fi
    start_mixer;
    touch /var/lock/subsys/sound
    ;;
    stop)
    # i should have the same semantic of alsa script than oss script,
    # but i do not :-(, patches welcome.
    stop_mixer;
    rm -f /var/lock/subsys/sound
    ;;
    status)
    if egrep -q '(sparcaudio|sound)' /proc/devices;then
	gprintf "Sound loaded"
	echo
    fi
    ;;
    reload)
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    *)
    gprintf "Usage: %s\n" "$(basename $0) {start|stop|restart|status}"
    exit 0
esac

sysctl -n -w kernel.printk=$PKLVL
exit 0